summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers')
-rw-r--r--src/mame/drivers/1942.c2
-rw-r--r--src/mame/drivers/1943.c2
-rw-r--r--src/mame/drivers/1945kiii.c8
-rw-r--r--src/mame/drivers/2mindril.c5
-rw-r--r--src/mame/drivers/39in1.c12
-rw-r--r--src/mame/drivers/3do.c4
-rw-r--r--src/mame/drivers/40love.c4
-rw-r--r--src/mame/drivers/4enraya.c2
-rw-r--r--src/mame/drivers/4roses.c2
-rw-r--r--src/mame/drivers/5clown.c8
-rw-r--r--src/mame/drivers/8080bw.c30
-rw-r--r--src/mame/drivers/88games.c2
-rw-r--r--src/mame/drivers/ace.c12
-rw-r--r--src/mame/drivers/acefruit.c12
-rw-r--r--src/mame/drivers/acommand.c22
-rw-r--r--src/mame/drivers/actfancr.c4
-rw-r--r--src/mame/drivers/adp.c31
-rw-r--r--src/mame/drivers/aeroboto.c2
-rw-r--r--src/mame/drivers/aerofgt.c24
-rw-r--r--src/mame/drivers/airbustr.c4
-rw-r--r--src/mame/drivers/ajax.c2
-rw-r--r--src/mame/drivers/albazc.c5
-rw-r--r--src/mame/drivers/albazg.c8
-rw-r--r--src/mame/drivers/aleck64.c2
-rw-r--r--src/mame/drivers/alg.c2
-rw-r--r--src/mame/drivers/aliens.c2
-rw-r--r--src/mame/drivers/alpha68k.c18
-rw-r--r--src/mame/drivers/amaticmg.c22
-rw-r--r--src/mame/drivers/ambush.c2
-rw-r--r--src/mame/drivers/ampoker2.c2
-rw-r--r--src/mame/drivers/amspdwy.c2
-rw-r--r--src/mame/drivers/angelkds.c2
-rw-r--r--src/mame/drivers/appoooh.c4
-rw-r--r--src/mame/drivers/aquarium.c2
-rw-r--r--src/mame/drivers/arabian.c2
-rw-r--r--src/mame/drivers/arcadecl.c2
-rw-r--r--src/mame/drivers/arcadia.c2
-rw-r--r--src/mame/drivers/argus.c6
-rw-r--r--src/mame/drivers/aristmk4.c16
-rw-r--r--src/mame/drivers/aristmk6.c36
-rw-r--r--src/mame/drivers/arkanoid.c4
-rw-r--r--src/mame/drivers/armedf.c16
-rw-r--r--src/mame/drivers/ashnojoe.c2
-rw-r--r--src/mame/drivers/asterix.c2
-rw-r--r--src/mame/drivers/astinvad.c30
-rw-r--r--src/mame/drivers/astrocde.c4
-rw-r--r--src/mame/drivers/astrocorp.c12
-rw-r--r--src/mame/drivers/astrof.c10
-rw-r--r--src/mame/drivers/asuka.c31
-rw-r--r--src/mame/drivers/atarifb.c6
-rw-r--r--src/mame/drivers/atarig1.c4
-rw-r--r--src/mame/drivers/atarig42.c4
-rw-r--r--src/mame/drivers/atarigt.c4
-rw-r--r--src/mame/drivers/atarigx2.c4
-rw-r--r--src/mame/drivers/atarisy1.c2
-rw-r--r--src/mame/drivers/atarisy2.c2
-rw-r--r--src/mame/drivers/atarisy4.c8
-rw-r--r--src/mame/drivers/atetris.c4
-rw-r--r--src/mame/drivers/atlantis.c5
-rw-r--r--src/mame/drivers/atvtrack.c5
-rw-r--r--src/mame/drivers/avalnche.c11
-rw-r--r--src/mame/drivers/avt.c16
-rw-r--r--src/mame/drivers/backfire.c60
-rw-r--r--src/mame/drivers/badlands.c4
-rw-r--r--src/mame/drivers/bagman.c6
-rw-r--r--src/mame/drivers/balsente.c2
-rw-r--r--src/mame/drivers/bankp.c2
-rw-r--r--src/mame/drivers/baraduke.c4
-rw-r--r--src/mame/drivers/batman.c2
-rw-r--r--src/mame/drivers/battlane.c2
-rw-r--r--src/mame/drivers/battlera.c2
-rw-r--r--src/mame/drivers/battlex.c2
-rw-r--r--src/mame/drivers/battlnts.c2
-rw-r--r--src/mame/drivers/bbusters.c13
-rw-r--r--src/mame/drivers/beaminv.c10
-rw-r--r--src/mame/drivers/beezer.c2
-rw-r--r--src/mame/drivers/berzerk.c12
-rw-r--r--src/mame/drivers/bestleag.c52
-rw-r--r--src/mame/drivers/bfcobra.c32
-rw-r--r--src/mame/drivers/bigevglf.c2
-rw-r--r--src/mame/drivers/bigstrkb.c2
-rw-r--r--src/mame/drivers/bingoc.c5
-rw-r--r--src/mame/drivers/bingor.c14
-rw-r--r--src/mame/drivers/bionicc.c2
-rw-r--r--src/mame/drivers/bishi.c2
-rw-r--r--src/mame/drivers/bking.c4
-rw-r--r--src/mame/drivers/blackt96.c8
-rw-r--r--src/mame/drivers/bladestl.c2
-rw-r--r--src/mame/drivers/blitz.c8
-rw-r--r--src/mame/drivers/blitz68k.c28
-rw-r--r--src/mame/drivers/blktiger.c2
-rw-r--r--src/mame/drivers/blmbycar.c4
-rw-r--r--src/mame/drivers/blockade.c2
-rw-r--r--src/mame/drivers/blockhl.c2
-rw-r--r--src/mame/drivers/blockout.c2
-rw-r--r--src/mame/drivers/bloodbro.c6
-rw-r--r--src/mame/drivers/blstroid.c2
-rw-r--r--src/mame/drivers/blueprnt.c2
-rw-r--r--src/mame/drivers/bmcbowl.c14
-rw-r--r--src/mame/drivers/bmcpokr.c8
-rw-r--r--src/mame/drivers/bnstars.c40
-rw-r--r--src/mame/drivers/bogeyman.c2
-rw-r--r--src/mame/drivers/bombjack.c2
-rw-r--r--src/mame/drivers/boogwing.c2
-rw-r--r--src/mame/drivers/bottom9.c2
-rw-r--r--src/mame/drivers/boxer.c8
-rw-r--r--src/mame/drivers/brkthru.c4
-rw-r--r--src/mame/drivers/bsktball.c2
-rw-r--r--src/mame/drivers/btime.c14
-rw-r--r--src/mame/drivers/bublbobl.c4
-rw-r--r--src/mame/drivers/buggychl.c2
-rw-r--r--src/mame/drivers/buster.c8
-rw-r--r--src/mame/drivers/bwing.c2
-rw-r--r--src/mame/drivers/cabal.c4
-rw-r--r--src/mame/drivers/cabaret.c10
-rw-r--r--src/mame/drivers/calomega.c2
-rw-r--r--src/mame/drivers/calorie.c30
-rw-r--r--src/mame/drivers/canyon.c2
-rw-r--r--src/mame/drivers/capbowl.c2
-rw-r--r--src/mame/drivers/cardline.c14
-rw-r--r--src/mame/drivers/carjmbre.c2
-rw-r--r--src/mame/drivers/carpolo.c4
-rw-r--r--src/mame/drivers/carrera.c8
-rw-r--r--src/mame/drivers/caswin.c8
-rw-r--r--src/mame/drivers/cave.c30
-rw-r--r--src/mame/drivers/cb2001.c44
-rw-r--r--src/mame/drivers/cball.c14
-rw-r--r--src/mame/drivers/cbasebal.c2
-rw-r--r--src/mame/drivers/cbuster.c2
-rw-r--r--src/mame/drivers/ccastles.c2
-rw-r--r--src/mame/drivers/cchance.c4
-rw-r--r--src/mame/drivers/cclimber.c8
-rw-r--r--src/mame/drivers/cd32.c2
-rw-r--r--src/mame/drivers/cdi.c4
-rw-r--r--src/mame/drivers/centiped.c10
-rw-r--r--src/mame/drivers/chaknpop.c2
-rw-r--r--src/mame/drivers/cham24.c5
-rw-r--r--src/mame/drivers/champbas.c25
-rw-r--r--src/mame/drivers/champbwl.c24
-rw-r--r--src/mame/drivers/chanbara.c12
-rw-r--r--src/mame/drivers/chance32.c18
-rw-r--r--src/mame/drivers/changela.c2
-rw-r--r--src/mame/drivers/cheekyms.c2
-rw-r--r--src/mame/drivers/chinagat.c6
-rw-r--r--src/mame/drivers/chinsan.c10
-rw-r--r--src/mame/drivers/chqflag.c2
-rw-r--r--src/mame/drivers/cinemat.c4
-rw-r--r--src/mame/drivers/circus.c8
-rw-r--r--src/mame/drivers/circusc.c2
-rw-r--r--src/mame/drivers/cischeat.c8
-rw-r--r--src/mame/drivers/citycon.c2
-rw-r--r--src/mame/drivers/clayshoo.c10
-rw-r--r--src/mame/drivers/cloak.c2
-rw-r--r--src/mame/drivers/cloud9.c2
-rw-r--r--src/mame/drivers/clshroad.c4
-rw-r--r--src/mame/drivers/cmmb.c8
-rw-r--r--src/mame/drivers/cninja.c12
-rw-r--r--src/mame/drivers/cntsteer.c46
-rw-r--r--src/mame/drivers/cobra.c10
-rw-r--r--src/mame/drivers/coinmstr.c8
-rw-r--r--src/mame/drivers/coinmvga.c8
-rw-r--r--src/mame/drivers/combatsc.c4
-rw-r--r--src/mame/drivers/commando.c2
-rw-r--r--src/mame/drivers/compgolf.c2
-rw-r--r--src/mame/drivers/contra.c2
-rw-r--r--src/mame/drivers/coolridr.c42
-rw-r--r--src/mame/drivers/cop01.c4
-rw-r--r--src/mame/drivers/copsnrob.c2
-rw-r--r--src/mame/drivers/corona.c22
-rw-r--r--src/mame/drivers/cosmic.c12
-rw-r--r--src/mame/drivers/cps1.c16
-rw-r--r--src/mame/drivers/cps2.c4
-rw-r--r--src/mame/drivers/cps3.c97
-rw-r--r--src/mame/drivers/crbaloon.c2
-rw-r--r--src/mame/drivers/crimfght.c2
-rw-r--r--src/mame/drivers/crospang.c2
-rw-r--r--src/mame/drivers/crshrace.c4
-rw-r--r--src/mame/drivers/crystal.c30
-rw-r--r--src/mame/drivers/cshooter.c18
-rw-r--r--src/mame/drivers/cubeqst.c16
-rw-r--r--src/mame/drivers/cultures.c36
-rw-r--r--src/mame/drivers/cvs.c2
-rw-r--r--src/mame/drivers/cyberbal.c6
-rw-r--r--src/mame/drivers/cybertnk.c10
-rw-r--r--src/mame/drivers/cyclemb.c10
-rw-r--r--src/mame/drivers/d9final.c8
-rw-r--r--src/mame/drivers/dacholer.c20
-rw-r--r--src/mame/drivers/dai3wksi.c18
-rw-r--r--src/mame/drivers/dambustr.c2
-rw-r--r--src/mame/drivers/darius.c6
-rw-r--r--src/mame/drivers/darkmist.c2
-rw-r--r--src/mame/drivers/darkseal.c2
-rw-r--r--src/mame/drivers/dassault.c2
-rw-r--r--src/mame/drivers/dblewing.c20
-rw-r--r--src/mame/drivers/dbz.c2
-rw-r--r--src/mame/drivers/dcheese.c2
-rw-r--r--src/mame/drivers/dcon.c4
-rw-r--r--src/mame/drivers/dday.c2
-rw-r--r--src/mame/drivers/ddayjlc.c22
-rw-r--r--src/mame/drivers/ddealer.c30
-rw-r--r--src/mame/drivers/ddenlovr.c61
-rw-r--r--src/mame/drivers/ddragon.c6
-rw-r--r--src/mame/drivers/ddragon3.c4
-rw-r--r--src/mame/drivers/ddribble.c2
-rw-r--r--src/mame/drivers/ddz.c10
-rw-r--r--src/mame/drivers/deadang.c2
-rw-r--r--src/mame/drivers/dec0.c20
-rw-r--r--src/mame/drivers/dec8.c31
-rw-r--r--src/mame/drivers/deco156.c18
-rw-r--r--src/mame/drivers/deco32.c20
-rw-r--r--src/mame/drivers/deco_ld.c18
-rw-r--r--src/mame/drivers/deco_mlc.c8
-rw-r--r--src/mame/drivers/decocass.c2
-rw-r--r--src/mame/drivers/deniam.c4
-rw-r--r--src/mame/drivers/deshoros.c9
-rw-r--r--src/mame/drivers/destroyr.c22
-rw-r--r--src/mame/drivers/dgpix.c8
-rw-r--r--src/mame/drivers/dietgo.c2
-rw-r--r--src/mame/drivers/discoboy.c16
-rw-r--r--src/mame/drivers/diverboy.c5
-rw-r--r--src/mame/drivers/djboy.c4
-rw-r--r--src/mame/drivers/djmain.c2
-rw-r--r--src/mame/drivers/dkong.c8
-rw-r--r--src/mame/drivers/dlair.c8
-rw-r--r--src/mame/drivers/dmndrby.c44
-rw-r--r--src/mame/drivers/docastle.c2
-rw-r--r--src/mame/drivers/dogfgt.c2
-rw-r--r--src/mame/drivers/dominob.c14
-rw-r--r--src/mame/drivers/dooyong.c18
-rw-r--r--src/mame/drivers/dorachan.c14
-rw-r--r--src/mame/drivers/dotrikun.c12
-rw-r--r--src/mame/drivers/dragrace.c2
-rw-r--r--src/mame/drivers/dreamwld.c52
-rw-r--r--src/mame/drivers/drgnmst.c2
-rw-r--r--src/mame/drivers/dribling.c2
-rw-r--r--src/mame/drivers/drmicro.c2
-rw-r--r--src/mame/drivers/drtomy.c10
-rw-r--r--src/mame/drivers/drw80pkr.c8
-rw-r--r--src/mame/drivers/dunhuang.c18
-rw-r--r--src/mame/drivers/dwarfd.c5
-rw-r--r--src/mame/drivers/dynadice.c10
-rw-r--r--src/mame/drivers/dynax.c20
-rw-r--r--src/mame/drivers/dynduke.c2
-rw-r--r--src/mame/drivers/egghunt.c8
-rw-r--r--src/mame/drivers/embargo.c10
-rw-r--r--src/mame/drivers/enigma2.c32
-rw-r--r--src/mame/drivers/eolith.c2
-rw-r--r--src/mame/drivers/eolith16.c10
-rw-r--r--src/mame/drivers/epos.c4
-rw-r--r--src/mame/drivers/eprom.c6
-rw-r--r--src/mame/drivers/equites.c4
-rw-r--r--src/mame/drivers/esd16.c2
-rw-r--r--src/mame/drivers/esh.c16
-rw-r--r--src/mame/drivers/espial.c2
-rw-r--r--src/mame/drivers/esripsys.c2
-rw-r--r--src/mame/drivers/ettrivia.c10
-rw-r--r--src/mame/drivers/exedexes.c2
-rw-r--r--src/mame/drivers/exerion.c2
-rw-r--r--src/mame/drivers/exidy.c2
-rw-r--r--src/mame/drivers/expro02.c16
-rw-r--r--src/mame/drivers/exprraid.c2
-rw-r--r--src/mame/drivers/exzisus.c2
-rw-r--r--src/mame/drivers/f-32.c10
-rw-r--r--src/mame/drivers/f1gp.c6
-rw-r--r--src/mame/drivers/famibox.c5
-rw-r--r--src/mame/drivers/fantland.c8
-rw-r--r--src/mame/drivers/fastfred.c4
-rw-r--r--src/mame/drivers/fastlane.c2
-rw-r--r--src/mame/drivers/fcombat.c2
-rw-r--r--src/mame/drivers/fcrash.c86
-rw-r--r--src/mame/drivers/feversoc.c8
-rw-r--r--src/mame/drivers/fgoal.c2
-rw-r--r--src/mame/drivers/finalizr.c2
-rw-r--r--src/mame/drivers/firebeat.c12
-rw-r--r--src/mame/drivers/firefox.c10
-rw-r--r--src/mame/drivers/firetrap.c4
-rw-r--r--src/mame/drivers/firetrk.c6
-rw-r--r--src/mame/drivers/fitfight.c4
-rw-r--r--src/mame/drivers/flipjack.c18
-rw-r--r--src/mame/drivers/flkatck.c2
-rw-r--r--src/mame/drivers/flower.c2
-rw-r--r--src/mame/drivers/flstory.c8
-rw-r--r--src/mame/drivers/flyball.c20
-rw-r--r--src/mame/drivers/foodf.c2
-rw-r--r--src/mame/drivers/fortecar.c12
-rw-r--r--src/mame/drivers/freekick.c6
-rw-r--r--src/mame/drivers/fromanc2.c12
-rw-r--r--src/mame/drivers/fromance.c6
-rw-r--r--src/mame/drivers/funkball.c3
-rw-r--r--src/mame/drivers/funkybee.c2
-rw-r--r--src/mame/drivers/funkyjet.c2
-rw-r--r--src/mame/drivers/funworld.c2
-rw-r--r--src/mame/drivers/funybubl.c2
-rw-r--r--src/mame/drivers/fuukifg2.c2
-rw-r--r--src/mame/drivers/fuukifg3.c4
-rw-r--r--src/mame/drivers/gaelco.c8
-rw-r--r--src/mame/drivers/gaelco2.c16
-rw-r--r--src/mame/drivers/gaelco3d.c2
-rw-r--r--src/mame/drivers/gaiden.c8
-rw-r--r--src/mame/drivers/gal3.c18
-rw-r--r--src/mame/drivers/galaga.c12
-rw-r--r--src/mame/drivers/galastrm.c2
-rw-r--r--src/mame/drivers/galaxi.c16
-rw-r--r--src/mame/drivers/galaxia.c4
-rw-r--r--src/mame/drivers/galaxian.c2
-rw-r--r--src/mame/drivers/galaxold.c10
-rw-r--r--src/mame/drivers/galgame.c10
-rw-r--r--src/mame/drivers/galivan.c4
-rw-r--r--src/mame/drivers/galpani2.c2
-rw-r--r--src/mame/drivers/galpani3.c52
-rw-r--r--src/mame/drivers/galpanic.c18
-rw-r--r--src/mame/drivers/galspnbl.c2
-rw-r--r--src/mame/drivers/gamecstl.c8
-rw-r--r--src/mame/drivers/gaplus.c4
-rw-r--r--src/mame/drivers/gatron.c2
-rw-r--r--src/mame/drivers/gauntlet.c2
-rw-r--r--src/mame/drivers/gberet.c4
-rw-r--r--src/mame/drivers/gbusters.c2
-rw-r--r--src/mame/drivers/gcpinbal.c2
-rw-r--r--src/mame/drivers/gijoe.c2
-rw-r--r--src/mame/drivers/ginganin.c2
-rw-r--r--src/mame/drivers/gladiatr.c4
-rw-r--r--src/mame/drivers/glass.c2
-rw-r--r--src/mame/drivers/gng.c2
-rw-r--r--src/mame/drivers/go2000.c26
-rw-r--r--src/mame/drivers/goal92.c4
-rw-r--r--src/mame/drivers/goindol.c2
-rw-r--r--src/mame/drivers/goldngam.c8
-rw-r--r--src/mame/drivers/goldnpkr.c8
-rw-r--r--src/mame/drivers/goldstar.c44
-rw-r--r--src/mame/drivers/gomoku.c2
-rw-r--r--src/mame/drivers/good.c10
-rw-r--r--src/mame/drivers/gotcha.c2
-rw-r--r--src/mame/drivers/gottlieb.c6
-rw-r--r--src/mame/drivers/gotya.c2
-rw-r--r--src/mame/drivers/gpworld.c5
-rw-r--r--src/mame/drivers/gradius3.c2
-rw-r--r--src/mame/drivers/grchamp.c2
-rw-r--r--src/mame/drivers/gridlee.c2
-rw-r--r--src/mame/drivers/groundfx.c2
-rw-r--r--src/mame/drivers/gstream.c34
-rw-r--r--src/mame/drivers/gstriker.c4
-rw-r--r--src/mame/drivers/gsword.c4
-rw-r--r--src/mame/drivers/guab.c5
-rw-r--r--src/mame/drivers/gumbo.c2
-rw-r--r--src/mame/drivers/gunbustr.c2
-rw-r--r--src/mame/drivers/gundealr.c2
-rw-r--r--src/mame/drivers/gunpey.c8
-rw-r--r--src/mame/drivers/gunsmoke.c2
-rw-r--r--src/mame/drivers/gyruss.c2
-rw-r--r--src/mame/drivers/halleys.c44
-rw-r--r--src/mame/drivers/hanaawas.c2
-rw-r--r--src/mame/drivers/hcastle.c2
-rw-r--r--src/mame/drivers/hexion.c2
-rw-r--r--src/mame/drivers/higemaru.c2
-rw-r--r--src/mame/drivers/highvdeo.c18
-rw-r--r--src/mame/drivers/hikaru.c5
-rw-r--r--src/mame/drivers/himesiki.c2
-rw-r--r--src/mame/drivers/hitme.c16
-rw-r--r--src/mame/drivers/hitpoker.c12
-rw-r--r--src/mame/drivers/hnayayoi.c2
-rw-r--r--src/mame/drivers/hng64.c4
-rw-r--r--src/mame/drivers/holeland.c4
-rw-r--r--src/mame/drivers/homedata.c14
-rw-r--r--src/mame/drivers/homerun.c2
-rw-r--r--src/mame/drivers/hornet.c22
-rw-r--r--src/mame/drivers/hotblock.c12
-rw-r--r--src/mame/drivers/hotstuff.c16
-rw-r--r--src/mame/drivers/hvyunit.c24
-rw-r--r--src/mame/drivers/hyhoo.c2
-rw-r--r--src/mame/drivers/hyperspt.c2
-rw-r--r--src/mame/drivers/hyprduel.c4
-rw-r--r--src/mame/drivers/igs009.c28
-rw-r--r--src/mame/drivers/igs011.c24
-rw-r--r--src/mame/drivers/igs017.c26
-rw-r--r--src/mame/drivers/igs_m027.c10
-rw-r--r--src/mame/drivers/igspoker.c18
-rw-r--r--src/mame/drivers/ikki.c2
-rw-r--r--src/mame/drivers/imolagp.c10
-rw-r--r--src/mame/drivers/intrscti.c10
-rw-r--r--src/mame/drivers/inufuku.c2
-rw-r--r--src/mame/drivers/iqblock.c2
-rw-r--r--src/mame/drivers/irobot.c2
-rw-r--r--src/mame/drivers/ironhors.c4
-rw-r--r--src/mame/drivers/istellar.c10
-rw-r--r--src/mame/drivers/itech32.c2
-rw-r--r--src/mame/drivers/itech8.c24
-rw-r--r--src/mame/drivers/itgambl2.c32
-rw-r--r--src/mame/drivers/itgambl3.c32
-rw-r--r--src/mame/drivers/jack.c6
-rw-r--r--src/mame/drivers/jackal.c2
-rw-r--r--src/mame/drivers/jackie.c22
-rw-r--r--src/mame/drivers/jackpool.c20
-rw-r--r--src/mame/drivers/jailbrek.c2
-rw-r--r--src/mame/drivers/jalmah.c96
-rw-r--r--src/mame/drivers/jangou.c8
-rw-r--r--src/mame/drivers/jantotsu.c12
-rw-r--r--src/mame/drivers/jchan.c22
-rw-r--r--src/mame/drivers/jclub2.c48
-rw-r--r--src/mame/drivers/jokrwild.c8
-rw-r--r--src/mame/drivers/jollyjgr.c38
-rw-r--r--src/mame/drivers/jongkyo.c12
-rw-r--r--src/mame/drivers/jpmsys5.c5
-rw-r--r--src/mame/drivers/jrpacman.c2
-rw-r--r--src/mame/drivers/jubilee.c8
-rw-r--r--src/mame/drivers/junofrst.c2
-rw-r--r--src/mame/drivers/kaneko16.c12
-rw-r--r--src/mame/drivers/kangaroo.c2
-rw-r--r--src/mame/drivers/karnov.c4
-rw-r--r--src/mame/drivers/kchamp.c4
-rw-r--r--src/mame/drivers/kickgoal.c4
-rw-r--r--src/mame/drivers/kingdrby.c22
-rw-r--r--src/mame/drivers/kingobox.c4
-rw-r--r--src/mame/drivers/kinst.c8
-rw-r--r--src/mame/drivers/klax.c2
-rw-r--r--src/mame/drivers/kncljoe.c2
-rw-r--r--src/mame/drivers/koftball.c10
-rw-r--r--src/mame/drivers/koikoi.c8
-rw-r--r--src/mame/drivers/konamigx.c10
-rw-r--r--src/mame/drivers/konamim2.c12
-rw-r--r--src/mame/drivers/kopunch.c2
-rw-r--r--src/mame/drivers/ksayakyu.c2
-rw-r--r--src/mame/drivers/kyugo.c2
-rw-r--r--src/mame/drivers/labyrunr.c2
-rw-r--r--src/mame/drivers/ladybug.c6
-rw-r--r--src/mame/drivers/ladyfrog.c2
-rw-r--r--src/mame/drivers/laserbas.c18
-rw-r--r--src/mame/drivers/laserbat.c23
-rw-r--r--src/mame/drivers/lasso.c8
-rw-r--r--src/mame/drivers/lastduel.c4
-rw-r--r--src/mame/drivers/lastfght.c22
-rw-r--r--src/mame/drivers/lazercmd.c6
-rw-r--r--src/mame/drivers/legionna.c14
-rw-r--r--src/mame/drivers/lemmings.c4
-rw-r--r--src/mame/drivers/lethal.c2
-rw-r--r--src/mame/drivers/lgp.c8
-rw-r--r--src/mame/drivers/liberate.c8
-rw-r--r--src/mame/drivers/limenko.c38
-rw-r--r--src/mame/drivers/littlerb.c10
-rw-r--r--src/mame/drivers/lkage.c4
-rw-r--r--src/mame/drivers/lockon.c4
-rw-r--r--src/mame/drivers/looping.c8
-rw-r--r--src/mame/drivers/lordgun.c4
-rw-r--r--src/mame/drivers/lsasquad.c4
-rw-r--r--src/mame/drivers/ltcasino.c8
-rw-r--r--src/mame/drivers/luckgrln.c42
-rw-r--r--src/mame/drivers/lucky74.c2
-rw-r--r--src/mame/drivers/lvcards.c2
-rw-r--r--src/mame/drivers/lwings.c4
-rw-r--r--src/mame/drivers/m10.c4
-rw-r--r--src/mame/drivers/m107.c2
-rw-r--r--src/mame/drivers/m14.c8
-rw-r--r--src/mame/drivers/m52.c2
-rw-r--r--src/mame/drivers/m57.c2
-rw-r--r--src/mame/drivers/m58.c2
-rw-r--r--src/mame/drivers/m62.c24
-rw-r--r--src/mame/drivers/m63.c14
-rw-r--r--src/mame/drivers/m72.c26
-rw-r--r--src/mame/drivers/m79amb.c8
-rw-r--r--src/mame/drivers/m90.c6
-rw-r--r--src/mame/drivers/m92.c4
-rw-r--r--src/mame/drivers/macrossp.c4
-rw-r--r--src/mame/drivers/macs.c2
-rw-r--r--src/mame/drivers/madmotor.c2
-rw-r--r--src/mame/drivers/magic10.c20
-rw-r--r--src/mame/drivers/magicard.c17
-rw-r--r--src/mame/drivers/magicfly.c8
-rw-r--r--src/mame/drivers/magictg.c9
-rw-r--r--src/mame/drivers/magmax.c2
-rw-r--r--src/mame/drivers/mainevt.c4
-rw-r--r--src/mame/drivers/mainsnk.c2
-rw-r--r--src/mame/drivers/majorpkr.c16
-rw-r--r--src/mame/drivers/malzak.c2
-rw-r--r--src/mame/drivers/mappy.c6
-rw-r--r--src/mame/drivers/marineb.c12
-rw-r--r--src/mame/drivers/marinedt.c98
-rw-r--r--src/mame/drivers/mario.c2
-rw-r--r--src/mame/drivers/markham.c2
-rw-r--r--src/mame/drivers/mastboy.c12
-rw-r--r--src/mame/drivers/matmania.c4
-rw-r--r--src/mame/drivers/maygayv1.c18
-rw-r--r--src/mame/drivers/mayumi.c8
-rw-r--r--src/mame/drivers/mazerbla.c62
-rw-r--r--src/mame/drivers/mcatadv.c4
-rw-r--r--src/mame/drivers/mcr.c2
-rw-r--r--src/mame/drivers/mcr3.c4
-rw-r--r--src/mame/drivers/mcr68.c4
-rw-r--r--src/mame/drivers/meadows.c6
-rw-r--r--src/mame/drivers/mediagx.c8
-rw-r--r--src/mame/drivers/megaplay.c9
-rw-r--r--src/mame/drivers/megasys1.c14
-rw-r--r--src/mame/drivers/megatech.c22
-rw-r--r--src/mame/drivers/megazone.c2
-rw-r--r--src/mame/drivers/meijinsn.c10
-rw-r--r--src/mame/drivers/meritm.c22
-rw-r--r--src/mame/drivers/mermaid.c4
-rw-r--r--src/mame/drivers/metalmx.c7
-rw-r--r--src/mame/drivers/metlclsh.c2
-rw-r--r--src/mame/drivers/metro.c48
-rw-r--r--src/mame/drivers/mexico86.c6
-rw-r--r--src/mame/drivers/meyc8080.c14
-rw-r--r--src/mame/drivers/meyc8088.c29
-rw-r--r--src/mame/drivers/mgolf.c20
-rw-r--r--src/mame/drivers/midas.c14
-rw-r--r--src/mame/drivers/midvunit.c2
-rw-r--r--src/mame/drivers/midzeus.c4
-rw-r--r--src/mame/drivers/mikie.c2
-rw-r--r--src/mame/drivers/mil4000.c14
-rw-r--r--src/mame/drivers/miniboy7.c8
-rw-r--r--src/mame/drivers/minivadr.c10
-rw-r--r--src/mame/drivers/mirage.c18
-rw-r--r--src/mame/drivers/mirax.c5
-rw-r--r--src/mame/drivers/missb2.c34
-rw-r--r--src/mame/drivers/missile.c10
-rw-r--r--src/mame/drivers/mitchell.c10
-rw-r--r--src/mame/drivers/mjkjidai.c2
-rw-r--r--src/mame/drivers/mjsister.c24
-rw-r--r--src/mame/drivers/mlanding.c12
-rw-r--r--src/mame/drivers/model1.c8
-rw-r--r--src/mame/drivers/model2.c8
-rw-r--r--src/mame/drivers/model3.c8
-rw-r--r--src/mame/drivers/mogura.c14
-rw-r--r--src/mame/drivers/mole.c8
-rw-r--r--src/mame/drivers/momoko.c2
-rw-r--r--src/mame/drivers/monzagp.c26
-rw-r--r--src/mame/drivers/moo.c4
-rw-r--r--src/mame/drivers/mosaic.c2
-rw-r--r--src/mame/drivers/mouser.c2
-rw-r--r--src/mame/drivers/mpoker.c10
-rw-r--r--src/mame/drivers/mpu4dealem.c8
-rw-r--r--src/mame/drivers/mpu4plasma.c8
-rw-r--r--src/mame/drivers/mpu4vid.c8
-rw-r--r--src/mame/drivers/mquake.c2
-rw-r--r--src/mame/drivers/mrdo.c2
-rw-r--r--src/mame/drivers/mrflea.c2
-rw-r--r--src/mame/drivers/mrjong.c2
-rw-r--r--src/mame/drivers/ms32.c2
-rw-r--r--src/mame/drivers/msisaac.c2
-rw-r--r--src/mame/drivers/mugsmash.c2
-rw-r--r--src/mame/drivers/multfish.c18
-rw-r--r--src/mame/drivers/multigam.c5
-rw-r--r--src/mame/drivers/munchmo.c2
-rw-r--r--src/mame/drivers/murogem.c10
-rw-r--r--src/mame/drivers/murogmbl.c8
-rw-r--r--src/mame/drivers/mustache.c2
-rw-r--r--src/mame/drivers/mw8080bw.c10
-rw-r--r--src/mame/drivers/mwarr.c42
-rw-r--r--src/mame/drivers/mystwarr.c12
-rw-r--r--src/mame/drivers/n8080.c8
-rw-r--r--src/mame/drivers/namcofl.c2
-rw-r--r--src/mame/drivers/namcona1.c2
-rw-r--r--src/mame/drivers/namconb1.c4
-rw-r--r--src/mame/drivers/namcos1.c4
-rw-r--r--src/mame/drivers/namcos21.c6
-rw-r--r--src/mame/drivers/namcos22.c4
-rw-r--r--src/mame/drivers/namcos23.c12
-rw-r--r--src/mame/drivers/namcos86.c4
-rw-r--r--src/mame/drivers/naomi.c2
-rw-r--r--src/mame/drivers/naughtyb.c4
-rw-r--r--src/mame/drivers/nbmj8688.c8
-rw-r--r--src/mame/drivers/nbmj8891.c2
-rw-r--r--src/mame/drivers/nbmj8900.c2
-rw-r--r--src/mame/drivers/nbmj8991.c4
-rw-r--r--src/mame/drivers/nbmj9195.c4
-rw-r--r--src/mame/drivers/nemesis.c20
-rw-r--r--src/mame/drivers/neogeo.c2
-rw-r--r--src/mame/drivers/neoprint.c10
-rw-r--r--src/mame/drivers/news.c2
-rw-r--r--src/mame/drivers/nexus3d.c5
-rw-r--r--src/mame/drivers/nightgal.c8
-rw-r--r--src/mame/drivers/ninjakd2.c8
-rw-r--r--src/mame/drivers/ninjaw.c12
-rw-r--r--src/mame/drivers/nitedrvr.c2
-rw-r--r--src/mame/drivers/niyanpai.c2
-rw-r--r--src/mame/drivers/nmg5.c46
-rw-r--r--src/mame/drivers/nmk16.c100
-rw-r--r--src/mame/drivers/norautp.c13
-rw-r--r--src/mame/drivers/nova2001.c8
-rw-r--r--src/mame/drivers/nsmpoker.c8
-rw-r--r--src/mame/drivers/nwk-tr.c10
-rw-r--r--src/mame/drivers/nycaptor.c6
-rw-r--r--src/mame/drivers/offtwall.c2
-rw-r--r--src/mame/drivers/ohmygod.c2
-rw-r--r--src/mame/drivers/ojankohs.c8
-rw-r--r--src/mame/drivers/olibochu.c8
-rw-r--r--src/mame/drivers/oneshot.c4
-rw-r--r--src/mame/drivers/onetwo.c8
-rw-r--r--src/mame/drivers/opwolf.c4
-rw-r--r--src/mame/drivers/orbit.c2
-rw-r--r--src/mame/drivers/othldrby.c4
-rw-r--r--src/mame/drivers/othunder.c2
-rw-r--r--src/mame/drivers/overdriv.c2
-rw-r--r--src/mame/drivers/pacland.c2
-rw-r--r--src/mame/drivers/pacman.c4
-rw-r--r--src/mame/drivers/pandoras.c2
-rw-r--r--src/mame/drivers/panicr.c14
-rw-r--r--src/mame/drivers/paradise.c6
-rw-r--r--src/mame/drivers/parodius.c2
-rw-r--r--src/mame/drivers/pasha2.c14
-rw-r--r--src/mame/drivers/pass.c2
-rw-r--r--src/mame/drivers/pastelg.c4
-rw-r--r--src/mame/drivers/pbaction.c2
-rw-r--r--src/mame/drivers/pcktgal.c4
-rw-r--r--src/mame/drivers/pcxt.c10
-rw-r--r--src/mame/drivers/pengo.c2
-rw-r--r--src/mame/drivers/peplus.c8
-rw-r--r--src/mame/drivers/pgm.c4
-rw-r--r--src/mame/drivers/pgm2.c10
-rw-r--r--src/mame/drivers/phoenix.c4
-rw-r--r--src/mame/drivers/photon.c5
-rw-r--r--src/mame/drivers/photon2.c30
-rw-r--r--src/mame/drivers/pingpong.c2
-rw-r--r--src/mame/drivers/pinkiri8.c30
-rw-r--r--src/mame/drivers/pipedrm.c4
-rw-r--r--src/mame/drivers/pipeline.c10
-rw-r--r--src/mame/drivers/pirates.c2
-rw-r--r--src/mame/drivers/pitnrun.c2
-rw-r--r--src/mame/drivers/pkscram.c12
-rw-r--r--src/mame/drivers/pktgaldx.c4
-rw-r--r--src/mame/drivers/playch10.c4
-rw-r--r--src/mame/drivers/playmark.c12
-rw-r--r--src/mame/drivers/plygonet.c2
-rw-r--r--src/mame/drivers/pokechmp.c2
-rw-r--r--src/mame/drivers/poker72.c16
-rw-r--r--src/mame/drivers/polepos.c4
-rw-r--r--src/mame/drivers/policetr.c2
-rw-r--r--src/mame/drivers/polyplay.c2
-rw-r--r--src/mame/drivers/poo.c24
-rw-r--r--src/mame/drivers/poolshrk.c2
-rw-r--r--src/mame/drivers/pooyan.c2
-rw-r--r--src/mame/drivers/popeye.c2
-rw-r--r--src/mame/drivers/popobear.c8
-rw-r--r--src/mame/drivers/popper.c2
-rw-r--r--src/mame/drivers/portrait.c2
-rw-r--r--src/mame/drivers/powerbal.c9
-rw-r--r--src/mame/drivers/powerins.c2
-rw-r--r--src/mame/drivers/ppmast93.c10
-rw-r--r--src/mame/drivers/prehisle.c2
-rw-r--r--src/mame/drivers/progolf.c12
-rw-r--r--src/mame/drivers/psattack.c10
-rw-r--r--src/mame/drivers/psikyo.c16
-rw-r--r--src/mame/drivers/psikyo4.c4
-rw-r--r--src/mame/drivers/psikyosh.c2
-rw-r--r--src/mame/drivers/psychic5.c4
-rw-r--r--src/mame/drivers/pturn.c18
-rw-r--r--src/mame/drivers/punchout.c8
-rw-r--r--src/mame/drivers/pushman.c4
-rw-r--r--src/mame/drivers/pzletime.c28
-rw-r--r--src/mame/drivers/qdrmfgp.c4
-rw-r--r--src/mame/drivers/quakeat.c5
-rw-r--r--src/mame/drivers/quasar.c2
-rw-r--r--src/mame/drivers/quizdna.c2
-rw-r--r--src/mame/drivers/quizo.c8
-rw-r--r--src/mame/drivers/quizpani.c2
-rw-r--r--src/mame/drivers/quizpun2.c10
-rw-r--r--src/mame/drivers/quizshow.c8
-rw-r--r--src/mame/drivers/r2dx_v33.c18
-rw-r--r--src/mame/drivers/rabbit.c36
-rw-r--r--src/mame/drivers/raiden.c2
-rw-r--r--src/mame/drivers/raiden2.c25
-rw-r--r--src/mame/drivers/rainbow.c4
-rw-r--r--src/mame/drivers/rallyx.c10
-rw-r--r--src/mame/drivers/rampart.c2
-rw-r--r--src/mame/drivers/rastan.c2
-rw-r--r--src/mame/drivers/rbmk.c14
-rw-r--r--src/mame/drivers/realbrk.c4
-rw-r--r--src/mame/drivers/redclash.c8
-rw-r--r--src/mame/drivers/relief.c2
-rw-r--r--src/mame/drivers/renegade.c2
-rw-r--r--src/mame/drivers/retofinv.c2
-rw-r--r--src/mame/drivers/rgum.c8
-rw-r--r--src/mame/drivers/rltennis.c2
-rw-r--r--src/mame/drivers/rmhaihai.c8
-rw-r--r--src/mame/drivers/rockrage.c2
-rw-r--r--src/mame/drivers/rocnrope.c2
-rw-r--r--src/mame/drivers/rohga.c8
-rw-r--r--src/mame/drivers/rollerg.c2
-rw-r--r--src/mame/drivers/rollrace.c2
-rw-r--r--src/mame/drivers/rotaryf.c10
-rw-r--r--src/mame/drivers/roul.c8
-rw-r--r--src/mame/drivers/route16.c6
-rw-r--r--src/mame/drivers/royalmah.c10
-rw-r--r--src/mame/drivers/rpunch.c2
-rw-r--r--src/mame/drivers/runaway.c4
-rw-r--r--src/mame/drivers/rungun.c2
-rw-r--r--src/mame/drivers/safarir.c12
-rw-r--r--src/mame/drivers/sandscrp.c20
-rw-r--r--src/mame/drivers/saturn.c8
-rw-r--r--src/mame/drivers/sauro.c4
-rw-r--r--src/mame/drivers/sbasketb.c2
-rw-r--r--src/mame/drivers/sbowling.c10
-rw-r--r--src/mame/drivers/sbrkout.c10
-rw-r--r--src/mame/drivers/sbugger.c2
-rw-r--r--src/mame/drivers/scobra.c4
-rw-r--r--src/mame/drivers/scotrsht.c2
-rw-r--r--src/mame/drivers/scramble.c4
-rw-r--r--src/mame/drivers/scregg.c4
-rw-r--r--src/mame/drivers/sderby.c8
-rw-r--r--src/mame/drivers/seattle.c8
-rw-r--r--src/mame/drivers/segac2.c9
-rw-r--r--src/mame/drivers/segae.c12
-rw-r--r--src/mame/drivers/segag80r.c2
-rw-r--r--src/mame/drivers/segag80v.c2
-rw-r--r--src/mame/drivers/segald.c5
-rw-r--r--src/mame/drivers/segas24.c2
-rw-r--r--src/mame/drivers/segas32.c6
-rw-r--r--src/mame/drivers/seibuspi.c6
-rw-r--r--src/mame/drivers/seicross.c2
-rw-r--r--src/mame/drivers/senjyo.c2
-rw-r--r--src/mame/drivers/seta.c97
-rw-r--r--src/mame/drivers/seta2.c12
-rw-r--r--src/mame/drivers/sf.c2
-rw-r--r--src/mame/drivers/sfbonus.c136
-rw-r--r--src/mame/drivers/shadfrce.c4
-rw-r--r--src/mame/drivers/shangha3.c6
-rw-r--r--src/mame/drivers/shanghai.c9
-rw-r--r--src/mame/drivers/shangkid.c4
-rw-r--r--src/mame/drivers/shaolins.c2
-rw-r--r--src/mame/drivers/shisen.c2
-rw-r--r--src/mame/drivers/shootout.c4
-rw-r--r--src/mame/drivers/shougi.c10
-rw-r--r--src/mame/drivers/shtzone.c5
-rw-r--r--src/mame/drivers/shuuz.c2
-rw-r--r--src/mame/drivers/sidearms.c6
-rw-r--r--src/mame/drivers/sidepckt.c2
-rw-r--r--src/mame/drivers/sigmab52.c5
-rw-r--r--src/mame/drivers/sigmab98.c17
-rw-r--r--src/mame/drivers/silkroad.c2
-rw-r--r--src/mame/drivers/silvmil.c12
-rw-r--r--src/mame/drivers/simpl156.c2
-rw-r--r--src/mame/drivers/simpsons.c2
-rw-r--r--src/mame/drivers/skimaxx.c7
-rw-r--r--src/mame/drivers/skullxbo.c2
-rw-r--r--src/mame/drivers/skyarmy.c12
-rw-r--r--src/mame/drivers/skydiver.c2
-rw-r--r--src/mame/drivers/skyfox.c2
-rw-r--r--src/mame/drivers/skykid.c2
-rw-r--r--src/mame/drivers/skylncr.c22
-rw-r--r--src/mame/drivers/skyraid.c2
-rw-r--r--src/mame/drivers/slapfght.c8
-rw-r--r--src/mame/drivers/slapshot.c8
-rw-r--r--src/mame/drivers/sliver.c10
-rw-r--r--src/mame/drivers/sms.c8
-rw-r--r--src/mame/drivers/snk.c12
-rw-r--r--src/mame/drivers/snk6502.c4
-rw-r--r--src/mame/drivers/snk68.c2
-rw-r--r--src/mame/drivers/snookr10.c2
-rw-r--r--src/mame/drivers/snowbros.c18
-rw-r--r--src/mame/drivers/solomon.c2
-rw-r--r--src/mame/drivers/sonson.c2
-rw-r--r--src/mame/drivers/spacefb.c2
-rw-r--r--src/mame/drivers/spaceg.c10
-rw-r--r--src/mame/drivers/spbactn.c2
-rw-r--r--src/mame/drivers/spcforce.c2
-rw-r--r--src/mame/drivers/spdodgeb.c2
-rw-r--r--src/mame/drivers/speedatk.c2
-rw-r--r--src/mame/drivers/speedbal.c2
-rw-r--r--src/mame/drivers/speedspn.c2
-rw-r--r--src/mame/drivers/speglsht.c16
-rw-r--r--src/mame/drivers/splash.c6
-rw-r--r--src/mame/drivers/spoker.c10
-rw-r--r--src/mame/drivers/spool99.c8
-rw-r--r--src/mame/drivers/sprcros2.c2
-rw-r--r--src/mame/drivers/sprint2.c4
-rw-r--r--src/mame/drivers/sprint4.c4
-rw-r--r--src/mame/drivers/sprint8.c4
-rw-r--r--src/mame/drivers/spy.c2
-rw-r--r--src/mame/drivers/srmp2.c6
-rw-r--r--src/mame/drivers/srmp5.c26
-rw-r--r--src/mame/drivers/srmp6.c14
-rw-r--r--src/mame/drivers/srumbler.c2
-rw-r--r--src/mame/drivers/ssfindo.c18
-rw-r--r--src/mame/drivers/sshangha.c2
-rw-r--r--src/mame/drivers/sshot.c8
-rw-r--r--src/mame/drivers/sslam.c4
-rw-r--r--src/mame/drivers/ssozumo.c2
-rw-r--r--src/mame/drivers/sspeedr.c4
-rw-r--r--src/mame/drivers/ssrj.c4
-rw-r--r--src/mame/drivers/sstrangr.c22
-rw-r--r--src/mame/drivers/ssv.c6
-rw-r--r--src/mame/drivers/st0016.c2
-rw-r--r--src/mame/drivers/stadhero.c2
-rw-r--r--src/mame/drivers/starcrus.c2
-rw-r--r--src/mame/drivers/starfire.c2
-rw-r--r--src/mame/drivers/starshp1.c4
-rw-r--r--src/mame/drivers/statriv2.c8
-rw-r--r--src/mame/drivers/stfight.c2
-rw-r--r--src/mame/drivers/stlforce.c2
-rw-r--r--src/mame/drivers/strnskil.c2
-rw-r--r--src/mame/drivers/sub.c26
-rw-r--r--src/mame/drivers/subs.c4
-rw-r--r--src/mame/drivers/subsino.c64
-rw-r--r--src/mame/drivers/subsino2.c28
-rw-r--r--src/mame/drivers/summit.c8
-rw-r--r--src/mame/drivers/suna16.c8
-rw-r--r--src/mame/drivers/suna8.c10
-rw-r--r--src/mame/drivers/supbtime.c4
-rw-r--r--src/mame/drivers/supdrapo.c10
-rw-r--r--src/mame/drivers/superchs.c2
-rw-r--r--src/mame/drivers/superdq.c8
-rw-r--r--src/mame/drivers/superqix.c8
-rw-r--r--src/mame/drivers/supertnk.c14
-rw-r--r--src/mame/drivers/superwng.c26
-rw-r--r--src/mame/drivers/suprgolf.c14
-rw-r--r--src/mame/drivers/suprloco.c2
-rw-r--r--src/mame/drivers/suprnova.c4
-rw-r--r--src/mame/drivers/suprridr.c2
-rw-r--r--src/mame/drivers/suprslam.c2
-rw-r--r--src/mame/drivers/surpratk.c2
-rw-r--r--src/mame/drivers/system1.c6
-rw-r--r--src/mame/drivers/system16.c14
-rw-r--r--src/mame/drivers/tagteam.c2
-rw-r--r--src/mame/drivers/tail2nos.c2
-rw-r--r--src/mame/drivers/taito_b.c78
-rw-r--r--src/mame/drivers/taito_f2.c84
-rw-r--r--src/mame/drivers/taito_f3.c8
-rw-r--r--src/mame/drivers/taito_h.c6
-rw-r--r--src/mame/drivers/taito_l.c16
-rw-r--r--src/mame/drivers/taito_o.c2
-rw-r--r--src/mame/drivers/taito_x.c8
-rw-r--r--src/mame/drivers/taito_z.c20
-rw-r--r--src/mame/drivers/taitoair.c2
-rw-r--r--src/mame/drivers/taitojc.c4
-rw-r--r--src/mame/drivers/taitopjc.c5
-rw-r--r--src/mame/drivers/taitosj.c4
-rw-r--r--src/mame/drivers/taitotz.c12
-rw-r--r--src/mame/drivers/taitowlf.c5
-rw-r--r--src/mame/drivers/tank8.c4
-rw-r--r--src/mame/drivers/tankbatt.c2
-rw-r--r--src/mame/drivers/tankbust.c2
-rw-r--r--src/mame/drivers/taotaido.c4
-rw-r--r--src/mame/drivers/targeth.c2
-rw-r--r--src/mame/drivers/tasman.c10
-rw-r--r--src/mame/drivers/tatsumi.c8
-rw-r--r--src/mame/drivers/tattack.c10
-rw-r--r--src/mame/drivers/taxidriv.c2
-rw-r--r--src/mame/drivers/tbowl.c4
-rw-r--r--src/mame/drivers/tceptor.c8
-rw-r--r--src/mame/drivers/tcl.c5
-rw-r--r--src/mame/drivers/tecmo.c4
-rw-r--r--src/mame/drivers/tecmo16.c2
-rw-r--r--src/mame/drivers/tecmosys.c2
-rw-r--r--src/mame/drivers/tehkanwc.c2
-rw-r--r--src/mame/drivers/terracre.c6
-rw-r--r--src/mame/drivers/tetrisp2.c18
-rw-r--r--src/mame/drivers/tgtpanic.c12
-rw-r--r--src/mame/drivers/thedeep.c2
-rw-r--r--src/mame/drivers/thepit.c2
-rw-r--r--src/mame/drivers/thief.c6
-rw-r--r--src/mame/drivers/thoop2.c2
-rw-r--r--src/mame/drivers/thunderj.c2
-rw-r--r--src/mame/drivers/thunderx.c4
-rw-r--r--src/mame/drivers/tiamc1.c2
-rw-r--r--src/mame/drivers/tigeroad.c2
-rw-r--r--src/mame/drivers/timelimt.c2
-rw-r--r--src/mame/drivers/timeplt.c2
-rw-r--r--src/mame/drivers/timetrv.c8
-rw-r--r--src/mame/drivers/tmaster.c12
-rw-r--r--src/mame/drivers/tmmjprd.c50
-rw-r--r--src/mame/drivers/tmnt.c26
-rw-r--r--src/mame/drivers/tmspoker.c8
-rw-r--r--src/mame/drivers/tnzs.c28
-rw-r--r--src/mame/drivers/toaplan1.c32
-rw-r--r--src/mame/drivers/toaplan2.c68
-rw-r--r--src/mame/drivers/toki.c4
-rw-r--r--src/mame/drivers/toobin.c2
-rw-r--r--src/mame/drivers/topspeed.c2
-rw-r--r--src/mame/drivers/toratora.c16
-rw-r--r--src/mame/drivers/toypop.c2
-rw-r--r--src/mame/drivers/tp84.c2
-rw-r--r--src/mame/drivers/trackfld.c4
-rw-r--r--src/mame/drivers/travrusa.c2
-rw-r--r--src/mame/drivers/triforce.c5
-rw-r--r--src/mame/drivers/triplhnt.c2
-rw-r--r--src/mame/drivers/truco.c2
-rw-r--r--src/mame/drivers/trucocl.c2
-rw-r--r--src/mame/drivers/trvmadns.c14
-rw-r--r--src/mame/drivers/tryout.c2
-rw-r--r--src/mame/drivers/tsamurai.c6
-rw-r--r--src/mame/drivers/ttchamp.c10
-rw-r--r--src/mame/drivers/tubep.c4
-rw-r--r--src/mame/drivers/tugboat.c10
-rw-r--r--src/mame/drivers/tumbleb.c24
-rw-r--r--src/mame/drivers/tumblep.c2
-rw-r--r--src/mame/drivers/tunhunt.c2
-rw-r--r--src/mame/drivers/turbo.c6
-rw-r--r--src/mame/drivers/tutankhm.c2
-rw-r--r--src/mame/drivers/twin16.c8
-rw-r--r--src/mame/drivers/twincobr.c2
-rw-r--r--src/mame/drivers/twins.c24
-rw-r--r--src/mame/drivers/tx1.c20
-rw-r--r--src/mame/drivers/ultraman.c2
-rw-r--r--src/mame/drivers/ultratnk.c4
-rw-r--r--src/mame/drivers/ultrsprt.c8
-rw-r--r--src/mame/drivers/umipoker.c22
-rw-r--r--src/mame/drivers/undrfire.c4
-rw-r--r--src/mame/drivers/unico.c6
-rw-r--r--src/mame/drivers/unkhorse.c10
-rw-r--r--src/mame/drivers/upscope.c2
-rw-r--r--src/mame/drivers/usgames.c2
-rw-r--r--src/mame/drivers/vamphalf.c10
-rw-r--r--src/mame/drivers/vaportra.c2
-rw-r--r--src/mame/drivers/vastar.c2
-rw-r--r--src/mame/drivers/vball.c2
-rw-r--r--src/mame/drivers/vcombat.c12
-rw-r--r--src/mame/drivers/vectrex.c2
-rw-r--r--src/mame/drivers/vega.c34
-rw-r--r--src/mame/drivers/vegaeo.c14
-rw-r--r--src/mame/drivers/vegas.c8
-rw-r--r--src/mame/drivers/vendetta.c2
-rw-r--r--src/mame/drivers/vicdual.c26
-rw-r--r--src/mame/drivers/victory.c2
-rw-r--r--src/mame/drivers/videopin.c2
-rw-r--r--src/mame/drivers/videopkr.c10
-rw-r--r--src/mame/drivers/vigilant.c6
-rw-r--r--src/mame/drivers/vindictr.c2
-rw-r--r--src/mame/drivers/viper.c15
-rw-r--r--src/mame/drivers/vmetal.c24
-rw-r--r--src/mame/drivers/volfied.c2
-rw-r--r--src/mame/drivers/vpoker.c8
-rw-r--r--src/mame/drivers/vroulet.c10
-rw-r--r--src/mame/drivers/vulgus.c2
-rw-r--r--src/mame/drivers/wallc.c8
-rw-r--r--src/mame/drivers/wardner.c2
-rw-r--r--src/mame/drivers/warpsped.c12
-rw-r--r--src/mame/drivers/warpwarp.c4
-rw-r--r--src/mame/drivers/warriorb.c8
-rw-r--r--src/mame/drivers/wc90.c2
-rw-r--r--src/mame/drivers/wc90b.c2
-rw-r--r--src/mame/drivers/wecleman.c4
-rw-r--r--src/mame/drivers/welltris.c2
-rw-r--r--src/mame/drivers/wgp.c2
-rw-r--r--src/mame/drivers/wheelfir.c24
-rw-r--r--src/mame/drivers/wildpkr.c6
-rw-r--r--src/mame/drivers/williams.c6
-rw-r--r--src/mame/drivers/wink.c8
-rw-r--r--src/mame/drivers/wiping.c2
-rw-r--r--src/mame/drivers/witch.c16
-rw-r--r--src/mame/drivers/wiz.c6
-rw-r--r--src/mame/drivers/wolfpack.c4
-rw-r--r--src/mame/drivers/wrally.c2
-rw-r--r--src/mame/drivers/wwfsstar.c2
-rw-r--r--src/mame/drivers/wwfwfest.c2
-rw-r--r--src/mame/drivers/xain.c2
-rw-r--r--src/mame/drivers/xexex.c2
-rw-r--r--src/mame/drivers/xmen.c8
-rw-r--r--src/mame/drivers/xorworld.c2
-rw-r--r--src/mame/drivers/xxmissio.c2
-rw-r--r--src/mame/drivers/xybots.c2
-rw-r--r--src/mame/drivers/xyonix.c2
-rw-r--r--src/mame/drivers/yiear.c2
-rw-r--r--src/mame/drivers/yunsun16.c4
-rw-r--r--src/mame/drivers/yunsung8.c2
-rw-r--r--src/mame/drivers/zac2650.c2
-rw-r--r--src/mame/drivers/zaccaria.c2
-rw-r--r--src/mame/drivers/zaxxon.c8
-rw-r--r--src/mame/drivers/zr107.c20
957 files changed, 4422 insertions, 4388 deletions
diff --git a/src/mame/drivers/1942.c b/src/mame/drivers/1942.c
index 4aaa35aab84..7b0d663716c 100644
--- a/src/mame/drivers/1942.c
+++ b/src/mame/drivers/1942.c
@@ -274,7 +274,7 @@ static MACHINE_CONFIG_START( 1942, _1942_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(1942)
+ MCFG_SCREEN_UPDATE_DRIVER(_1942_state, screen_update_1942)
/* sound hardware */
diff --git a/src/mame/drivers/1943.c b/src/mame/drivers/1943.c
index 48e7a38c0ca..f4a1f0f70ec 100644
--- a/src/mame/drivers/1943.c
+++ b/src/mame/drivers/1943.c
@@ -270,7 +270,7 @@ static MACHINE_CONFIG_START( 1943, _1943_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(1943)
+ MCFG_SCREEN_UPDATE_DRIVER(_1943_state, screen_update_1943)
MCFG_GFXDECODE(1943)
MCFG_PALETTE_LENGTH(32*4+16*16+16*16+16*16)
diff --git a/src/mame/drivers/1945kiii.c b/src/mame/drivers/1945kiii.c
index 7f5f0562737..6bfb4734df5 100644
--- a/src/mame/drivers/1945kiii.c
+++ b/src/mame/drivers/1945kiii.c
@@ -77,6 +77,7 @@ public:
TILE_GET_INFO_MEMBER(get_k3_bg_tile_info);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_k3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -123,10 +124,9 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16(k3)
+UINT32 k3_state::screen_update_k3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- k3_state *state = screen.machine().driver_data<k3_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( k3, k3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(k3)
+ MCFG_SCREEN_UPDATE_DRIVER(k3_state, screen_update_k3)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index dd3d35f38ee..f1a50371e72 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -63,7 +63,6 @@ public:
DECLARE_DRIVER_INIT(drill);
DECLARE_MACHINE_START(drill);
DECLARE_MACHINE_RESET(drill);
-
};
@@ -458,8 +457,8 @@ static MACHINE_CONFIG_START( drill, _2mindril_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* inaccurate, same as Taito F3? (needs screen raw params anyway) */
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+224-1)
- MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_VBLANK_STATIC(f3)
+ MCFG_SCREEN_UPDATE_DRIVER(_2mindril_state, screen_update_f3)
+ MCFG_SCREEN_VBLANK_DRIVER(_2mindril_state, screen_eof_f3)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/39in1.c b/src/mame/drivers/39in1.c
index 8f07a266ef3..83badf7bae5 100644
--- a/src/mame/drivers/39in1.c
+++ b/src/mame/drivers/39in1.c
@@ -74,6 +74,7 @@ public:
DECLARE_READ32_MEMBER(prot_cheater_r);
DECLARE_DRIVER_INIT(39in1);
virtual void machine_start();
+ UINT32 screen_update_39in1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -1517,18 +1518,17 @@ static INPUT_PORTS_START( 39in1 )
PORT_SERVICE_NO_TOGGLE( 0x80000000, IP_ACTIVE_LOW )
INPUT_PORTS_END
-static SCREEN_UPDATE_RGB32( 39in1 )
+UINT32 _39in1_state::screen_update_39in1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- _39in1_state *state = screen.machine().driver_data<_39in1_state>();
int x = 0;
int y = 0;
- for(y = 0; y <= (state->m_lcd_regs.lccr2 & PXA255_LCCR2_LPP); y++)
+ for(y = 0; y <= (m_lcd_regs.lccr2 & PXA255_LCCR2_LPP); y++)
{
UINT32 *d = &bitmap.pix32(y);
- for(x = 0; x <= (state->m_lcd_regs.lccr1 & PXA255_LCCR1_PPL); x++)
+ for(x = 0; x <= (m_lcd_regs.lccr1 & PXA255_LCCR1_PPL); x++)
{
- d[x] = state->m_pxa255_lcd_palette[state->m_pxa255_lcd_framebuffer[y*((state->m_lcd_regs.lccr1 & PXA255_LCCR1_PPL) + 1) + x]];
+ d[x] = m_pxa255_lcd_palette[m_pxa255_lcd_framebuffer[y*((m_lcd_regs.lccr1 & PXA255_LCCR1_PPL) + 1) + x]];
}
}
return 0;
@@ -1600,7 +1600,7 @@ static MACHINE_CONFIG_START( 39in1, _39in1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 295, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(39in1)
+ MCFG_SCREEN_UPDATE_DRIVER(_39in1_state, screen_update_39in1)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/3do.c b/src/mame/drivers/3do.c
index b3e9653b783..73555d1311c 100644
--- a/src/mame/drivers/3do.c
+++ b/src/mame/drivers/3do.c
@@ -165,7 +165,7 @@ static MACHINE_CONFIG_START( 3do, _3do_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262 )
- MCFG_SCREEN_UPDATE_STATIC( _3do )
+ MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update__3do)
MCFG_CDROM_ADD( "cdrom", _3do_cdrom)
MACHINE_CONFIG_END
@@ -179,7 +179,7 @@ static MACHINE_CONFIG_START( 3do_pal, _3do_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_UPDATE_STATIC( _3do )
+ MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update__3do)
MCFG_SCREEN_SIZE( 640, 625 )
MCFG_SCREEN_VISIBLE_AREA( 0, 639, 0, 479 )
MCFG_SCREEN_REFRESH_RATE( 50 )
diff --git a/src/mame/drivers/40love.c b/src/mame/drivers/40love.c
index 4fd0156e6ca..6f7d5026d53 100644
--- a/src/mame/drivers/40love.c
+++ b/src/mame/drivers/40love.c
@@ -1080,7 +1080,7 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fortyl)
+ MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
MCFG_GFXDECODE(40love)
MCFG_PALETTE_LENGTH(1024)
@@ -1135,7 +1135,7 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fortyl)
+ MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
MCFG_GFXDECODE(40love)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c
index 5266657d61f..f37c19c75ed 100644
--- a/src/mame/drivers/4enraya.c
+++ b/src/mame/drivers/4enraya.c
@@ -330,7 +330,7 @@ static MACHINE_CONFIG_START( 4enraya, _4enraya_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(4enraya)
+ MCFG_SCREEN_UPDATE_DRIVER(_4enraya_state, screen_update_4enraya)
MCFG_GFXDECODE(4enraya)
diff --git a/src/mame/drivers/4roses.c b/src/mame/drivers/4roses.c
index d2656839b80..79b4205400e 100644
--- a/src/mame/drivers/4roses.c
+++ b/src/mame/drivers/4roses.c
@@ -396,7 +396,7 @@ static MACHINE_CONFIG_START( 4roses, _4roses_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((124+1)*4, (30+1)*8) /* guess. taken from funworld games */
MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* guess. taken from funworld games */
- MCFG_SCREEN_UPDATE_STATIC(funworld)
+ MCFG_SCREEN_UPDATE_DRIVER(_4roses_state, screen_update_funworld)
MCFG_GFXDECODE(4roses)
diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c
index 9620e9510c7..17c4e32e0a9 100644
--- a/src/mame/drivers/5clown.c
+++ b/src/mame/drivers/5clown.c
@@ -486,6 +486,7 @@ public:
TILE_GET_INFO_MEMBER(get_fclown_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_fclown(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -537,10 +538,9 @@ void _5clown_state::video_start()
}
-static SCREEN_UPDATE_IND16( fclown )
+UINT32 _5clown_state::screen_update_fclown(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- _5clown_state *state = screen.machine().driver_data<_5clown_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -1081,7 +1081,7 @@ static MACHINE_CONFIG_START( fclown, _5clown_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fclown)
+ MCFG_SCREEN_UPDATE_DRIVER(_5clown_state, screen_update_fclown)
MCFG_GFXDECODE(fclown)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c
index 1b2804669d2..41f805af587 100644
--- a/src/mame/drivers/8080bw.c
+++ b/src/mame/drivers/8080bw.c
@@ -396,7 +396,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( invadpt2, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(invadpt2)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cosmo, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(cosmo)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_cosmo)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -802,7 +802,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(invadpt2)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -954,7 +954,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( rollingc, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(rollingc)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_rollingc)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1072,7 +1072,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(schaser)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schaser)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1141,7 +1141,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( schasercv, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(schasercv)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schasercv)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1222,7 +1222,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( sflush, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(sflush)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_sflush)
MACHINE_CONFIG_END
@@ -1329,7 +1329,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(indianbt)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1349,7 +1349,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3a, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(lupin3)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_lupin3)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1469,7 +1469,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( polaris, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(polaris)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_polaris)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1592,7 +1592,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ballbomb)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_ballbomb)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1763,7 +1763,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( indianbt, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(indianbt)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1837,7 +1837,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( steelwkr, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(invadpt2)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1972,7 +1972,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( shuttlei, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(shuttlei)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_shuttlei)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -2153,7 +2153,7 @@ MACHINE_CONFIG_DERIVED_CLASS( vortex, mw8080bw_root, _8080bw_state )
/* video hardware */
// TODO: replace with modified invaders color renderer code allowing midscanline color writes
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(invaders)
+ MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c
index a054de42e2d..4f6f87bcdbb 100644
--- a/src/mame/drivers/88games.c
+++ b/src/mame/drivers/88games.c
@@ -386,7 +386,7 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(88games)
+ MCFG_SCREEN_UPDATE_DRIVER(_88games_state, screen_update_88games)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ace.c b/src/mame/drivers/ace.c
index 7bdef149339..3c0bf68debc 100644
--- a/src/mame/drivers/ace.c
+++ b/src/mame/drivers/ace.c
@@ -68,6 +68,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -91,9 +92,8 @@ void aceal_state::video_start()
machine().gfx[4]->set_source(m_scoreram);
}
-static SCREEN_UPDATE_IND16( ace )
+UINT32 aceal_state::screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- aceal_state *state = screen.machine().driver_data<aceal_state>();
int offs;
/* first of all, fill the screen with the background color */
@@ -103,19 +103,19 @@ static SCREEN_UPDATE_IND16( ace )
0,
0,
0, 0,
- state->m_objpos[0], state->m_objpos[1]);
+ m_objpos[0], m_objpos[1]);
drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[2],
0,
0,
0, 0,
- state->m_objpos[2], state->m_objpos[3]);
+ m_objpos[2], m_objpos[3]);
drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[3],
0,
0,
0, 0,
- state->m_objpos[4], state->m_objpos[5]);
+ m_objpos[4], m_objpos[5]);
for (offs = 0; offs < 8; offs++)
{
@@ -359,7 +359,7 @@ static MACHINE_CONFIG_START( ace, aceal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ace)
+ MCFG_SCREEN_UPDATE_DRIVER(aceal_state, screen_update_ace)
MCFG_GFXDECODE(ace)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c
index 8100daef70b..e65674e952b 100644
--- a/src/mame/drivers/acefruit.c
+++ b/src/mame/drivers/acefruit.c
@@ -39,6 +39,7 @@ public:
DECLARE_DRIVER_INIT(sidewndr);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_acefruit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -89,9 +90,8 @@ static INTERRUPT_GEN( acefruit_vblank )
state->m_refresh_timer->adjust( attotime::zero );
}
-static SCREEN_UPDATE_IND16( acefruit )
+UINT32 acefruit_state::screen_update_acefruit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- acefruit_state *state = screen.machine().driver_data<acefruit_state>();
int startrow = cliprect.min_y / 8;
int endrow = cliprect.max_y / 8;
int row;
@@ -106,8 +106,8 @@ static SCREEN_UPDATE_IND16( acefruit )
for( col = 0; col < 32; col++ )
{
int tile_index = ( col * 32 ) + row;
- int code = state->m_videoram[ tile_index ];
- int color = state->m_colorram[ tile_index ];
+ int code = m_videoram[ tile_index ];
+ int color = m_colorram[ tile_index ];
if( color < 0x4 )
{
@@ -123,7 +123,7 @@ static SCREEN_UPDATE_IND16( acefruit )
for( x = 0; x < 16; x++ )
{
- int sprite = ( state->m_spriteram[ ( spriteindex / 64 ) % 6 ] & 0xf ) ^ 0xf;
+ int sprite = ( m_spriteram[ ( spriteindex / 64 ) % 6 ] & 0xf ) ^ 0xf;
const UINT8 *gfxdata = gfx->get_data(sprite);
for( y = 0; y < 8; y++ )
@@ -592,7 +592,7 @@ static MACHINE_CONFIG_START( acefruit, acefruit_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
- MCFG_SCREEN_UPDATE_STATIC(acefruit)
+ MCFG_SCREEN_UPDATE_DRIVER(acefruit_state, screen_update_acefruit)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/acommand.c b/src/mame/drivers/acommand.c
index 610644229c3..6ceaee97c7b 100644
--- a/src/mame/drivers/acommand.c
+++ b/src/mame/drivers/acommand.c
@@ -92,6 +92,7 @@ public:
TILE_GET_INFO_MEMBER(ac_get_bg_tile_info);
TILE_GET_INFO_MEMBER(ac_get_tx_tile_info);
virtual void video_start();
+ UINT32 screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -249,21 +250,20 @@ static void draw_led(bitmap_ind16 &bitmap, int x, int y,UINT8 value)
}
-static SCREEN_UPDATE_IND16( acommand )
+UINT32 acommand_state::screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- acommand_state *state = screen.machine().driver_data<acommand_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(),bitmap,cliprect,0,0);
- state->m_tx_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tx_tilemap->draw(bitmap, cliprect, 0,0);
/*Order might be wrong,but these for sure are the led numbers tested*/
- draw_led(bitmap, 0, 20, (state->m_led0 & 0x0f00) >> 8);
- draw_led(bitmap, 6, 20, (state->m_led0 & 0x00f0) >> 4);
- draw_led(bitmap, 12, 20, (state->m_led0 & 0x000f));
+ draw_led(bitmap, 0, 20, (m_led0 & 0x0f00) >> 8);
+ draw_led(bitmap, 6, 20, (m_led0 & 0x00f0) >> 4);
+ draw_led(bitmap, 12, 20, (m_led0 & 0x000f));
- draw_led(bitmap, 256-18,20,(state->m_led0 & 0xf000) >> 12);
- draw_led(bitmap, 256-12,20,(state->m_led1 & 0xf0) >> 4);
- draw_led(bitmap, 256-6,20, (state->m_led1 & 0xf));
+ draw_led(bitmap, 256-18,20,(m_led0 & 0xf000) >> 12);
+ draw_led(bitmap, 256-12,20,(m_led1 & 0xf0) >> 4);
+ draw_led(bitmap, 256-6,20, (m_led1 & 0xf));
return 0;
}
@@ -609,7 +609,7 @@ static MACHINE_CONFIG_START( acommand, acommand_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(acommand)
+ MCFG_SCREEN_UPDATE_DRIVER(acommand_state, screen_update_acommand)
MCFG_GFXDECODE(acommand)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c
index 8abb946a694..ff35a1b2935 100644
--- a/src/mame/drivers/actfancr.c
+++ b/src/mame/drivers/actfancr.c
@@ -337,7 +337,7 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(actfancr)
+ MCFG_SCREEN_UPDATE_DRIVER(actfancr_state, screen_update_actfancr)
MCFG_GFXDECODE(actfan)
MCFG_PALETTE_LENGTH(768)
@@ -387,7 +387,7 @@ static MACHINE_CONFIG_START( triothep, actfancr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(actfancr)
+ MCFG_SCREEN_UPDATE_DRIVER(actfancr_state, screen_update_actfancr)
MCFG_GFXDECODE(triothep)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index 5fa12f6cbf9..806149d9d4f 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -183,6 +183,7 @@ public:
DECLARE_MACHINE_START(skattv);
DECLARE_MACHINE_RESET(skattv);
DECLARE_PALETTE_INIT(adp);
+ UINT32 screen_update_adp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -203,24 +204,22 @@ UINT32 adp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con
#if 0
-static SCREEN_UPDATE_IND16( adp )
+UINT32 adp_state::screen_update_adp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- adp_state *state = screen.machine().driver_data<adp_state>();
- state->m_h63484->update_screen(bitmap, cliprect);
+ m_h63484->update_screen(bitmap, cliprect);
#if 0
- adp_state *state = screen.machine().driver_data<adp_state>();
int x, y, b, src;
- b = ((hd63484_regs_r(state->m_hd63484, 0xcc/2, 0xffff) & 0x000f) << 16) + hd63484_regs_r(state->m_hd63484, 0xce/2, 0xffff);
+ b = ((hd63484_regs_r(m_hd63484, 0xcc/2, 0xffff) & 0x000f) << 16) + hd63484_regs_r(m_hd63484, 0xce/2, 0xffff);
for (y = 0;y < 280;y++)
{
- for (x = 0 ; x < (hd63484_regs_r(state->m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4 ; x += 4)
+ for (x = 0 ; x < (hd63484_regs_r(m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4 ; x += 4)
{
b &= (HD63484_RAM_SIZE - 1);
- src = hd63484_ram_r(state->m_hd63484, b, 0xffff);
+ src = hd63484_ram_r(m_hd63484, b, 0xffff);
bitmap.pix16(y, x ) = ((src & 0x000f) >> 0) << 0;
bitmap.pix16(y, x + 1) = ((src & 0x00f0) >> 4) << 0;
bitmap.pix16(y, x + 2) = ((src & 0x0f00) >> 8) << 0;
@@ -229,24 +228,24 @@ static SCREEN_UPDATE_IND16( adp )
}
}
if (!screen.machine().input().code_pressed(KEYCODE_O)) // debug: toggle window
- if ((hd63484_regs_r(state->m_hd63484, 0x06/2, 0xffff) & 0x0300) == 0x0300)
+ if ((hd63484_regs_r(m_hd63484, 0x06/2, 0xffff) & 0x0300) == 0x0300)
{
- int sy = (hd63484_regs_r(state->m_hd63484, 0x94/2, 0xffff) & 0x0fff) - (hd63484_regs_r(state->m_hd63484, 0x88/2, 0xffff) >> 8);
- int h = hd63484_regs_r(state->m_hd63484, 0x96/2, 0xffff) & 0x0fff;
- int sx = ((hd63484_regs_r(state->m_hd63484, 0x92/2, 0xffff) >> 8) - (hd63484_regs_r(state->m_hd63484, 0x84/2, 0xffff) >> 8)) * 2 * 2;
- int w = (hd63484_regs_r(state->m_hd63484, 0x92/2, 0xffff) & 0xff) * 2;
+ int sy = (hd63484_regs_r(m_hd63484, 0x94/2, 0xffff) & 0x0fff) - (hd63484_regs_r(m_hd63484, 0x88/2, 0xffff) >> 8);
+ int h = hd63484_regs_r(m_hd63484, 0x96/2, 0xffff) & 0x0fff;
+ int sx = ((hd63484_regs_r(m_hd63484, 0x92/2, 0xffff) >> 8) - (hd63484_regs_r(m_hd63484, 0x84/2, 0xffff) >> 8)) * 2 * 2;
+ int w = (hd63484_regs_r(m_hd63484, 0x92/2, 0xffff) & 0xff) * 2;
if (sx < 0) sx = 0; // not sure about this (shangha2 title screen)
- b = (((hd63484_regs_r(state->m_hd63484, 0xdc/2, 0xffff) & 0x000f) << 16) + hd63484_regs_r(state->m_hd63484, 0xde/2, 0xffff));
+ b = (((hd63484_regs_r(m_hd63484, 0xdc/2, 0xffff) & 0x000f) << 16) + hd63484_regs_r(m_hd63484, 0xde/2, 0xffff));
for (y = sy ; y <= sy + h && y < 280 ; y++)
{
- for (x = 0 ; x < (hd63484_regs_r(state->m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4 ; x += 4)
+ for (x = 0 ; x < (hd63484_regs_r(m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4 ; x += 4)
{
b &= (HD63484_RAM_SIZE - 1);
- src = hd63484_ram_r(state->m_hd63484, b, 0xffff);
+ src = hd63484_ram_r(m_hd63484, b, 0xffff);
- if (x <= w && x + sx >= 0 && x + sx < (hd63484_regs_r(state->m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4)
+ if (x <= w && x + sx >= 0 && x + sx < (hd63484_regs_r(m_hd63484, 0xca/2, 0xffff) & 0x0fff) * 4)
{
bitmap.pix16(y, x + sx ) = ((src & 0x000f) >> 0) << 0;
bitmap.pix16(y, x + sx + 1) = ((src & 0x00f0) >> 4) << 0;
diff --git a/src/mame/drivers/aeroboto.c b/src/mame/drivers/aeroboto.c
index 03453cfd449..c7922e411e8 100644
--- a/src/mame/drivers/aeroboto.c
+++ b/src/mame/drivers/aeroboto.c
@@ -265,7 +265,7 @@ static MACHINE_CONFIG_START( formatz, aeroboto_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aeroboto)
+ MCFG_SCREEN_UPDATE_DRIVER(aeroboto_state, screen_update_aeroboto)
MCFG_GFXDECODE(aeroboto)
diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c
index 7bb74c18671..23cf346dbba 100644
--- a/src/mame/drivers/aerofgt.c
+++ b/src/mame/drivers/aerofgt.c
@@ -1343,7 +1343,7 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+4, 44*8+4-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pspikes)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikes)
MCFG_GFXDECODE(pspikes)
MCFG_PALETTE_LENGTH(2048)
@@ -1379,7 +1379,7 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8+4, 224+4-1)
- MCFG_SCREEN_UPDATE_STATIC(spikes91)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_spikes91)
MCFG_GFXDECODE(spikes91)
MCFG_PALETTE_LENGTH(2048)
@@ -1411,7 +1411,7 @@ static MACHINE_CONFIG_START( pspikesb, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+4, 44*8+4-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pspikesb)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikesb)
MCFG_GFXDECODE(pspikesb)
MCFG_PALETTE_LENGTH(2048)
@@ -1441,7 +1441,7 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+4, 44*8+4-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pspikes)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikes)
MCFG_GFXDECODE(pspikes)
MCFG_PALETTE_LENGTH(2048)
@@ -1476,7 +1476,7 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 45*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(karatblz)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_karatblz)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1515,7 +1515,7 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 45*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(spinlbrk)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_spinlbrk)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1554,7 +1554,7 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(turbofrc)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1594,7 +1594,7 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
/* wrong but improves sprite-background synchronization */
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+12, 40*8-1+12, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(turbofrc)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_GFXDECODE(aerofgtb)
MCFG_PALETTE_LENGTH(1024)
@@ -1634,7 +1634,7 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state )
/* wrong but improves sprite-background synchronization */
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aerofgt)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerofgt)
MCFG_GFXDECODE(aerofgt)
MCFG_PALETTE_LENGTH(1024)
@@ -1672,7 +1672,7 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
/* wrong but improves sprite-background synchronization */
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+12, 40*8-1+12, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aerfboot)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerfboot)
MCFG_GFXDECODE(aerfboot)
MCFG_PALETTE_LENGTH(1024)
@@ -1703,7 +1703,7 @@ static MACHINE_CONFIG_START( aerfboo2, aerofgt_state )
/* wrong but improves sprite-background synchronization */
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+12, 40*8-1+12, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aerfboo2)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerfboo2)
MCFG_GFXDECODE(aerfboo2)
MCFG_PALETTE_LENGTH(1024)
@@ -1736,7 +1736,7 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+14, 44*8-1+4, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wbbc97)
+ MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_wbbc97)
MCFG_GFXDECODE(wbbc97)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/airbustr.c b/src/mame/drivers/airbustr.c
index 6932b2a06ab..0d14e3b4965 100644
--- a/src/mame/drivers/airbustr.c
+++ b/src/mame/drivers/airbustr.c
@@ -647,8 +647,8 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(airbustr)
- MCFG_SCREEN_VBLANK_STATIC(airbustr)
+ MCFG_SCREEN_UPDATE_DRIVER(airbustr_state, screen_update_airbustr)
+ MCFG_SCREEN_VBLANK_DRIVER(airbustr_state, screen_eof_airbustr)
MCFG_GFXDECODE(airbustr)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/ajax.c b/src/mame/drivers/ajax.c
index 54360ba3260..2f7e61d8ebc 100644
--- a/src/mame/drivers/ajax.c
+++ b/src/mame/drivers/ajax.c
@@ -229,7 +229,7 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(ajax)
+ MCFG_SCREEN_UPDATE_DRIVER(ajax_state, screen_update_ajax)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/albazc.c b/src/mame/drivers/albazc.c
index e79e9c8da27..7eae69ccf9e 100644
--- a/src/mame/drivers/albazc.c
+++ b/src/mame/drivers/albazc.c
@@ -34,6 +34,7 @@ public:
DECLARE_WRITE8_MEMBER(albazc_vregs_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_hanaroku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -87,7 +88,7 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16(hanaroku)
+UINT32 albazc_state::screen_update_hanaroku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0x1f0, cliprect); // ???
draw_sprites(screen.machine(), bitmap, cliprect);
@@ -278,7 +279,7 @@ static MACHINE_CONFIG_START( hanaroku, albazc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hanaroku)
+ MCFG_SCREEN_UPDATE_DRIVER(albazc_state, screen_update_hanaroku)
MCFG_GFXDECODE(hanaroku)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c
index 8680b0a3f7f..ac7c64a0631 100644
--- a/src/mame/drivers/albazg.c
+++ b/src/mame/drivers/albazg.c
@@ -76,6 +76,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_yumefuda(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(albazg_state::y_get_bg_tile_info)
@@ -96,10 +97,9 @@ void albazg_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(albazg_state::y_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( yumefuda )
+UINT32 albazg_state::screen_update_yumefuda(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- albazg_state *state = screen.machine().driver_data<albazg_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -395,7 +395,7 @@ static MACHINE_CONFIG_START( yumefuda, albazg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC( yumefuda )
+ MCFG_SCREEN_UPDATE_DRIVER(albazg_state, screen_update_yumefuda)
MCFG_MC6845_ADD("crtc", H46505, MASTER_CLOCK/16, mc6845_intf) /* hand tuned to get ~60 fps */
diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c
index 14f78825e2e..f3bb67e5d38 100644
--- a/src/mame/drivers/aleck64.c
+++ b/src/mame/drivers/aleck64.c
@@ -817,7 +817,7 @@ static MACHINE_CONFIG_START( aleck64, n64_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 525)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(n64)
+ MCFG_SCREEN_UPDATE_DRIVER(n64_state, screen_update_n64)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index 97472725efc..e06c45c0c38 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -447,7 +447,7 @@ static MACHINE_CONFIG_START( alg_r1, alg_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_LASERDISC_LDP1450_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(512*2, 262, amiga)
+ MCFG_LASERDISC_OVERLAY_DRIVER(512*2, 262, amiga_state, screen_update_amiga)
MCFG_LASERDISC_OVERLAY_CLIP((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
/* video hardware */
diff --git a/src/mame/drivers/aliens.c b/src/mame/drivers/aliens.c
index 2474b5e2c22..50a11a7f01d 100644
--- a/src/mame/drivers/aliens.c
+++ b/src/mame/drivers/aliens.c
@@ -270,7 +270,7 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(aliens)
+ MCFG_SCREEN_UPDATE_DRIVER(aliens_state, screen_update_aliens)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/alpha68k.c b/src/mame/drivers/alpha68k.c
index b44ce979eb5..5068f4b9e6d 100644
--- a/src/mame/drivers/alpha68k.c
+++ b/src/mame/drivers/alpha68k.c
@@ -1978,7 +1978,7 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sstingry)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_sstingry)
MCFG_GFXDECODE(sstingry)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2023,7 +2023,7 @@ static MACHINE_CONFIG_START( kyros, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kyros)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_kyros)
MCFG_GFXDECODE(kyros)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2068,7 +2068,7 @@ static MACHINE_CONFIG_START( jongbou, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kyros)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_kyros)
MCFG_GFXDECODE(jongbou)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2102,7 +2102,7 @@ static MACHINE_CONFIG_START( alpha68k_I, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_I)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_I)
MCFG_GFXDECODE(paddle)
@@ -2146,7 +2146,7 @@ static MACHINE_CONFIG_START( alpha68k_II, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_II)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_II)
MCFG_GFXDECODE(alpha68k_II)
MCFG_PALETTE_LENGTH(2048)
@@ -2195,7 +2195,7 @@ static MACHINE_CONFIG_START( alpha68k_II_gm, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_II)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_II)
MCFG_GFXDECODE(alpha68k_II)
MCFG_PALETTE_LENGTH(2048)
@@ -2238,7 +2238,7 @@ static MACHINE_CONFIG_START( alpha68k_V, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_V)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_V)
MCFG_GFXDECODE(alpha68k_V)
MCFG_PALETTE_LENGTH(4096)
@@ -2280,7 +2280,7 @@ static MACHINE_CONFIG_START( alpha68k_V_sb, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_V_sb)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_V_sb)
MCFG_GFXDECODE(alpha68k_V)
MCFG_PALETTE_LENGTH(4096)
@@ -2321,7 +2321,7 @@ static MACHINE_CONFIG_START( tnextspc, alpha68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(alpha68k_I)
+ MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_I)
MCFG_GFXDECODE(tnextspc)
diff --git a/src/mame/drivers/amaticmg.c b/src/mame/drivers/amaticmg.c
index f20f73dfc8e..fed5a063276 100644
--- a/src/mame/drivers/amaticmg.c
+++ b/src/mame/drivers/amaticmg.c
@@ -452,6 +452,8 @@ public:
virtual void video_start();
virtual void palette_init();
DECLARE_PALETTE_INIT(amaticmg2);
+ UINT32 screen_update_amaticmg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_amaticmg2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -463,9 +465,8 @@ void amaticmg_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( amaticmg )
+UINT32 amaticmg_state::screen_update_amaticmg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- amaticmg_state *state = screen.machine().driver_data<amaticmg_state>();
gfx_element *gfx = screen.machine().gfx[0];
int y,x;
int count = 0;
@@ -474,12 +475,12 @@ static SCREEN_UPDATE_IND16( amaticmg )
{
for (x=0;x<96;x++)
{
- UINT16 tile = state->m_vram[count];
+ UINT16 tile = m_vram[count];
UINT8 color;
- tile += ((state->m_attr[count]&0x0f)<<8);
+ tile += ((m_attr[count]&0x0f)<<8);
/* TODO: this looks so out of place ... */
- color = (state->m_attr[count]&0xf0)>>3;
+ color = (m_attr[count]&0xf0)>>3;
drawgfx_opaque(bitmap,cliprect,gfx,tile,color,0,0,x*4,y*8);
count++;
@@ -489,9 +490,8 @@ static SCREEN_UPDATE_IND16( amaticmg )
return 0;
}
-static SCREEN_UPDATE_IND16( amaticmg2 )
+UINT32 amaticmg_state::screen_update_amaticmg2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- amaticmg_state *state = screen.machine().driver_data<amaticmg_state>();
gfx_element *gfx = screen.machine().gfx[0];
int y,x;
int count = 16;
@@ -500,10 +500,10 @@ static SCREEN_UPDATE_IND16( amaticmg2 )
{
for (x=0;x<96;x++)
{
- UINT16 tile = state->m_vram[count];
+ UINT16 tile = m_vram[count];
UINT8 color;
- tile += ((state->m_attr[count]&0xff)<<8);
+ tile += ((m_attr[count]&0xff)<<8);
color = 0;
drawgfx_opaque(bitmap,cliprect,gfx,tile,color,0,0,x*4,y*8);
@@ -881,7 +881,7 @@ static MACHINE_CONFIG_START( amaticmg, amaticmg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(amaticmg)
+ MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
@@ -919,7 +919,7 @@ static MACHINE_CONFIG_DERIVED( amaticmg2, amaticmg )
MCFG_CPU_VBLANK_INT("screen", amaticmg2_irq)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(amaticmg2)
+ MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2)
MCFG_GFXDECODE(amaticmg2)
MCFG_PALETTE_INIT_OVERRIDE(amaticmg_state,amaticmg2)
diff --git a/src/mame/drivers/ambush.c b/src/mame/drivers/ambush.c
index ff17cb4fc6e..c8f655547ac 100644
--- a/src/mame/drivers/ambush.c
+++ b/src/mame/drivers/ambush.c
@@ -240,7 +240,7 @@ static MACHINE_CONFIG_START( ambush, ambush_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-3) /* The -3 makes the cocktail mode perfect */
- MCFG_SCREEN_UPDATE_STATIC(ambush)
+ MCFG_SCREEN_UPDATE_DRIVER(ambush_state, screen_update_ambush)
MCFG_GFXDECODE(ambush)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c
index 3722ebcd6d0..a999d65a87a 100644
--- a/src/mame/drivers/ampoker2.c
+++ b/src/mame/drivers/ampoker2.c
@@ -1182,7 +1182,7 @@ static MACHINE_CONFIG_START( ampoker2, ampoker2_state )
*/
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(20*8, 56*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ampoker2)
+ MCFG_SCREEN_UPDATE_DRIVER(ampoker2_state, screen_update_ampoker2)
MCFG_GFXDECODE(ampoker2)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/amspdwy.c b/src/mame/drivers/amspdwy.c
index be07180e7b4..0301cd17ae5 100644
--- a/src/mame/drivers/amspdwy.c
+++ b/src/mame/drivers/amspdwy.c
@@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(amspdwy)
+ MCFG_SCREEN_UPDATE_DRIVER(amspdwy_state, screen_update_amspdwy)
MCFG_GFXDECODE(amspdwy)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/angelkds.c b/src/mame/drivers/angelkds.c
index 68b0f6ec85d..736f2e78b2d 100644
--- a/src/mame/drivers/angelkds.c
+++ b/src/mame/drivers/angelkds.c
@@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( angelkds, angelkds_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(angelkds)
+ MCFG_SCREEN_UPDATE_DRIVER(angelkds_state, screen_update_angelkds)
MCFG_GFXDECODE(angelkds)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/appoooh.c b/src/mame/drivers/appoooh.c
index 5aeb41b0982..77f3c3c05cc 100644
--- a/src/mame/drivers/appoooh.c
+++ b/src/mame/drivers/appoooh.c
@@ -475,7 +475,7 @@ static MACHINE_CONFIG_DERIVED( appoooh, appoooh_common )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(appoooh)
+ MCFG_SCREEN_UPDATE_DRIVER(appoooh_state, screen_update_appoooh)
MCFG_GFXDECODE(appoooh)
MCFG_PALETTE_LENGTH(32*8+32*8)
@@ -493,7 +493,7 @@ static MACHINE_CONFIG_DERIVED( robowres, appoooh_common )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(robowres)
+ MCFG_SCREEN_UPDATE_DRIVER(appoooh_state, screen_update_robowres)
MCFG_GFXDECODE(robowres)
MCFG_PALETTE_LENGTH(32*8+32*8)
diff --git a/src/mame/drivers/aquarium.c b/src/mame/drivers/aquarium.c
index 7b222739b16..0bec20ed5be 100644
--- a/src/mame/drivers/aquarium.c
+++ b/src/mame/drivers/aquarium.c
@@ -331,7 +331,7 @@ static MACHINE_CONFIG_START( aquarium, aquarium_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 34*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aquarium)
+ MCFG_SCREEN_UPDATE_DRIVER(aquarium_state, screen_update_aquarium)
MCFG_GFXDECODE(aquarium)
MCFG_PALETTE_LENGTH(0x1000/2)
diff --git a/src/mame/drivers/arabian.c b/src/mame/drivers/arabian.c
index 5ceab530ee3..9ad4875559a 100644
--- a/src/mame/drivers/arabian.c
+++ b/src/mame/drivers/arabian.c
@@ -374,7 +374,7 @@ static MACHINE_CONFIG_START( arabian, arabian_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 11, 244)
- MCFG_SCREEN_UPDATE_STATIC(arabian)
+ MCFG_SCREEN_UPDATE_DRIVER(arabian_state, screen_update_arabian)
MCFG_PALETTE_LENGTH(256*32)
diff --git a/src/mame/drivers/arcadecl.c b/src/mame/drivers/arcadecl.c
index ac026539275..633042de663 100644
--- a/src/mame/drivers/arcadecl.c
+++ b/src/mame/drivers/arcadecl.c
@@ -343,7 +343,7 @@ static MACHINE_CONFIG_START( arcadecl, arcadecl_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(arcadecl)
+ MCFG_SCREEN_UPDATE_DRIVER(arcadecl_state, screen_update_arcadecl)
MCFG_VIDEO_START_OVERRIDE(arcadecl_state,arcadecl)
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index 46060a6b935..4912e4ab055 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -325,7 +325,7 @@ static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 262)
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
- MCFG_SCREEN_UPDATE_STATIC(amiga)
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT_OVERRIDE(arcadia_amiga_state,amiga)
diff --git a/src/mame/drivers/argus.c b/src/mame/drivers/argus.c
index 98bc279163f..0d9d2b4e8fb 100644
--- a/src/mame/drivers/argus.c
+++ b/src/mame/drivers/argus.c
@@ -559,7 +559,7 @@ static MACHINE_CONFIG_START( argus, argus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(argus)
+ MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_argus)
MCFG_GFXDECODE(argus)
MCFG_PALETTE_LENGTH(896)
@@ -603,7 +603,7 @@ static MACHINE_CONFIG_START( valtric, argus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(valtric)
+ MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_valtric)
MCFG_GFXDECODE(valtric)
MCFG_PALETTE_LENGTH(768)
@@ -647,7 +647,7 @@ static MACHINE_CONFIG_START( butasan, argus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is taken from psychic5 driver */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(butasan)
+ MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_butasan)
MCFG_GFXDECODE(butasan)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c
index 60721f6d406..d31bbdd52ec 100644
--- a/src/mame/drivers/aristmk4.c
+++ b/src/mame/drivers/aristmk4.c
@@ -321,6 +321,7 @@ public:
virtual void video_start();
virtual void palette_init();
DECLARE_PALETTE_INIT(lions);
+ UINT32 screen_update_aristmk4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/* Partial Cashcade protocol */
@@ -370,9 +371,8 @@ INLINE void uBackgroundColour(running_machine &machine)
}
}
-static SCREEN_UPDATE_IND16(aristmk4)
+UINT32 aristmk4_state::screen_update_aristmk4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- aristmk4_state *state = screen.machine().driver_data<aristmk4_state>();
gfx_element *gfx = screen.machine().gfx[0];
int x,y;
int count = 0;
@@ -386,14 +386,14 @@ static SCREEN_UPDATE_IND16(aristmk4)
{
for (x=38;x--;)
{
- color = ((state->m_mkiv_vram[count]) & 0xe0) >> 5;
- tile = (state->m_mkiv_vram[count+1]|state->m_mkiv_vram[count]<<8) & 0x3ff;
- bgtile = (state->m_mkiv_vram[count+1]|state->m_mkiv_vram[count]<<8) & 0xff; // first 256 tiles
+ color = ((m_mkiv_vram[count]) & 0xe0) >> 5;
+ tile = (m_mkiv_vram[count+1]|m_mkiv_vram[count]<<8) & 0x3ff;
+ bgtile = (m_mkiv_vram[count+1]|m_mkiv_vram[count]<<8) & 0xff; // first 256 tiles
uBackgroundColour(screen.machine()); // read sw7
gfx->decode(bgtile); // force the machine to update only the first 256 tiles.
// as we only update the background, not the entire display.
- flipx = ((state->m_mkiv_vram[count]) & 0x04);
- flipy = ((state->m_mkiv_vram[count]) & 0x08);
+ flipx = ((m_mkiv_vram[count]) & 0x04);
+ flipy = ((m_mkiv_vram[count]) & 0x08);
drawgfx_opaque(bitmap,cliprect,gfx,tile,color,flipx,flipy,(38-x-1)<<3,(27-y-1)<<3);
count+=2;
}
@@ -1699,7 +1699,7 @@ static MACHINE_CONFIG_START( aristmk4, aristmk4_state )
MCFG_GFXDECODE(aristmk4)
MCFG_PALETTE_LENGTH(512)
- MCFG_SCREEN_UPDATE_STATIC(aristmk4)
+ MCFG_SCREEN_UPDATE_DRIVER(aristmk4_state, screen_update_aristmk4)
MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf )
MCFG_VIA6522_ADD("via6522_0", 0, via_interface) /* 1 MHz.(only 1 or 2 MHz.are valid) */
diff --git a/src/mame/drivers/aristmk6.c b/src/mame/drivers/aristmk6.c
index adeccbdf856..196d25b8163 100644
--- a/src/mame/drivers/aristmk6.c
+++ b/src/mame/drivers/aristmk6.c
@@ -18,6 +18,7 @@ public:
UINT8 m_type;
DECLARE_READ64_MEMBER(test_r);
virtual void video_start();
+ UINT32 screen_update_aristmk6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -25,51 +26,50 @@ void aristmk6_state::video_start()
{
}
-SCREEN_UPDATE_RGB32(aristmk6)
+UINT32 aristmk6_state::screen_update_aristmk6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- aristmk6_state *state = screen.machine().driver_data<aristmk6_state>();
int x,y,count;
- const UINT8 *blit_ram = state->memregion("maincpu")->base();
+ const UINT8 *blit_ram = memregion("maincpu")->base();
if(screen.machine().input().code_pressed(KEYCODE_Z))
- state->m_test_x++;
+ m_test_x++;
if(screen.machine().input().code_pressed(KEYCODE_X))
- state->m_test_x--;
+ m_test_x--;
if(screen.machine().input().code_pressed(KEYCODE_A))
- state->m_test_y++;
+ m_test_y++;
if(screen.machine().input().code_pressed(KEYCODE_S))
- state->m_test_y--;
+ m_test_y--;
if(screen.machine().input().code_pressed(KEYCODE_Q))
- state->m_start_offs+=0x2000;
+ m_start_offs+=0x2000;
if(screen.machine().input().code_pressed(KEYCODE_W))
- state->m_start_offs-=0x2000;
+ m_start_offs-=0x2000;
if(screen.machine().input().code_pressed(KEYCODE_E))
- state->m_start_offs++;
+ m_start_offs++;
if(screen.machine().input().code_pressed(KEYCODE_R))
- state->m_start_offs--;
+ m_start_offs--;
if(screen.machine().input().code_pressed_once(KEYCODE_L))
- state->m_type^=1;
+ m_type^=1;
- popmessage("%d %d %04x %d",state->m_test_x,state->m_test_y,state->m_start_offs,state->m_type);
+ popmessage("%d %d %04x %d",m_test_x,m_test_y,m_start_offs,m_type);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- count = (state->m_start_offs);
+ count = (m_start_offs);
- for(y=0;y<state->m_test_y;y++)
+ for(y=0;y<m_test_y;y++)
{
- for(x=0;x<state->m_test_x;x++)
+ for(x=0;x<m_test_x;x++)
{
- if(state->m_type)
+ if(m_type)
{
UINT16 vram;
int r,g,b;
@@ -143,7 +143,7 @@ static MACHINE_CONFIG_START( aristmk6, aristmk6_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_STATIC(aristmk6)
+ MCFG_SCREEN_UPDATE_DRIVER(aristmk6_state, screen_update_aristmk6)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 773f5a06a52..488a277edf1 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -1036,7 +1036,7 @@ static MACHINE_CONFIG_START( arkanoid, arkanoid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(arkanoid)
+ MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_arkanoid)
MCFG_GFXDECODE(arkanoid)
MCFG_PALETTE_LENGTH(512)
@@ -1069,7 +1069,7 @@ static MACHINE_CONFIG_START( hexa, arkanoid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hexa)
+ MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_hexa)
MCFG_GFXDECODE(hexa)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c
index 6d69a25fb7f..adc126d88e5 100644
--- a/src/mame/drivers/armedf.c
+++ b/src/mame/drivers/armedf.c
@@ -1197,7 +1197,7 @@ static MACHINE_CONFIG_START( terraf, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1246,7 +1246,7 @@ static MACHINE_CONFIG_START( terrafb, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1290,7 +1290,7 @@ static MACHINE_CONFIG_START( kozure, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 ) // 320 x 240, trusted
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1334,7 +1334,7 @@ static MACHINE_CONFIG_START( armedf, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1378,7 +1378,7 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1422,7 +1422,7 @@ static MACHINE_CONFIG_START( legion, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1466,7 +1466,7 @@ static MACHINE_CONFIG_START( legiono, armedf_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
@@ -1523,7 +1523,7 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf)
- MCFG_SCREEN_UPDATE_STATIC(armedf)
+ MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(armedf)
diff --git a/src/mame/drivers/ashnojoe.c b/src/mame/drivers/ashnojoe.c
index 6bed7ee151e..15467971f7b 100644
--- a/src/mame/drivers/ashnojoe.c
+++ b/src/mame/drivers/ashnojoe.c
@@ -364,7 +364,7 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(14*8, 50*8-1, 3*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ashnojoe)
+ MCFG_SCREEN_UPDATE_DRIVER(ashnojoe_state, screen_update_ashnojoe)
MCFG_GFXDECODE(ashnojoe)
MCFG_PALETTE_LENGTH(0x1000/2)
diff --git a/src/mame/drivers/asterix.c b/src/mame/drivers/asterix.c
index 2ef76f54fdb..c329451a059 100644
--- a/src/mame/drivers/asterix.c
+++ b/src/mame/drivers/asterix.c
@@ -307,7 +307,7 @@ static MACHINE_CONFIG_START( asterix, asterix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(asterix)
+ MCFG_SCREEN_UPDATE_DRIVER(asterix_state, screen_update_asterix)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/astinvad.c b/src/mame/drivers/astinvad.c
index c01646523f0..f74835e4a43 100644
--- a/src/mame/drivers/astinvad.c
+++ b/src/mame/drivers/astinvad.c
@@ -81,6 +81,8 @@ public:
DECLARE_MACHINE_START(spaceint);
DECLARE_MACHINE_RESET(spaceint);
DECLARE_VIDEO_START(spaceint);
+ UINT32 screen_update_astinvad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_spaceint(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -167,36 +169,34 @@ static void plot_byte( running_machine &machine, bitmap_rgb32 &bitmap, UINT8 y,
}
-static SCREEN_UPDATE_RGB32( astinvad )
+UINT32 astinvad_state::screen_update_astinvad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- astinvad_state *state = screen.machine().driver_data<astinvad_state>();
- const UINT8 *color_prom = state->memregion("proms")->base();
- UINT8 yoffs = state->m_flip_yoffs & state->m_screen_flip;
+ const UINT8 *color_prom = memregion("proms")->base();
+ UINT8 yoffs = m_flip_yoffs & m_screen_flip;
int x, y;
/* render the visible pixels */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
for (x = cliprect.min_x & ~7; x <= cliprect.max_x; x += 8)
{
- UINT8 color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (state->m_screen_flip ? 0 : 4);
- UINT8 data = state->m_videoram[(((y ^ state->m_screen_flip) + yoffs) << 5) | ((x ^ state->m_screen_flip) >> 3)];
- plot_byte(screen.machine(), bitmap, y, x, data, state->m_screen_red ? 1 : color);
+ UINT8 color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (m_screen_flip ? 0 : 4);
+ UINT8 data = m_videoram[(((y ^ m_screen_flip) + yoffs) << 5) | ((x ^ m_screen_flip) >> 3)];
+ plot_byte(screen.machine(), bitmap, y, x, data, m_screen_red ? 1 : color);
}
return 0;
}
-static SCREEN_UPDATE_RGB32( spaceint )
+UINT32 astinvad_state::screen_update_spaceint(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- astinvad_state *state = screen.machine().driver_data<astinvad_state>();
- const UINT8 *color_prom = state->memregion("proms")->base();
+ const UINT8 *color_prom = memregion("proms")->base();
int offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
- UINT8 data = state->m_videoram[offs];
- UINT8 color = state->m_colorram[offs];
+ UINT8 data = m_videoram[offs];
+ UINT8 color = m_colorram[offs];
UINT8 y = ~offs;
UINT8 x = offs >> 8 << 3;
@@ -601,7 +601,7 @@ static MACHINE_CONFIG_START( kamikaze, astinvad_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 256, 32, 256)
- MCFG_SCREEN_UPDATE_STATIC(astinvad)
+ MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_astinvad)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -637,7 +637,7 @@ static MACHINE_CONFIG_START( spaceint, astinvad_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(spaceint)
+ MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_spaceint)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index 074995f8b10..9e404c1fae2 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -1298,7 +1298,7 @@ static MACHINE_CONFIG_START( astrocade_base, astrocde_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240)
MCFG_SCREEN_DEFAULT_POSITION(1.1, 0.0, 1.18, -0.018) /* clip out borders */
- MCFG_SCREEN_UPDATE_STATIC(astrocde)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocde_state, screen_update_astrocde)
MACHINE_CONFIG_END
@@ -1315,7 +1315,7 @@ static MACHINE_CONFIG_DERIVED( astrocade_16color_base, astrocade_base )
MCFG_VIDEO_START_OVERRIDE(astrocde_state,profpac)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(profpac)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocde_state, screen_update_profpac)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/astrocorp.c b/src/mame/drivers/astrocorp.c
index d4c724cf22e..84198b42790 100644
--- a/src/mame/drivers/astrocorp.c
+++ b/src/mame/drivers/astrocorp.c
@@ -64,6 +64,7 @@ public:
DECLARE_DRIVER_INIT(showhanc);
DECLARE_DRIVER_INIT(showhand);
DECLARE_VIDEO_START(astrocorp);
+ UINT32 screen_update_astrocorp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/***************************************************************************
@@ -150,12 +151,11 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16(astrocorp)
+UINT32 astrocorp_state::screen_update_astrocorp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- astrocorp_state *state = screen.machine().driver_data<astrocorp_state>();
- if (state->m_screen_enable & 1)
- copybitmap(bitmap, state->m_bitmap, 0,0,0,0, cliprect);
+ if (m_screen_enable & 1)
+ copybitmap(bitmap, m_bitmap, 0,0,0,0, cliprect);
else
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -487,7 +487,7 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(astrocorp)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
MCFG_GFXDECODE(astrocorp)
MCFG_PALETTE_LENGTH(0x100)
@@ -538,7 +538,7 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x200-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(astrocorp)
+ MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
MCFG_GFXDECODE(astrocorp)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/astrof.c b/src/mame/drivers/astrof.c
index 7039cec625a..07d09b1e736 100644
--- a/src/mame/drivers/astrof.c
+++ b/src/mame/drivers/astrof.c
@@ -413,7 +413,7 @@ static void video_update_common( running_machine &machine, bitmap_rgb32 &bitmap,
}
-static SCREEN_UPDATE_RGB32( astrof )
+UINT32 astrof_state::screen_update_astrof(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
pen_t pens[ASTROF_NUM_PENS];
@@ -425,7 +425,7 @@ static SCREEN_UPDATE_RGB32( astrof )
}
-static SCREEN_UPDATE_RGB32( tomahawk )
+UINT32 astrof_state::screen_update_tomahawk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
pen_t pens[TOMAHAWK_NUM_PENS];
@@ -962,7 +962,7 @@ static MACHINE_CONFIG_DERIVED( astrof, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(astrof)
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_astrof)
/* audio hardware */
MCFG_FRAGMENT_ADD(astrof_audio)
@@ -988,7 +988,7 @@ static MACHINE_CONFIG_DERIVED( spfghmk2, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(astrof)
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_astrof)
/* audio hardware */
MCFG_FRAGMENT_ADD(spfghmk2_audio)
@@ -1005,7 +1005,7 @@ static MACHINE_CONFIG_DERIVED( tomahawk, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(tomahawk)
+ MCFG_SCREEN_UPDATE_DRIVER(astrof_state, screen_update_tomahawk)
/* audio hardware */
MCFG_FRAGMENT_ADD(tomahawk_audio)
diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c
index e4aca9360e0..ae6f37a6c38 100644
--- a/src/mame/drivers/asuka.c
+++ b/src/mame/drivers/asuka.c
@@ -870,13 +870,12 @@ void asuka_state::machine_reset()
memset(m_cval, 0, 26);
}
-static SCREEN_VBLANK( asuka )
+void asuka_state::screen_eof_asuka(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- asuka_state *state = screen.machine().driver_data<asuka_state>();
- pc090oj_eof_callback(state->m_pc090oj);
+ pc090oj_eof_callback(m_pc090oj);
}
}
@@ -911,8 +910,8 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_bonzeadv)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -954,8 +953,8 @@ static MACHINE_CONFIG_START( asuka, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -1004,8 +1003,8 @@ static MACHINE_CONFIG_START( cadash, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_bonzeadv)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -1046,8 +1045,8 @@ static MACHINE_CONFIG_START( mofflott, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
@@ -1092,8 +1091,8 @@ static MACHINE_CONFIG_START( galmedes, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
@@ -1134,8 +1133,8 @@ static MACHINE_CONFIG_START( eto, asuka_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_VBLANK_STATIC(asuka)
+ MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka)
+ MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/atarifb.c b/src/mame/drivers/atarifb.c
index b59119ce99b..335c2460b34 100644
--- a/src/mame/drivers/atarifb.c
+++ b/src/mame/drivers/atarifb.c
@@ -564,7 +564,7 @@ static MACHINE_CONFIG_START( atarifb, atarifb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2037) /* 16.3ms * 1/8 = 2037.5. Is it 1/8th or 3/32nds? (1528?) */)
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 38*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(atarifb)
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_atarifb)
MCFG_GFXDECODE(atarifb)
MCFG_PALETTE_LENGTH(12)
@@ -595,7 +595,7 @@ static MACHINE_CONFIG_DERIVED( abaseb, atarifb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(abaseb)
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_abaseb)
/* sound hardware */
MCFG_SOUND_REPLACE("discrete", DISCRETE, 0)
@@ -613,7 +613,7 @@ static MACHINE_CONFIG_DERIVED( soccer, atarifb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 38*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(soccer)
+ MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_soccer)
MCFG_GFXDECODE(soccer)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index 09618e0f558..1c2281f0212 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -463,8 +463,8 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
MCFG_SCREEN_ADD("screen", RASTER)
/* note: these parameters are from published specs, not derived */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atarig1)
- MCFG_SCREEN_VBLANK_STATIC(atarig1)
+ MCFG_SCREEN_UPDATE_DRIVER(atarig1_state, screen_update_atarig1)
+ MCFG_SCREEN_VBLANK_DRIVER(atarig1_state, screen_eof_atarig1)
MCFG_VIDEO_START_OVERRIDE(atarig1_state,atarig1)
diff --git a/src/mame/drivers/atarig42.c b/src/mame/drivers/atarig42.c
index fc2d3b16c80..12d9f12eb5a 100644
--- a/src/mame/drivers/atarig42.c
+++ b/src/mame/drivers/atarig42.c
@@ -569,8 +569,8 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atarig42)
- MCFG_SCREEN_VBLANK_STATIC(atarig42)
+ MCFG_SCREEN_UPDATE_DRIVER(atarig42_state, screen_update_atarig42)
+ MCFG_SCREEN_VBLANK_DRIVER(atarig42_state, screen_eof_atarig42)
MCFG_VIDEO_START_OVERRIDE(atarig42_state,atarig42)
diff --git a/src/mame/drivers/atarigt.c b/src/mame/drivers/atarigt.c
index f2b70528324..e4869b338e8 100644
--- a/src/mame/drivers/atarigt.c
+++ b/src/mame/drivers/atarigt.c
@@ -826,8 +826,8 @@ static MACHINE_CONFIG_START( atarigt, atarigt_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a pair of GALs to determine H and V parameters */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atarigt)
- MCFG_SCREEN_VBLANK_STATIC(atarigt)
+ MCFG_SCREEN_UPDATE_DRIVER(atarigt_state, screen_update_atarigt)
+ MCFG_SCREEN_VBLANK_DRIVER(atarigt_state, screen_eof_atarigt)
MCFG_VIDEO_START_OVERRIDE(atarigt_state,atarigt)
diff --git a/src/mame/drivers/atarigx2.c b/src/mame/drivers/atarigx2.c
index 326dea91a2c..8f93e26edbd 100644
--- a/src/mame/drivers/atarigx2.c
+++ b/src/mame/drivers/atarigx2.c
@@ -1446,8 +1446,8 @@ static MACHINE_CONFIG_START( atarigx2, atarigx2_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a pair of GALs to determine H and V parameters */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atarigx2)
- MCFG_SCREEN_VBLANK_STATIC(atarigx2)
+ MCFG_SCREEN_UPDATE_DRIVER(atarigx2_state, screen_update_atarigx2)
+ MCFG_SCREEN_VBLANK_DRIVER(atarigx2_state, screen_eof_atarigx2)
MCFG_VIDEO_START_OVERRIDE(atarigx2_state,atarigx2)
diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c
index d3f9ad222d4..ada267edfc7 100644
--- a/src/mame/drivers/atarisy1.c
+++ b/src/mame/drivers/atarisy1.c
@@ -785,7 +785,7 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
/* note: these parameters are from published specs, not derived */
/* video timing comes from an 82S163 (H) and an 82S129 (V) */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atarisy1)
+ MCFG_SCREEN_UPDATE_DRIVER(atarisy1_state, screen_update_atarisy1)
MCFG_VIDEO_START_OVERRIDE(atarisy1_state,atarisy1)
diff --git a/src/mame/drivers/atarisy2.c b/src/mame/drivers/atarisy2.c
index d7e33dadbdb..dd03234c812 100644
--- a/src/mame/drivers/atarisy2.c
+++ b/src/mame/drivers/atarisy2.c
@@ -1279,7 +1279,7 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 640, 0, 512, 416, 0, 384)
- MCFG_SCREEN_UPDATE_STATIC(atarisy2)
+ MCFG_SCREEN_UPDATE_DRIVER(atarisy2_state, screen_update_atarisy2)
MCFG_VIDEO_START_OVERRIDE(atarisy2_state,atarisy2)
diff --git a/src/mame/drivers/atarisy4.c b/src/mame/drivers/atarisy4.c
index 353939fecd4..af85a7cb49e 100644
--- a/src/mame/drivers/atarisy4.c
+++ b/src/mame/drivers/atarisy4.c
@@ -58,6 +58,7 @@ public:
virtual void video_start();
virtual void video_reset();
DECLARE_MACHINE_RESET(airrace);
+ UINT32 screen_update_atarisy4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -155,9 +156,8 @@ void atarisy4_state::video_reset()
gpu.vblank_wait = 0;
}
-static SCREEN_UPDATE_RGB32( atarisy4 )
+UINT32 atarisy4_state::screen_update_atarisy4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- atarisy4_state *state = screen.machine().driver_data<atarisy4_state>();
int y;
UINT32 offset = 0;
@@ -174,7 +174,7 @@ static SCREEN_UPDATE_RGB32( atarisy4 )
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- UINT16 *src = &state->m_screen_ram[(offset + (4096 * y)) / 2];
+ UINT16 *src = &m_screen_ram[(offset + (4096 * y)) / 2];
UINT32 *dest = &bitmap.pix32(y, cliprect.min_x);
int x;
@@ -740,7 +740,7 @@ static MACHINE_CONFIG_START( atarisy4, atarisy4_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(32000000/2, 660, 0, 512, 404, 0, 384)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
- MCFG_SCREEN_UPDATE_STATIC(atarisy4)
+ MCFG_SCREEN_UPDATE_DRIVER(atarisy4_state, screen_update_atarisy4)
MCFG_PALETTE_LENGTH(256)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 23309f483e7..6ec79b58832 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -354,7 +354,7 @@ static MACHINE_CONFIG_START( atetris, atetris_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atetris)
+ MCFG_SCREEN_UPDATE_DRIVER(atetris_state, screen_update_atetris)
/* sound hardware */
@@ -386,7 +386,7 @@ static MACHINE_CONFIG_START( atetrisb2, atetris_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(atetris)
+ MCFG_SCREEN_UPDATE_DRIVER(atetris_state, screen_update_atetris)
/* sound hardware */
diff --git a/src/mame/drivers/atlantis.c b/src/mame/drivers/atlantis.c
index 9f2ee47543a..5ae2fa314eb 100644
--- a/src/mame/drivers/atlantis.c
+++ b/src/mame/drivers/atlantis.c
@@ -48,6 +48,7 @@ public:
DECLARE_DRIVER_INIT(mwskins);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_mwskins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -85,7 +86,7 @@ void atlantis_state::machine_reset()
*
*************************************/
-static SCREEN_UPDATE_IND16( mwskins )
+UINT32 atlantis_state::screen_update_mwskins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -166,7 +167,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(mwskins)
+ MCFG_SCREEN_UPDATE_DRIVER(atlantis_state, screen_update_mwskins)
MCFG_PALETTE_INIT(BBBBB_GGGGG_RRRRR)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/atvtrack.c b/src/mame/drivers/atvtrack.c
index 144907e50b7..76dc617eaf4 100644
--- a/src/mame/drivers/atvtrack.c
+++ b/src/mame/drivers/atvtrack.c
@@ -85,6 +85,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_atvtrack(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
static void logbinary(UINT32 data,int high=31,int low=0)
@@ -318,7 +319,7 @@ void atvtrack_state::video_start()
{
}
-SCREEN_UPDATE_RGB32(atvtrack)
+UINT32 atvtrack_state::screen_update_atvtrack(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -401,7 +402,7 @@ static MACHINE_CONFIG_START( atvtrack, atvtrack_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_STATIC(atvtrack)
+ MCFG_SCREEN_UPDATE_DRIVER(atvtrack_state, screen_update_atvtrack)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/avalnche.c b/src/mame/drivers/avalnche.c
index 635b8b7c1af..8a0eecc22c4 100644
--- a/src/mame/drivers/avalnche.c
+++ b/src/mame/drivers/avalnche.c
@@ -44,24 +44,23 @@
*
*************************************/
-static SCREEN_UPDATE_RGB32( avalnche )
+UINT32 avalnche_state::screen_update_avalnche(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- avalnche_state *state = screen.machine().driver_data<avalnche_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 x = offs << 3;
int y = offs >> 5;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
pen_t pen;
- if (state->m_avalance_video_inverted)
+ if (m_avalance_video_inverted)
pen = (data & 0x80) ? RGB_WHITE : RGB_BLACK;
else
pen = (data & 0x80) ? RGB_BLACK : RGB_WHITE;
@@ -258,7 +257,7 @@ static MACHINE_CONFIG_START( avalnche, avalnche_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(avalnche)
+ MCFG_SCREEN_UPDATE_DRIVER(avalnche_state, screen_update_avalnche)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/avt.c b/src/mame/drivers/avt.c
index 477a6c82b65..08fe2374178 100644
--- a/src/mame/drivers/avt.c
+++ b/src/mame/drivers/avt.c
@@ -444,15 +444,16 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_avt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
#define mc6845_h_char_total (state->m_crtc_vreg[0])
-#define mc6845_h_display (state->m_crtc_vreg[1])
+#define mc6845_h_display (m_crtc_vreg[1])
#define mc6845_h_sync_pos (state->m_crtc_vreg[2])
#define mc6845_sync_width (state->m_crtc_vreg[3])
#define mc6845_v_char_total (state->m_crtc_vreg[4])
#define mc6845_v_total_adj (state->m_crtc_vreg[5])
-#define mc6845_v_display (state->m_crtc_vreg[6])
+#define mc6845_v_display (m_crtc_vreg[6])
#define mc6845_v_sync_pos (state->m_crtc_vreg[7])
#define mc6845_mode_ctrl (state->m_crtc_vreg[8])
#define mc6845_tile_height (state->m_crtc_vreg[9]+1)
@@ -504,9 +505,8 @@ void avt_state::video_start()
}
-static SCREEN_UPDATE_IND16( avt )
+UINT32 avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- avt_state *state = screen.machine().driver_data<avt_state>();
int x,y;
int count;
gfx_element *gfx = screen.machine().gfx[0];
@@ -517,15 +517,15 @@ static SCREEN_UPDATE_IND16( avt )
{
for(x=0;x<mc6845_h_display;x++)
{
- UINT16 tile = state->m_videoram[count] | ((state->m_colorram[count] & 1) << 8);
- UINT8 color = (state->m_colorram[count] & 0xf0) >> 4;
+ UINT16 tile = m_videoram[count] | ((m_colorram[count] & 1) << 8);
+ UINT8 color = (m_colorram[count] & 0xf0) >> 4;
drawgfx_opaque(bitmap,cliprect,gfx,tile,color,0,0,x*8,(y*8));
count++;
}
}
- //state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ //m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -902,7 +902,7 @@ static MACHINE_CONFIG_START( avt, avt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* 240x224 (through CRTC) */
- MCFG_SCREEN_UPDATE_STATIC(avt)
+ MCFG_SCREEN_UPDATE_DRIVER(avt_state, screen_update_avt)
MCFG_GFXDECODE(avt)
diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c
index 1b841dd01d4..341497d942c 100644
--- a/src/mame/drivers/backfire.c
+++ b/src/mame/drivers/backfire.c
@@ -79,6 +79,8 @@ public:
DECLARE_DRIVER_INIT(backfire);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_backfire_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_backfire_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
//UINT32 *backfire_180010, *backfire_188010;
@@ -108,68 +110,66 @@ void backfire_state::video_start()
-static SCREEN_UPDATE_IND16( backfire_left )
+UINT32 backfire_state::screen_update_backfire_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- backfire_state *state = screen.machine().driver_data<backfire_state>();
//FIXME: flip_screen_x should not be written!
- state->flip_screen_set_no_update(1);
+ flip_screen_set_no_update(1);
/* screen 1 uses pf1 as the forground and pf3 as the background */
/* screen 2 uses pf2 as the foreground and pf4 as the background */
- deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
- deco16ic_pf_update(state->m_deco_tilegen2, state->m_pf3_rowscroll, state->m_pf4_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen2, m_pf3_rowscroll, m_pf4_rowscroll);
screen.machine().priority_bitmap.fill(0);
bitmap.fill(0x100, cliprect);
- if (state->m_left_priority[0] == 0)
+ if (m_left_priority[0] == 0)
{
- deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 1);
- deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram_1, 0x800);
+ deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 1);
+ deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800);
}
- else if (state->m_left_priority[0] == 2)
+ else if (m_left_priority[0] == 2)
{
- deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 4);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram_1, 0x800);
+ deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2);
+ deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 4);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800);
}
else
- popmessage( "unknown left priority %08x", state->m_left_priority[0]);
+ popmessage( "unknown left priority %08x", m_left_priority[0]);
return 0;
}
-static SCREEN_UPDATE_IND16( backfire_right )
+UINT32 backfire_state::screen_update_backfire_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- backfire_state *state = screen.machine().driver_data<backfire_state>();
//FIXME: flip_screen_x should not be written!
- state->flip_screen_set_no_update(1);
+ flip_screen_set_no_update(1);
/* screen 1 uses pf1 as the forground and pf3 as the background */
/* screen 2 uses pf2 as the foreground and pf4 as the background */
- deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
- deco16ic_pf_update(state->m_deco_tilegen2, state->m_pf3_rowscroll, state->m_pf4_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen2, m_pf3_rowscroll, m_pf4_rowscroll);
screen.machine().priority_bitmap.fill(0);
bitmap.fill(0x500, cliprect);
- if (state->m_right_priority[0] == 0)
+ if (m_right_priority[0] == 0)
{
- deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 1);
- deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram_2, 0x800);
+ deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, 0, 1);
+ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, m_spriteram_2, 0x800);
}
- else if (state->m_right_priority[0] == 2)
+ else if (m_right_priority[0] == 2)
{
- deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 4);
- screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram_2, 0x800);
+ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2);
+ deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, 0, 4);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, m_spriteram_2, 0x800);
}
else
- popmessage( "unknown right priority %08x", state->m_right_priority[0]);
+ popmessage( "unknown right priority %08x", m_right_priority[0]);
return 0;
}
@@ -515,14 +515,14 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(backfire_left)
+ MCFG_SCREEN_UPDATE_DRIVER(backfire_state, screen_update_backfire_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(backfire_right)
+ MCFG_SCREEN_UPDATE_DRIVER(backfire_state, screen_update_backfire_right)
MCFG_DECO16IC_ADD("tilegen1", backfire_deco16ic_tilegen1_intf)
diff --git a/src/mame/drivers/badlands.c b/src/mame/drivers/badlands.c
index 5b77846ca52..27391d806e3 100644
--- a/src/mame/drivers/badlands.c
+++ b/src/mame/drivers/badlands.c
@@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( badlands, badlands_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(badlands)
+ MCFG_SCREEN_UPDATE_DRIVER(badlands_state, screen_update_badlands)
MCFG_VIDEO_START_OVERRIDE(badlands_state,badlands)
@@ -726,7 +726,7 @@ static MACHINE_CONFIG_START( badlandsb, badlands_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(badlands)
+ MCFG_SCREEN_UPDATE_DRIVER(badlands_state, screen_update_badlands)
MCFG_VIDEO_START_OVERRIDE(badlands_state,badlands)
diff --git a/src/mame/drivers/bagman.c b/src/mame/drivers/bagman.c
index d48ae7d3de9..ebdba31fb80 100644
--- a/src/mame/drivers/bagman.c
+++ b/src/mame/drivers/bagman.c
@@ -484,7 +484,7 @@ static MACHINE_CONFIG_START( bagman, bagman_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BAGMAN_HCLK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(bagman)
+ MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE(bagman)
MCFG_PALETTE_LENGTH(64)
@@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( pickin, bagman_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BAGMAN_HCLK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(bagman)
+ MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE(pickin)
MCFG_PALETTE_LENGTH(64)
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( botanic, bagman_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BAGMAN_HCLK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(bagman)
+ MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE(bagman)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c
index 39e53042375..31387d9675d 100644
--- a/src/mame/drivers/balsente.c
+++ b/src/mame/drivers/balsente.c
@@ -1222,7 +1222,7 @@ static MACHINE_CONFIG_START( balsente, balsente_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BALSENTE_PIXEL_CLOCK, BALSENTE_HTOTAL, BALSENTE_HBEND, BALSENTE_HBSTART, BALSENTE_VTOTAL, BALSENTE_VBEND, BALSENTE_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(balsente)
+ MCFG_SCREEN_UPDATE_DRIVER(balsente_state, screen_update_balsente)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/bankp.c b/src/mame/drivers/bankp.c
index 47bde28cf22..d426a6cc7e5 100644
--- a/src/mame/drivers/bankp.c
+++ b/src/mame/drivers/bankp.c
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( bankp, bankp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(bankp)
+ MCFG_SCREEN_UPDATE_DRIVER(bankp_state, screen_update_bankp)
MCFG_GFXDECODE(bankp)
MCFG_PALETTE_LENGTH(32*4+16*8)
diff --git a/src/mame/drivers/baraduke.c b/src/mame/drivers/baraduke.c
index c0fcae8e5ba..1538d242146 100644
--- a/src/mame/drivers/baraduke.c
+++ b/src/mame/drivers/baraduke.c
@@ -394,8 +394,8 @@ static MACHINE_CONFIG_START( baraduke, baraduke_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(baraduke)
- MCFG_SCREEN_VBLANK_STATIC(baraduke)
+ MCFG_SCREEN_UPDATE_DRIVER(baraduke_state, screen_update_baraduke)
+ MCFG_SCREEN_VBLANK_DRIVER(baraduke_state, screen_eof_baraduke)
MCFG_GFXDECODE(baraduke)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/batman.c b/src/mame/drivers/batman.c
index a5c53f052cd..ec1da1ba80d 100644
--- a/src/mame/drivers/batman.c
+++ b/src/mame/drivers/batman.c
@@ -248,7 +248,7 @@ static MACHINE_CONFIG_START( batman, batman_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(batman)
+ MCFG_SCREEN_UPDATE_DRIVER(batman_state, screen_update_batman)
MCFG_VIDEO_START_OVERRIDE(batman_state,batman)
diff --git a/src/mame/drivers/battlane.c b/src/mame/drivers/battlane.c
index b801bc1c609..e06e0e30147 100644
--- a/src/mame/drivers/battlane.c
+++ b/src/mame/drivers/battlane.c
@@ -303,7 +303,7 @@ static MACHINE_CONFIG_START( battlane, battlane_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32 * 8, 32 * 8)
MCFG_SCREEN_VISIBLE_AREA(1 * 8, 31 * 8 - 1, 0 * 8, 32 * 8 - 1)
- MCFG_SCREEN_UPDATE_STATIC(battlane)
+ MCFG_SCREEN_UPDATE_DRIVER(battlane_state, screen_update_battlane)
MCFG_GFXDECODE(battlane)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/battlera.c b/src/mame/drivers/battlera.c
index e3de7eedbcf..7e5fee8ab1f 100644
--- a/src/mame/drivers/battlera.c
+++ b/src/mame/drivers/battlera.c
@@ -245,7 +245,7 @@ static MACHINE_CONFIG_START( battlera, battlera_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(battlera)
+ MCFG_SCREEN_UPDATE_DRIVER(battlera_state, screen_update_battlera)
MCFG_GFXDECODE(battlera)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/battlex.c b/src/mame/drivers/battlex.c
index 4ff9b742cad..fa884738b5c 100644
--- a/src/mame/drivers/battlex.c
+++ b/src/mame/drivers/battlex.c
@@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( battlex, battlex_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(battlex)
+ MCFG_SCREEN_UPDATE_DRIVER(battlex_state, screen_update_battlex)
MCFG_GFXDECODE(battlex)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/battlnts.c b/src/mame/drivers/battlnts.c
index a1dd2153f81..febce81c0a1 100644
--- a/src/mame/drivers/battlnts.c
+++ b/src/mame/drivers/battlnts.c
@@ -260,7 +260,7 @@ static MACHINE_CONFIG_START( battlnts, battlnts_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(battlnts)
+ MCFG_SCREEN_UPDATE_DRIVER(battlnts_state, screen_update_battlnts)
MCFG_GFXDECODE(battlnts)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index dfe6f82070b..9e76a831418 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -659,11 +659,10 @@ static const ym2610_interface ym2610_config =
/******************************************************************************/
-static SCREEN_VBLANK( bbuster )
+void bbusters_state::screen_eof_bbuster(screen_device &screen, bool state)
{
- bbusters_state *state = screen.machine().driver_data<bbusters_state>();
- state->m_spriteram->vblank_copy_rising(screen, vblank_on);
- state->m_spriteram2->vblank_copy_rising(screen, vblank_on);
+ m_spriteram->vblank_copy_rising(screen, state);
+ m_spriteram2->vblank_copy_rising(screen, state);
}
static MACHINE_CONFIG_START( bbusters, bbusters_state )
@@ -684,8 +683,8 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bbuster)
- MCFG_SCREEN_VBLANK_STATIC(bbuster)
+ MCFG_SCREEN_UPDATE_DRIVER(bbusters_state, screen_update_bbuster)
+ MCFG_SCREEN_VBLANK_DRIVER(bbusters_state, screen_eof_bbuster)
MCFG_GFXDECODE(bbusters)
MCFG_PALETTE_LENGTH(2048)
@@ -722,7 +721,7 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mechatt)
+ MCFG_SCREEN_UPDATE_DRIVER(bbusters_state, screen_update_mechatt)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(mechatt)
diff --git a/src/mame/drivers/beaminv.c b/src/mame/drivers/beaminv.c
index 7bc565902af..41ff62ae6e3 100644
--- a/src/mame/drivers/beaminv.c
+++ b/src/mame/drivers/beaminv.c
@@ -79,6 +79,7 @@ public:
DECLARE_READ8_MEMBER(controller_r);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_beaminv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -168,18 +169,17 @@ void beaminv_state::machine_reset()
*
*************************************/
-static SCREEN_UPDATE_RGB32( beaminv )
+UINT32 beaminv_state::screen_update_beaminv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- beaminv_state *state = screen.machine().driver_data<beaminv_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 y = offs;
UINT8 x = offs >> 8 << 3;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -342,7 +342,7 @@ static MACHINE_CONFIG_START( beaminv, beaminv_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 247, 16, 231)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(beaminv)
+ MCFG_SCREEN_UPDATE_DRIVER(beaminv_state, screen_update_beaminv)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c
index 1fcb02f381f..2d226162015 100644
--- a/src/mame/drivers/beezer.c
+++ b/src/mame/drivers/beezer.c
@@ -99,7 +99,7 @@ static MACHINE_CONFIG_START( beezer, beezer_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(384, 256)
MCFG_SCREEN_VISIBLE_AREA(16, 304-1, 0, 240-1) // 288 x 240, correct?
- MCFG_SCREEN_UPDATE_STATIC(beezer)
+ MCFG_SCREEN_UPDATE_DRIVER(beezer_state, screen_update_beezer)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/berzerk.c b/src/mame/drivers/berzerk.c
index 1886939820e..60a7df61104 100644
--- a/src/mame/drivers/berzerk.c
+++ b/src/mame/drivers/berzerk.c
@@ -58,6 +58,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_berzerk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -455,20 +456,19 @@ static void get_pens(running_machine &machine, pen_t *pens)
}
-static SCREEN_UPDATE_RGB32( berzerk )
+UINT32 berzerk_state::screen_update_berzerk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- berzerk_state *state = screen.machine().driver_data<berzerk_state>();
pen_t pens[NUM_PENS];
offs_t offs;
get_pens(screen.machine(), pens);
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
- UINT8 data = state->m_videoram[offs];
- UINT8 color = state->m_colorram[((offs >> 2) & 0x07e0) | (offs & 0x001f)];
+ UINT8 data = m_videoram[offs];
+ UINT8 color = m_colorram[((offs >> 2) & 0x07e0) | (offs & 0x001f)];
UINT8 y = offs >> 5;
UINT8 x = offs << 3;
@@ -1092,7 +1092,7 @@ static MACHINE_CONFIG_START( berzerk, berzerk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(berzerk)
+ MCFG_SCREEN_UPDATE_DRIVER(berzerk_state, screen_update_berzerk)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bestleag.c b/src/mame/drivers/bestleag.c
index a9756a05c5d..5ee5209fb3f 100644
--- a/src/mame/drivers/bestleag.c
+++ b/src/mame/drivers/bestleag.c
@@ -51,6 +51,8 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILEMAP_MAPPER_MEMBER(bsb_bg_scan);
virtual void video_start();
+ UINT32 screen_update_bestleag(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_bestleaw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -172,37 +174,35 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
}
-static SCREEN_UPDATE_IND16(bestleag)
+UINT32 bestleag_state::screen_update_bestleag(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bestleag_state *state = screen.machine().driver_data<bestleag_state>();
- state->m_bg_tilemap->set_scrollx(0,(state->m_vregs[0x00/2] & 0xfff) + (state->m_vregs[0x08/2] & 0x7) - 3);
- state->m_bg_tilemap->set_scrolly(0,state->m_vregs[0x02/2]);
- state->m_tx_tilemap->set_scrollx(0,state->m_vregs[0x04/2]);
- state->m_tx_tilemap->set_scrolly(0,state->m_vregs[0x06/2]);
- state->m_fg_tilemap->set_scrollx(0,state->m_vregs[0x08/2] & 0xfff8);
- state->m_fg_tilemap->set_scrolly(0,state->m_vregs[0x0a/2]);
-
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->set_scrollx(0,(m_vregs[0x00/2] & 0xfff) + (m_vregs[0x08/2] & 0x7) - 3);
+ m_bg_tilemap->set_scrolly(0,m_vregs[0x02/2]);
+ m_tx_tilemap->set_scrollx(0,m_vregs[0x04/2]);
+ m_tx_tilemap->set_scrolly(0,m_vregs[0x06/2]);
+ m_fg_tilemap->set_scrollx(0,m_vregs[0x08/2] & 0xfff8);
+ m_fg_tilemap->set_scrolly(0,m_vregs[0x0a/2]);
+
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(),bitmap,cliprect);
- state->m_tx_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tx_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
-static SCREEN_UPDATE_IND16(bestleaw)
+UINT32 bestleag_state::screen_update_bestleaw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bestleag_state *state = screen.machine().driver_data<bestleag_state>();
- state->m_bg_tilemap->set_scrollx(0,state->m_vregs[0x08/2]);
- state->m_bg_tilemap->set_scrolly(0,state->m_vregs[0x0a/2]);
- state->m_tx_tilemap->set_scrollx(0,state->m_vregs[0x00/2]);
- state->m_tx_tilemap->set_scrolly(0,state->m_vregs[0x02/2]);
- state->m_fg_tilemap->set_scrollx(0,state->m_vregs[0x04/2]);
- state->m_fg_tilemap->set_scrolly(0,state->m_vregs[0x06/2]);
-
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->set_scrollx(0,m_vregs[0x08/2]);
+ m_bg_tilemap->set_scrolly(0,m_vregs[0x0a/2]);
+ m_tx_tilemap->set_scrollx(0,m_vregs[0x00/2]);
+ m_tx_tilemap->set_scrolly(0,m_vregs[0x02/2]);
+ m_fg_tilemap->set_scrollx(0,m_vregs[0x04/2]);
+ m_fg_tilemap->set_scrolly(0,m_vregs[0x06/2]);
+
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(),bitmap,cliprect);
- state->m_tx_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tx_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -372,7 +372,7 @@ static MACHINE_CONFIG_START( bestleag, bestleag_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bestleag)
+ MCFG_SCREEN_UPDATE_DRIVER(bestleag_state, screen_update_bestleag)
MCFG_GFXDECODE(bestleag)
MCFG_PALETTE_LENGTH(0x800)
@@ -387,7 +387,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bestleaw, bestleag )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(bestleaw)
+ MCFG_SCREEN_UPDATE_DRIVER(bestleag_state, screen_update_bestleaw)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index 032a3f545bc..887d3510992 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -299,6 +299,7 @@ public:
DECLARE_DRIVER_INIT(bfcobra);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_bfcobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -366,9 +367,8 @@ void bfcobra_state::video_start()
}
}
-static SCREEN_UPDATE_RGB32( bfcobra )
+UINT32 bfcobra_state::screen_update_bfcobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bfcobra_state *state = screen.machine().driver_data<bfcobra_state>();
int x, y;
UINT8 *src;
UINT32 *dest;
@@ -378,39 +378,39 @@ static SCREEN_UPDATE_RGB32( bfcobra )
/* Select screen has to be programmed into two registers */
/* No idea what happens if the registers are different */
- if (state->m_flip_8 & 0x40 && state->m_flip_22 & 0x40)
+ if (m_flip_8 & 0x40 && m_flip_22 & 0x40)
offset = 0x10000;
else
offset = 0;
- if(state->m_videomode & 0x20)
+ if(m_videomode & 0x20)
{
- hirescol = state->m_col3bit;
- lorescol = state->m_col7bit;
+ hirescol = m_col3bit;
+ lorescol = m_col7bit;
}
- else if(state->m_videomode & 0x40)
+ else if(m_videomode & 0x40)
{
- hirescol = state->m_col4bit;
- lorescol = state->m_col6bit;
+ hirescol = m_col4bit;
+ lorescol = m_col6bit;
}
else
{
- hirescol = state->m_col4bit;
- lorescol = state->m_col8bit;
+ hirescol = m_col4bit;
+ lorescol = m_col8bit;
}
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- UINT16 y_offset = (y + state->m_v_scroll) * 256;
- src = &state->m_video_ram[offset + y_offset];
+ UINT16 y_offset = (y + m_v_scroll) * 256;
+ src = &m_video_ram[offset + y_offset];
dest = &bitmap.pix32(y);
for (x = cliprect.min_x; x <= cliprect.max_x / 2; ++x)
{
- UINT8 x_offset = x + state->m_h_scroll;
+ UINT8 x_offset = x + m_h_scroll;
UINT8 pen = *(src + x_offset);
- if ( ( state->m_videomode & 0x81 ) == 1 || (state->m_videomode & 0x80 && pen & 0x80) )
+ if ( ( m_videomode & 0x81 ) == 1 || (m_videomode & 0x80 && pen & 0x80) )
{
*dest++ = screen.machine().pens[hirescol[pen & 0x0f]];
*dest++ = screen.machine().pens[hirescol[(pen >> 4) & 0x0f]];
@@ -1794,7 +1794,7 @@ static MACHINE_CONFIG_START( bfcobra, bfcobra_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 256 - 1)
- MCFG_SCREEN_UPDATE_STATIC(bfcobra)
+ MCFG_SCREEN_UPDATE_DRIVER(bfcobra_state, screen_update_bfcobra)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/bigevglf.c b/src/mame/drivers/bigevglf.c
index dee01456218..3c297d1cb82 100644
--- a/src/mame/drivers/bigevglf.c
+++ b/src/mame/drivers/bigevglf.c
@@ -519,7 +519,7 @@ static MACHINE_CONFIG_START( bigevglf, bigevglf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bigevglf)
+ MCFG_SCREEN_UPDATE_DRIVER(bigevglf_state, screen_update_bigevglf)
MCFG_GFXDECODE(bigevglf)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/bigstrkb.c b/src/mame/drivers/bigstrkb.c
index b3d496b7098..6a222ca54e4 100644
--- a/src/mame/drivers/bigstrkb.c
+++ b/src/mame/drivers/bigstrkb.c
@@ -207,7 +207,7 @@ static MACHINE_CONFIG_START( bigstrkb, bigstrkb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bigstrkb)
+ MCFG_SCREEN_UPDATE_DRIVER(bigstrkb_state, screen_update_bigstrkb)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/bingoc.c b/src/mame/drivers/bingoc.c
index 8715e85627b..507af29d7a4 100644
--- a/src/mame/drivers/bingoc.c
+++ b/src/mame/drivers/bingoc.c
@@ -46,6 +46,7 @@ public:
DECLARE_WRITE16_MEMBER(main_sound_latch_w);
DECLARE_WRITE8_MEMBER(bingoc_play_w);
virtual void video_start();
+ UINT32 screen_update_bingoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -56,7 +57,7 @@ void bingoc_state::video_start()
}
-static SCREEN_UPDATE_IND16(bingoc)
+UINT32 bingoc_state::screen_update_bingoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -160,7 +161,7 @@ static MACHINE_CONFIG_START( bingoc, bingoc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(bingoc)
+ MCFG_SCREEN_UPDATE_DRIVER(bingoc_state, screen_update_bingoc)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c
index f74486fe2f4..50d11ad684e 100644
--- a/src/mame/drivers/bingor.c
+++ b/src/mame/drivers/bingor.c
@@ -454,6 +454,7 @@ public:
DECLARE_READ16_MEMBER(test_r);
DECLARE_READ8_MEMBER(test8_r);
virtual void video_start();
+ UINT32 screen_update_bingor(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -461,9 +462,8 @@ void bingor_state::video_start()
{
}
-static SCREEN_UPDATE_RGB32(bingor)
+UINT32 bingor_state::screen_update_bingor(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bingor_state *state = screen.machine().driver_data<bingor_state>();
int x,y,count;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -476,22 +476,22 @@ static SCREEN_UPDATE_RGB32(bingor)
{
UINT32 color;
- color = (state->m_blit_ram[count] & 0xf000)>>12;
+ color = (m_blit_ram[count] & 0xf000)>>12;
if(cliprect.contains(x+3, y))
bitmap.pix32(y, x+3) = screen.machine().pens[color];
- color = (state->m_blit_ram[count] & 0x0f00)>>8;
+ color = (m_blit_ram[count] & 0x0f00)>>8;
if(cliprect.contains(x+2, y))
bitmap.pix32(y, x+2) = screen.machine().pens[color];
- color = (state->m_blit_ram[count] & 0x00f0)>>4;
+ color = (m_blit_ram[count] & 0x00f0)>>4;
if(cliprect.contains(x+1, y))
bitmap.pix32(y, x+1) = screen.machine().pens[color];
- color = (state->m_blit_ram[count] & 0x000f)>>0;
+ color = (m_blit_ram[count] & 0x000f)>>0;
if(cliprect.contains(x+0, y))
bitmap.pix32(y, x+0) = screen.machine().pens[color];
@@ -635,7 +635,7 @@ static MACHINE_CONFIG_START( bingor, bingor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
- MCFG_SCREEN_UPDATE_STATIC(bingor)
+ MCFG_SCREEN_UPDATE_DRIVER(bingor_state, screen_update_bingor)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index 04e4785a47a..8985f7bad24 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -371,7 +371,7 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bionicc)
+ MCFG_SCREEN_UPDATE_DRIVER(bionicc_state, screen_update_bionicc)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(bionicc)
diff --git a/src/mame/drivers/bishi.c b/src/mame/drivers/bishi.c
index 61f3e0dbaeb..a09fad44e49 100644
--- a/src/mame/drivers/bishi.c
+++ b/src/mame/drivers/bishi.c
@@ -422,7 +422,7 @@ static MACHINE_CONFIG_START( bishi, bishi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(29, 29+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(bishi)
+ MCFG_SCREEN_UPDATE_DRIVER(bishi_state, screen_update_bishi)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/bking.c b/src/mame/drivers/bking.c
index f136636ba05..3a7fc0da52a 100644
--- a/src/mame/drivers/bking.c
+++ b/src/mame/drivers/bking.c
@@ -485,8 +485,8 @@ static MACHINE_CONFIG_START( bking, bking_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bking)
- MCFG_SCREEN_VBLANK_STATIC(bking)
+ MCFG_SCREEN_UPDATE_DRIVER(bking_state, screen_update_bking)
+ MCFG_SCREEN_VBLANK_DRIVER(bking_state, screen_eof_bking)
MCFG_GFXDECODE(bking)
MCFG_PALETTE_LENGTH(4*8+4*4+4*2+4*2)
diff --git a/src/mame/drivers/blackt96.c b/src/mame/drivers/blackt96.c
index 352d4215baa..fcdea2270f5 100644
--- a/src/mame/drivers/blackt96.c
+++ b/src/mame/drivers/blackt96.c
@@ -131,6 +131,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg6_tile_info);
TILE_GET_INFO_MEMBER(get_bg7_tile_info);
virtual void video_start();
+ UINT32 screen_update_blackt96(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
#define GET_INFO( ram ) \
@@ -227,9 +228,8 @@ static void draw_strip(running_machine &machine, bitmap_ind16 &bitmap, const rec
}
-static SCREEN_UPDATE_IND16( blackt96 )
+UINT32 blackt96_state::screen_update_blackt96(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- blackt96_state *state = screen.machine().driver_data<blackt96_state>();
int count;
int x,y;
gfx_element *gfx = screen.machine().gfx[2];
@@ -263,7 +263,7 @@ static SCREEN_UPDATE_IND16( blackt96 )
{
for (y=0;y<32;y++)
{
- UINT16 tile = (state->m_tilemapram[count*2]&0x7ff)+0x800; // +0xc00 for korean text
+ UINT16 tile = (m_tilemapram[count*2]&0x7ff)+0x800; // +0xc00 for korean text
drawgfx_transpen(bitmap,cliprect,gfx,tile,0,0,0,x*8,-16+y*8,0);
count++;
}
@@ -621,7 +621,7 @@ static MACHINE_CONFIG_START( blackt96, blackt96_state )
MCFG_SCREEN_SIZE(256, 256)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 16*32-1, 0*8, 16*32-1)
MCFG_SCREEN_VISIBLE_AREA(0*8, 256-1, 0*8, 208-1)
- MCFG_SCREEN_UPDATE_STATIC(blackt96)
+ MCFG_SCREEN_UPDATE_DRIVER(blackt96_state, screen_update_blackt96)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/bladestl.c b/src/mame/drivers/bladestl.c
index 2e612ac28e5..dcca2ed97d5 100644
--- a/src/mame/drivers/bladestl.c
+++ b/src/mame/drivers/bladestl.c
@@ -347,7 +347,7 @@ static MACHINE_CONFIG_START( bladestl, bladestl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bladestl)
+ MCFG_SCREEN_UPDATE_DRIVER(bladestl_state, screen_update_bladestl)
MCFG_GFXDECODE(bladestl)
MCFG_PALETTE_LENGTH(32 + 16*16)
diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c
index 53fd019dfb2..a192c1a304e 100644
--- a/src/mame/drivers/blitz.c
+++ b/src/mame/drivers/blitz.c
@@ -313,6 +313,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_megadpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -359,10 +360,9 @@ void blitz_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(blitz_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( megadpkr )
+UINT32 blitz_state::screen_update_megadpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- blitz_state *state = screen.machine().driver_data<blitz_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -810,7 +810,7 @@ static MACHINE_CONFIG_START( megadpkr, blitz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megadpkr)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz_state, screen_update_megadpkr)
MCFG_MC6845_ADD("crtc", MC6845, CPU_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/blitz68k.c b/src/mame/drivers/blitz68k.c
index 6e701be6207..e9d07d6c874 100644
--- a/src/mame/drivers/blitz68k.c
+++ b/src/mame/drivers/blitz68k.c
@@ -173,6 +173,8 @@ public:
DECLARE_DRIVER_INIT(dualgame);
DECLARE_VIDEO_START(blitz68k);
DECLARE_VIDEO_START(blitz68k_addr_factor1);
+ UINT32 screen_update_blitz68k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_blitz68k_noblit(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
/*************************************************************************************************************
@@ -206,12 +208,11 @@ VIDEO_START_MEMBER(blitz68k_state,blitz68k_addr_factor1)
blit.addr_factor = 1;
}
-static SCREEN_UPDATE_RGB32(blitz68k)
+UINT32 blitz68k_state::screen_update_blitz68k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- blitz68k_state *state = screen.machine().driver_data<blitz68k_state>();
int x,y;
- UINT8 *src = state->m_blit_buffer;
+ UINT8 *src = m_blit_buffer;
for(y = 0; y < 256; y++)
{
@@ -227,12 +228,11 @@ static SCREEN_UPDATE_RGB32(blitz68k)
// Blitter-less board (SPI-68K)
-static SCREEN_UPDATE_RGB32(blitz68k_noblit)
+UINT32 blitz68k_state::screen_update_blitz68k_noblit(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- blitz68k_state *state = screen.machine().driver_data<blitz68k_state>();
int x,y;
- UINT16 *src = state->m_frame_buffer;
+ UINT16 *src = m_frame_buffer;
for(y = 0; y < 256; y++)
{
@@ -1722,7 +1722,7 @@ static MACHINE_CONFIG_START( ilpag, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -1797,7 +1797,7 @@ static MACHINE_CONFIG_START( cjffruit, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-8-1)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", R6545_1, XTAL_22_1184MHz/8, mc6845_intf_irq1)
@@ -1829,7 +1829,7 @@ static MACHINE_CONFIG_START( bankrob, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq3)
@@ -1859,7 +1859,7 @@ static MACHINE_CONFIG_START( bankroba, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+7, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq5)
@@ -1888,7 +1888,7 @@ static MACHINE_CONFIG_START( deucesw2, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", R6545_1, XTAL_22_1184MHz/8, mc6845_intf_irq3)
@@ -1919,7 +1919,7 @@ static MACHINE_CONFIG_START( dualgame, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq3)
@@ -1948,7 +1948,7 @@ static MACHINE_CONFIG_START( hermit, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_22_1184MHz/8, mc6845_intf_irq1)
@@ -1982,7 +1982,7 @@ static MACHINE_CONFIG_START( maxidbl, blitz68k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(blitz68k_noblit)
+ MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k_noblit)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq3)
diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c
index 4ea40332110..29b464b094e 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -334,7 +334,7 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(blktiger)
+ MCFG_SCREEN_UPDATE_DRIVER(blktiger_state, screen_update_blktiger)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(blktiger)
diff --git a/src/mame/drivers/blmbycar.c b/src/mame/drivers/blmbycar.c
index 840572d22d7..a023fa62425 100644
--- a/src/mame/drivers/blmbycar.c
+++ b/src/mame/drivers/blmbycar.c
@@ -366,7 +366,7 @@ static MACHINE_CONFIG_START( blmbycar, blmbycar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0x100-1)
- MCFG_SCREEN_UPDATE_STATIC(blmbycar)
+ MCFG_SCREEN_UPDATE_DRIVER(blmbycar_state, screen_update_blmbycar)
MCFG_GFXDECODE(blmbycar)
MCFG_PALETTE_LENGTH(0x300)
@@ -409,7 +409,7 @@ static MACHINE_CONFIG_START( watrball, blmbycar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(0x180, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 16, 0x100-1)
- MCFG_SCREEN_UPDATE_STATIC(blmbycar)
+ MCFG_SCREEN_UPDATE_DRIVER(blmbycar_state, screen_update_blmbycar)
MCFG_GFXDECODE(blmbycar)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/blockade.c b/src/mame/drivers/blockade.c
index a19d7cc77e6..3b57e2d82f7 100644
--- a/src/mame/drivers/blockade.c
+++ b/src/mame/drivers/blockade.c
@@ -481,7 +481,7 @@ static MACHINE_CONFIG_START( blockade, blockade_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(blockade)
+ MCFG_SCREEN_UPDATE_DRIVER(blockade_state, screen_update_blockade)
MCFG_GFXDECODE(blockade)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/blockhl.c b/src/mame/drivers/blockhl.c
index cc541ee13ac..0c4d22d38a9 100644
--- a/src/mame/drivers/blockhl.c
+++ b/src/mame/drivers/blockhl.c
@@ -229,7 +229,7 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(blockhl)
+ MCFG_SCREEN_UPDATE_DRIVER(blockhl_state, screen_update_blockhl)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/blockout.c b/src/mame/drivers/blockout.c
index 00633d433b3..e42aca18a58 100644
--- a/src/mame/drivers/blockout.c
+++ b/src/mame/drivers/blockout.c
@@ -322,7 +322,7 @@ static MACHINE_CONFIG_START( blockout, blockout_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
- MCFG_SCREEN_UPDATE_STATIC(blockout)
+ MCFG_SCREEN_UPDATE_DRIVER(blockout_state, screen_update_blockout)
MCFG_PALETTE_LENGTH(513)
diff --git a/src/mame/drivers/bloodbro.c b/src/mame/drivers/bloodbro.c
index d5d462376f7..28c19c9eaaa 100644
--- a/src/mame/drivers/bloodbro.c
+++ b/src/mame/drivers/bloodbro.c
@@ -449,7 +449,7 @@ static MACHINE_CONFIG_START( bloodbro, bloodbro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bloodbro)
+ MCFG_SCREEN_UPDATE_DRIVER(bloodbro_state, screen_update_bloodbro)
MCFG_GFXDECODE(bloodbro)
MCFG_PALETTE_LENGTH(2048)
@@ -469,7 +469,7 @@ static MACHINE_CONFIG_DERIVED( weststry, bloodbro )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(weststry)
+ MCFG_SCREEN_UPDATE_DRIVER(bloodbro_state, screen_update_weststry)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( skysmash, bloodbro )
@@ -478,7 +478,7 @@ static MACHINE_CONFIG_DERIVED( skysmash, bloodbro )
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(skysmash)
+ MCFG_SCREEN_UPDATE_DRIVER(bloodbro_state, screen_update_skysmash)
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/blstroid.c b/src/mame/drivers/blstroid.c
index 4cc18aa8220..2aa2ffb843a 100644
--- a/src/mame/drivers/blstroid.c
+++ b/src/mame/drivers/blstroid.c
@@ -219,7 +219,7 @@ static MACHINE_CONFIG_START( blstroid, blstroid_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 320*2, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(blstroid)
+ MCFG_SCREEN_UPDATE_DRIVER(blstroid_state, screen_update_blstroid)
MCFG_VIDEO_START_OVERRIDE(blstroid_state,blstroid)
diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c
index be92f5ebdb4..a7c6f52d3ed 100644
--- a/src/mame/drivers/blueprnt.c
+++ b/src/mame/drivers/blueprnt.c
@@ -310,7 +310,7 @@ static MACHINE_CONFIG_START( blueprnt, blueprnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(blueprnt)
+ MCFG_SCREEN_UPDATE_DRIVER(blueprnt_state, screen_update_blueprnt)
MCFG_GFXDECODE(blueprnt)
MCFG_PALETTE_LENGTH(128*4+8)
diff --git a/src/mame/drivers/bmcbowl.c b/src/mame/drivers/bmcbowl.c
index 804ebdc30d1..ca0078dfa0e 100644
--- a/src/mame/drivers/bmcbowl.c
+++ b/src/mame/drivers/bmcbowl.c
@@ -137,6 +137,7 @@ public:
DECLARE_DRIVER_INIT(bmcbowl);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_bmcbowl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -148,9 +149,8 @@ void bmcbowl_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( bmcbowl )
+UINT32 bmcbowl_state::screen_update_bmcbowl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bmcbowl_state *state = screen.machine().driver_data<bmcbowl_state>();
/*
280x230,4 bitmap layers, 8bpp,
missing scroll and priorities (maybe fixed ones)
@@ -164,28 +164,28 @@ static SCREEN_UPDATE_IND16( bmcbowl )
{
for (x=0;x<280;x+=2)
{
- pixdat = state->m_vid2[0x8000+z];
+ pixdat = m_vid2[0x8000+z];
if(pixdat&0xff)
bitmap.pix16(y, x+1) = (pixdat&0xff);
if(pixdat>>8)
bitmap.pix16(y, x) = (pixdat>>8);
- pixdat = state->m_vid2[z];
+ pixdat = m_vid2[z];
if(pixdat&0xff)
bitmap.pix16(y, x+1) = (pixdat&0xff);
if(pixdat>>8)
bitmap.pix16(y, x) = (pixdat>>8);
- pixdat = state->m_vid1[0x8000+z];
+ pixdat = m_vid1[0x8000+z];
if(pixdat&0xff)
bitmap.pix16(y, x+1) = (pixdat&0xff);
if(pixdat>>8)
bitmap.pix16(y, x) = (pixdat>>8);
- pixdat = state->m_vid1[z];
+ pixdat = m_vid1[z];
if(pixdat&0xff)
bitmap.pix16(y, x+1) = (pixdat&0xff);
@@ -510,7 +510,7 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(35*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 0*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bmcbowl)
+ MCFG_SCREEN_UPDATE_DRIVER(bmcbowl_state, screen_update_bmcbowl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/bmcpokr.c b/src/mame/drivers/bmcpokr.c
index b9dc2ccca9a..488b0e9d998 100644
--- a/src/mame/drivers/bmcpokr.c
+++ b/src/mame/drivers/bmcpokr.c
@@ -60,6 +60,7 @@ public:
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT16> m_videoram;
virtual void video_start();
+ UINT32 screen_update_bmcpokr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -198,9 +199,8 @@ static GFXDECODE_START( bmcpokr )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
GFXDECODE_END
-SCREEN_UPDATE_IND16( bmcpokr )
+UINT32 bmcpokr_state::screen_update_bmcpokr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bmcpokr_state *state = screen.machine().driver_data<bmcpokr_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count = 0;
@@ -208,7 +208,7 @@ SCREEN_UPDATE_IND16( bmcpokr )
{
for (int x=0;x<64;x++)
{
- UINT16 data = state->m_videoram[count];
+ UINT16 data = m_videoram[count];
count++;
drawgfx_opaque(bitmap,cliprect,gfx,data,0,0,0,x*8,y*8);
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( bmcpokr, bmcpokr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_UPDATE_STATIC(bmcpokr)
+ MCFG_SCREEN_UPDATE_DRIVER(bmcpokr_state, screen_update_bmcpokr)
MCFG_GFXDECODE(bmcpokr)
diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c
index e5203e771ac..ea660a852f4 100644
--- a/src/mame/drivers/bnstars.c
+++ b/src/mame/drivers/bnstars.c
@@ -155,6 +155,8 @@ public:
TILE_GET_INFO_MEMBER(get_ms32_roz1_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -530,51 +532,49 @@ void bnstars_state::video_start()
-static SCREEN_UPDATE_IND16(bnstars_left)
+UINT32 bnstars_state::screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bnstars_state *state = screen.machine().driver_data<bnstars_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect); /* bg color */
- state->m_ms32_bg_tilemap[0]->set_scrollx(0, state->m_ms32_bg0_scroll[0x00/4] + state->m_ms32_bg0_scroll[0x08/4] + 0x10 );
- state->m_ms32_bg_tilemap[0]->set_scrolly(0, state->m_ms32_bg0_scroll[0x0c/4] + state->m_ms32_bg0_scroll[0x14/4] );
- state->m_ms32_bg_tilemap[0]->draw(bitmap, cliprect, 0,1);
+ m_ms32_bg_tilemap[0]->set_scrollx(0, m_ms32_bg0_scroll[0x00/4] + m_ms32_bg0_scroll[0x08/4] + 0x10 );
+ m_ms32_bg_tilemap[0]->set_scrolly(0, m_ms32_bg0_scroll[0x0c/4] + m_ms32_bg0_scroll[0x14/4] );
+ m_ms32_bg_tilemap[0]->draw(bitmap, cliprect, 0,1);
draw_roz(screen.machine(),bitmap,cliprect,2,0);
- state->m_ms32_tx_tilemap[0]->set_scrollx(0, state->m_ms32_tx0_scroll[0x00/4] + state->m_ms32_tx0_scroll[0x08/4] + 0x18);
- state->m_ms32_tx_tilemap[0]->set_scrolly(0, state->m_ms32_tx0_scroll[0x0c/4] + state->m_ms32_tx0_scroll[0x14/4]);
- state->m_ms32_tx_tilemap[0]->draw(bitmap, cliprect, 0,4);
+ m_ms32_tx_tilemap[0]->set_scrollx(0, m_ms32_tx0_scroll[0x00/4] + m_ms32_tx0_scroll[0x08/4] + 0x18);
+ m_ms32_tx_tilemap[0]->set_scrolly(0, m_ms32_tx0_scroll[0x0c/4] + m_ms32_tx0_scroll[0x14/4]);
+ m_ms32_tx_tilemap[0]->draw(bitmap, cliprect, 0,4);
- draw_sprites(screen.machine(),bitmap,cliprect, state->m_ms32_spram, 0x20000, 0);
+ draw_sprites(screen.machine(),bitmap,cliprect, m_ms32_spram, 0x20000, 0);
return 0;
}
-static SCREEN_UPDATE_IND16(bnstars_right)
+UINT32 bnstars_state::screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bnstars_state *state = screen.machine().driver_data<bnstars_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0x8000+0, cliprect); /* bg color */
- state->m_ms32_bg_tilemap[1]->set_scrollx(0, state->m_ms32_bg1_scroll[0x00/4] + state->m_ms32_bg1_scroll[0x08/4] + 0x10 );
- state->m_ms32_bg_tilemap[1]->set_scrolly(0, state->m_ms32_bg1_scroll[0x0c/4] + state->m_ms32_bg1_scroll[0x14/4] );
- state->m_ms32_bg_tilemap[1]->draw(bitmap, cliprect, 0,1);
+ m_ms32_bg_tilemap[1]->set_scrollx(0, m_ms32_bg1_scroll[0x00/4] + m_ms32_bg1_scroll[0x08/4] + 0x10 );
+ m_ms32_bg_tilemap[1]->set_scrolly(0, m_ms32_bg1_scroll[0x0c/4] + m_ms32_bg1_scroll[0x14/4] );
+ m_ms32_bg_tilemap[1]->draw(bitmap, cliprect, 0,1);
draw_roz(screen.machine(),bitmap,cliprect,2,1);
- state->m_ms32_tx_tilemap[1]->set_scrollx(0, state->m_ms32_tx1_scroll[0x00/4] + state->m_ms32_tx1_scroll[0x08/4] + 0x18);
- state->m_ms32_tx_tilemap[1]->set_scrolly(0, state->m_ms32_tx1_scroll[0x0c/4] + state->m_ms32_tx1_scroll[0x14/4]);
- state->m_ms32_tx_tilemap[1]->draw(bitmap, cliprect, 0,4);
+ m_ms32_tx_tilemap[1]->set_scrollx(0, m_ms32_tx1_scroll[0x00/4] + m_ms32_tx1_scroll[0x08/4] + 0x18);
+ m_ms32_tx_tilemap[1]->set_scrolly(0, m_ms32_tx1_scroll[0x0c/4] + m_ms32_tx1_scroll[0x14/4]);
+ m_ms32_tx_tilemap[1]->draw(bitmap, cliprect, 0,4);
- draw_sprites(screen.machine(),bitmap,cliprect, state->m_ms32_spram+(0x20000/4), 0x20000, 4);
+ draw_sprites(screen.machine(),bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000, 4);
return 0;
}
@@ -1396,14 +1396,14 @@ static MACHINE_CONFIG_START( bnstars, bnstars_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bnstars_left)
+ MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bnstars_right)
+ MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_right)
/* sound hardware */
diff --git a/src/mame/drivers/bogeyman.c b/src/mame/drivers/bogeyman.c
index 310154fc9b9..cf6845fee83 100644
--- a/src/mame/drivers/bogeyman.c
+++ b/src/mame/drivers/bogeyman.c
@@ -252,7 +252,7 @@ static MACHINE_CONFIG_START( bogeyman, bogeyman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bogeyman)
+ MCFG_SCREEN_UPDATE_DRIVER(bogeyman_state, screen_update_bogeyman)
MCFG_GFXDECODE(bogeyman)
MCFG_PALETTE_LENGTH(16+256)
diff --git a/src/mame/drivers/bombjack.c b/src/mame/drivers/bombjack.c
index 7d712f285a6..825326241a1 100644
--- a/src/mame/drivers/bombjack.c
+++ b/src/mame/drivers/bombjack.c
@@ -374,7 +374,7 @@ static MACHINE_CONFIG_START( bombjack, bombjack_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bombjack)
+ MCFG_SCREEN_UPDATE_DRIVER(bombjack_state, screen_update_bombjack)
MCFG_GFXDECODE(bombjack)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c
index b44b95605e5..4252b88568e 100644
--- a/src/mame/drivers/boogwing.c
+++ b/src/mame/drivers/boogwing.c
@@ -354,7 +354,7 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(boogwing)
+ MCFG_SCREEN_UPDATE_DRIVER(boogwing_state, screen_update_boogwing)
MCFG_PALETTE_LENGTH(2048)
MCFG_GFXDECODE(boogwing)
diff --git a/src/mame/drivers/bottom9.c b/src/mame/drivers/bottom9.c
index cd00541a535..84940e06bcd 100644
--- a/src/mame/drivers/bottom9.c
+++ b/src/mame/drivers/bottom9.c
@@ -368,7 +368,7 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(bottom9)
+ MCFG_SCREEN_UPDATE_DRIVER(bottom9_state, screen_update_bottom9)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c
index 39d033416b7..4e4ac6a3b8a 100644
--- a/src/mame/drivers/boxer.c
+++ b/src/mame/drivers/boxer.c
@@ -49,6 +49,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_boxer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/*************************************
@@ -170,9 +171,8 @@ static void draw_boxer( running_machine &machine, bitmap_ind16 &bitmap, const re
}
-static SCREEN_UPDATE_IND16( boxer )
+UINT32 boxer_state::screen_update_boxer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- boxer_state *state = screen.machine().driver_data<boxer_state>();
int i, j;
bitmap.fill(1, cliprect);
@@ -181,7 +181,7 @@ static SCREEN_UPDATE_IND16( boxer )
{
for (j = 0; j < 32; j++)
{
- UINT8 code = state->m_tile_ram[32 * i + j];
+ UINT8 code = m_tile_ram[32 * i + j];
drawgfx_transpen(bitmap, cliprect,
screen.machine().gfx[2],
@@ -455,7 +455,7 @@ static MACHINE_CONFIG_START( boxer, boxer_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(8, 247, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(boxer)
+ MCFG_SCREEN_UPDATE_DRIVER(boxer_state, screen_update_boxer)
MCFG_GFXDECODE(boxer)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/brkthru.c b/src/mame/drivers/brkthru.c
index 7bebce964b9..ba04cf61e2f 100644
--- a/src/mame/drivers/brkthru.c
+++ b/src/mame/drivers/brkthru.c
@@ -407,7 +407,7 @@ static MACHINE_CONFIG_START( brkthru, brkthru_state )
/* not sure; assuming to be the same as darwin */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(brkthru)
+ MCFG_SCREEN_UPDATE_DRIVER(brkthru_state, screen_update_brkthru)
/* sound hardware */
@@ -454,7 +454,7 @@ static MACHINE_CONFIG_START( darwin, brkthru_state )
= 15.625kHz / (240 + 32)
= 57.444855Hz
tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */
- MCFG_SCREEN_UPDATE_STATIC(brkthru)
+ MCFG_SCREEN_UPDATE_DRIVER(brkthru_state, screen_update_brkthru)
/* sound hardware */
diff --git a/src/mame/drivers/bsktball.c b/src/mame/drivers/bsktball.c
index 5aa482356e3..b40fecf1ea6 100644
--- a/src/mame/drivers/bsktball.c
+++ b/src/mame/drivers/bsktball.c
@@ -258,7 +258,7 @@ static MACHINE_CONFIG_START( bsktball, bsktball_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bsktball)
+ MCFG_SCREEN_UPDATE_DRIVER(bsktball_state, screen_update_bsktball)
MCFG_GFXDECODE(bsktball)
MCFG_PALETTE_LENGTH(2*4 + 4*4*4*4)
diff --git a/src/mame/drivers/btime.c b/src/mame/drivers/btime.c
index 38f04ae4500..38d01f02fc3 100644
--- a/src/mame/drivers/btime.c
+++ b/src/mame/drivers/btime.c
@@ -1468,7 +1468,7 @@ static MACHINE_CONFIG_START( btime, btime_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(btime)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_btime)
MCFG_MACHINE_START_OVERRIDE(btime_state,btime)
MCFG_MACHINE_RESET_OVERRIDE(btime_state,btime)
@@ -1514,7 +1514,7 @@ static MACHINE_CONFIG_DERIVED( cookrace, btime )
MCFG_PALETTE_LENGTH(16)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(cookrace)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_cookrace)
MACHINE_CONFIG_END
@@ -1532,7 +1532,7 @@ static MACHINE_CONFIG_DERIVED( lnc, btime )
MCFG_PALETTE_INIT_OVERRIDE(btime_state,lnc)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(lnc)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_lnc)
MACHINE_CONFIG_END
@@ -1542,7 +1542,7 @@ static MACHINE_CONFIG_DERIVED( wtennis, lnc )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(eggs)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_eggs)
MACHINE_CONFIG_END
@@ -1569,7 +1569,7 @@ static MACHINE_CONFIG_DERIVED( sdtennis, btime )
MCFG_VIDEO_START_OVERRIDE(btime_state,bnj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(bnj)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_bnj)
MACHINE_CONFIG_END
@@ -1597,7 +1597,7 @@ static MACHINE_CONFIG_DERIVED( zoar, btime )
MCFG_PALETTE_LENGTH(64)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(zoar)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_zoar)
MCFG_SOUND_REPLACE("ay1", AY8910, HCLK1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.23)
@@ -1623,7 +1623,7 @@ static MACHINE_CONFIG_DERIVED( disco, btime )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(disco)
+ MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_disco)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bublbobl.c b/src/mame/drivers/bublbobl.c
index 5642dd0addf..a8f057b0e57 100644
--- a/src/mame/drivers/bublbobl.c
+++ b/src/mame/drivers/bublbobl.c
@@ -781,7 +781,7 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MAIN_XTAL/4, 384, 0, 256, 264, 16, 240)
- MCFG_SCREEN_UPDATE_STATIC(bublbobl)
+ MCFG_SCREEN_UPDATE_DRIVER(bublbobl_state, screen_update_bublbobl)
MCFG_GFXDECODE(bublbobl)
MCFG_PALETTE_LENGTH(256)
@@ -862,7 +862,7 @@ static MACHINE_CONFIG_START( bublbobl, bublbobl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MAIN_XTAL/4, 384, 0, 256, 264, 16, 240)
- MCFG_SCREEN_UPDATE_STATIC(bublbobl)
+ MCFG_SCREEN_UPDATE_DRIVER(bublbobl_state, screen_update_bublbobl)
MCFG_GFXDECODE(bublbobl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/buggychl.c b/src/mame/drivers/buggychl.c
index 86543a230dd..3c26841180a 100644
--- a/src/mame/drivers/buggychl.c
+++ b/src/mame/drivers/buggychl.c
@@ -412,7 +412,7 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(buggychl)
+ MCFG_SCREEN_UPDATE_DRIVER(buggychl_state, screen_update_buggychl)
MCFG_GFXDECODE(buggychl)
MCFG_PALETTE_LENGTH(128+128)
diff --git a/src/mame/drivers/buster.c b/src/mame/drivers/buster.c
index c4e1d726470..9869e21e62d 100644
--- a/src/mame/drivers/buster.c
+++ b/src/mame/drivers/buster.c
@@ -23,6 +23,7 @@ public:
DECLARE_READ8_MEMBER(test_r);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_buster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -30,9 +31,8 @@ void buster_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(buster)
+UINT32 buster_state::screen_update_buster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- buster_state *state = screen.machine().driver_data<buster_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count = 0x0000;
@@ -43,7 +43,7 @@ static SCREEN_UPDATE_IND16(buster)
{
for (x=0;x<32;x++)
{
- int tile = (state->m_vram[count+1])|(state->m_vram[count]<<8);
+ int tile = (m_vram[count+1])|(m_vram[count]<<8);
//int colour = tile>>12;
drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*4);
@@ -341,7 +341,7 @@ static MACHINE_CONFIG_START( buster, buster_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(buster)
+ MCFG_SCREEN_UPDATE_DRIVER(buster_state, screen_update_buster)
MCFG_MC6845_ADD("crtc", MC6845, XTAL_3_579545MHz/4, mc6845_intf) //unknown clock / type
MCFG_GFXDECODE(buster)
diff --git a/src/mame/drivers/bwing.c b/src/mame/drivers/bwing.c
index 2e4c2ee086c..d83c61eca49 100644
--- a/src/mame/drivers/bwing.c
+++ b/src/mame/drivers/bwing.c
@@ -387,7 +387,7 @@ static MACHINE_CONFIG_START( bwing, bwing_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600)) // must be long enough for polling
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bwing)
+ MCFG_SCREEN_UPDATE_DRIVER(bwing_state, screen_update_bwing)
MCFG_GFXDECODE(bwing)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/cabal.c b/src/mame/drivers/cabal.c
index 08373963777..e22b9b80c16 100644
--- a/src/mame/drivers/cabal.c
+++ b/src/mame/drivers/cabal.c
@@ -505,7 +505,7 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cabal)
+ MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
MCFG_GFXDECODE(cabal)
MCFG_PALETTE_LENGTH(1024)
@@ -560,7 +560,7 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cabal)
+ MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
MCFG_GFXDECODE(cabal)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cabaret.c b/src/mame/drivers/cabaret.c
index fd04fcdfa08..d42bbc719b3 100644
--- a/src/mame/drivers/cabaret.c
+++ b/src/mame/drivers/cabaret.c
@@ -55,6 +55,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_cabaret(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -112,14 +113,13 @@ void cabaret_state::video_start()
}
-static SCREEN_UPDATE_IND16(cabaret)
+UINT32 cabaret_state::screen_update_cabaret(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cabaret_state *state = screen.machine().driver_data<cabaret_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( cabaret, cabaret_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(cabaret)
+ MCFG_SCREEN_UPDATE_DRIVER(cabaret_state, screen_update_cabaret)
MCFG_GFXDECODE(cabaret)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index 30ff79fb27c..9dbd4b57dec 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -2749,7 +2749,7 @@ static MACHINE_CONFIG_START( sys903, calomega_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 31*8-1) /* Taken from MC6845 init, registers 01 & 06 */
- MCFG_SCREEN_UPDATE_STATIC(calomega)
+ MCFG_SCREEN_UPDATE_DRIVER(calomega_state, screen_update_calomega)
MCFG_GFXDECODE(calomega)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/calorie.c b/src/mame/drivers/calorie.c
index 3ca95f3695c..f7f0c91dcf3 100644
--- a/src/mame/drivers/calorie.c
+++ b/src/mame/drivers/calorie.c
@@ -112,6 +112,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_calorie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -150,19 +151,18 @@ void calorie_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( calorie )
+UINT32 calorie_state::screen_update_calorie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- calorie_state *state = screen.machine().driver_data<calorie_state>();
int x;
- if (state->m_bg_bank & 0x10)
+ if (m_bg_bank & 0x10)
{
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
}
else
{
- state->m_fg_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
}
@@ -170,16 +170,16 @@ static SCREEN_UPDATE_IND16( calorie )
{
int xpos, ypos, tileno, color, flipx, flipy;
- tileno = state->m_sprites[x + 0];
- color = state->m_sprites[x + 1] & 0x0f;
- flipx = state->m_sprites[x + 1] & 0x40;
+ tileno = m_sprites[x + 0];
+ color = m_sprites[x + 1] & 0x0f;
+ flipx = m_sprites[x + 1] & 0x40;
flipy = 0;
- ypos = 0xff - state->m_sprites[x + 2];
- xpos = state->m_sprites[x + 3];
+ ypos = 0xff - m_sprites[x + 2];
+ xpos = m_sprites[x + 3];
- if (state->flip_screen())
+ if (flip_screen())
{
- if (state->m_sprites[x + 1] & 0x10)
+ if (m_sprites[x + 1] & 0x10)
ypos = 0xff - ypos + 32;
else
ypos = 0xff - ypos + 16;
@@ -189,7 +189,7 @@ static SCREEN_UPDATE_IND16( calorie )
flipy = !flipy;
}
- if (state->m_sprites[x + 1] & 0x10)
+ if (m_sprites[x + 1] & 0x10)
{
/* 32x32 sprites */
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[3], tileno | 0x40, color, flipx, flipy, xpos, ypos - 31, 0);
@@ -456,7 +456,7 @@ static MACHINE_CONFIG_START( calorie, calorie_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(calorie)
+ MCFG_SCREEN_UPDATE_DRIVER(calorie_state, screen_update_calorie)
MCFG_GFXDECODE(calorie)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/canyon.c b/src/mame/drivers/canyon.c
index 09aae521a08..a026acac13f 100644
--- a/src/mame/drivers/canyon.c
+++ b/src/mame/drivers/canyon.c
@@ -248,7 +248,7 @@ static MACHINE_CONFIG_START( canyon, canyon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750))
MCFG_SCREEN_SIZE(256, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(canyon)
+ MCFG_SCREEN_UPDATE_DRIVER(canyon_state, screen_update_canyon)
MCFG_GFXDECODE(canyon)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/capbowl.c b/src/mame/drivers/capbowl.c
index f8cc53d2da5..5e800efb2fc 100644
--- a/src/mame/drivers/capbowl.c
+++ b/src/mame/drivers/capbowl.c
@@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( capbowl, capbowl_state )
MCFG_SCREEN_SIZE(360, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 359, 0, 244)
MCFG_SCREEN_REFRESH_RATE(57)
- MCFG_SCREEN_UPDATE_STATIC(capbowl)
+ MCFG_SCREEN_UPDATE_DRIVER(capbowl_state, screen_update_capbowl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c
index 4cdb0bc2043..9175c94b99b 100644
--- a/src/mame/drivers/cardline.c
+++ b/src/mame/drivers/cardline.c
@@ -41,20 +41,20 @@ public:
DECLARE_READ8_MEMBER(unk_r);
DECLARE_WRITE8_MEMBER(lamps_w);
virtual void palette_init();
+ UINT32 screen_update_cardline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
#define DRAW_TILE(machine, offset, transparency) drawgfx_transpen(bitmap, cliprect, (machine).gfx[0],\
- (state->m_videoram[index+offset] | (state->m_colorram[index+offset]<<8))&0x3fff,\
- (state->m_colorram[index+offset]&0x80)>>7,\
+ (m_videoram[index+offset] | (m_colorram[index+offset]<<8))&0x3fff,\
+ (m_colorram[index+offset]&0x80)>>7,\
0,0,\
x<<3, y<<3,\
transparency?transparency:(UINT32)-1);
-static SCREEN_UPDATE_IND16( cardline )
+UINT32 cardline_state::screen_update_cardline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cardline_state *state = screen.machine().driver_data<cardline_state>();
int x,y;
bitmap.fill(0, cliprect);
for(y=0;y<32;y++)
@@ -62,13 +62,13 @@ static SCREEN_UPDATE_IND16( cardline )
for(x=0;x<64;x++)
{
int index=y*64+x;
- if(state->m_video&1)
+ if(m_video&1)
{
DRAW_TILE(screen.machine(),0,0);
DRAW_TILE(screen.machine(),0x800,1);
}
- if(state->m_video&2)
+ if(m_video&2)
{
DRAW_TILE(screen.machine(),0x1000,0);
DRAW_TILE(screen.machine(),0x1800,1);
@@ -226,7 +226,7 @@ static MACHINE_CONFIG_START( cardline, cardline_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 35*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cardline)
+ MCFG_SCREEN_UPDATE_DRIVER(cardline_state, screen_update_cardline)
MCFG_GFXDECODE(cardline)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/carjmbre.c b/src/mame/drivers/carjmbre.c
index fed4d4e807a..385127fa447 100644
--- a/src/mame/drivers/carjmbre.c
+++ b/src/mame/drivers/carjmbre.c
@@ -217,7 +217,7 @@ static MACHINE_CONFIG_START( carjmbre, carjmbre_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(carjmbre)
+ MCFG_SCREEN_UPDATE_DRIVER(carjmbre_state, screen_update_carjmbre)
MCFG_GFXDECODE(carjmbre)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/carpolo.c b/src/mame/drivers/carpolo.c
index 708a434970e..ffe1421eba7 100644
--- a/src/mame/drivers/carpolo.c
+++ b/src/mame/drivers/carpolo.c
@@ -273,8 +273,8 @@ static MACHINE_CONFIG_START( carpolo, carpolo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 255)
- MCFG_SCREEN_UPDATE_STATIC(carpolo)
- MCFG_SCREEN_VBLANK_STATIC(carpolo)
+ MCFG_SCREEN_UPDATE_DRIVER(carpolo_state, screen_update_carpolo)
+ MCFG_SCREEN_VBLANK_DRIVER(carpolo_state, screen_eof_carpolo)
MCFG_GFXDECODE(carpolo)
MCFG_PALETTE_LENGTH(12*2+2*16+4*2)
diff --git a/src/mame/drivers/carrera.c b/src/mame/drivers/carrera.c
index 7d61aac220a..9529d2ab3f6 100644
--- a/src/mame/drivers/carrera.c
+++ b/src/mame/drivers/carrera.c
@@ -62,6 +62,7 @@ public:
required_shared_ptr<UINT8> m_tileram;
DECLARE_READ8_MEMBER(unknown_r);
virtual void palette_init();
+ UINT32 screen_update_carrera(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -247,9 +248,8 @@ static GFXDECODE_START( carrera )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
GFXDECODE_END
-static SCREEN_UPDATE_IND16(carrera)
+UINT32 carrera_state::screen_update_carrera(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- carrera_state *state = screen.machine().driver_data<carrera_state>();
int x,y;
int count = 0;
@@ -258,7 +258,7 @@ static SCREEN_UPDATE_IND16(carrera)
{
for (x=0;x<64;x++)
{
- int tile = state->m_tileram[count&0x7ff] | state->m_tileram[(count&0x7ff)+0x800]<<8;
+ int tile = m_tileram[count&0x7ff] | m_tileram[(count&0x7ff)+0x800]<<8;
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],tile,0,0,0,x*8,y*8);
count++;
@@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( carrera, carrera_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(carrera)
+ MCFG_SCREEN_UPDATE_DRIVER(carrera_state, screen_update_carrera)
MCFG_MC6845_ADD("crtc", MC6845, MASTER_CLOCK / 16, mc6845_intf)
diff --git a/src/mame/drivers/caswin.c b/src/mame/drivers/caswin.c
index eaa9e087458..dd28e3ff9ca 100644
--- a/src/mame/drivers/caswin.c
+++ b/src/mame/drivers/caswin.c
@@ -68,6 +68,7 @@ public:
TILE_GET_INFO_MEMBER(get_sc0_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_vvillage(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -89,10 +90,9 @@ void caswin_state::video_start()
m_sc0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(caswin_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
}
-static SCREEN_UPDATE_IND16(vvillage)
+UINT32 caswin_state::screen_update_vvillage(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- caswin_state *state = screen.machine().driver_data<caswin_state>();
- state->m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -313,7 +313,7 @@ static MACHINE_CONFIG_START( vvillage, caswin_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(vvillage)
+ MCFG_SCREEN_UPDATE_DRIVER(caswin_state, screen_update_vvillage)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index 653dba9acbf..d6594783e29 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -1868,7 +1868,7 @@ static MACHINE_CONFIG_START( dfeveron, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(dfeveron)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -1910,7 +1910,7 @@ static MACHINE_CONFIG_START( ddonpach, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(ddonpach)
MCFG_PALETTE_LENGTH(0x8000 + 0x40*16) // $400 extra entries for layers 1&2
@@ -1956,7 +1956,7 @@ static MACHINE_CONFIG_START( donpachi, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(donpachi)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2002,7 +2002,7 @@ static MACHINE_CONFIG_START( esprade, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2042,7 +2042,7 @@ static MACHINE_CONFIG_START( gaia, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2083,7 +2083,7 @@ static MACHINE_CONFIG_START( guwange, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2127,7 +2127,7 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(hotdogst)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2179,7 +2179,7 @@ static MACHINE_CONFIG_START( korokoro, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1-2, 0, 240-1-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(korokoro)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2233,7 +2233,7 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(mazinger)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2291,7 +2291,7 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x7d, 0x7d + 0x180-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(donpachi)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2346,7 +2346,7 @@ static MACHINE_CONFIG_START( pacslot, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(tjumpman)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2402,7 +2402,7 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x70, 0x70 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(pwrinst2)
MCFG_PALETTE_LENGTH(0x8000+0x2800)
@@ -2465,7 +2465,7 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320+1, 240)
MCFG_SCREEN_VISIBLE_AREA(0+1, 320+1-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(sailormn)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2519,7 +2519,7 @@ static MACHINE_CONFIG_START( tjumpman, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(tjumpman)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2560,7 +2560,7 @@ static MACHINE_CONFIG_START( uopoko, cave_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(cave)
+ MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE(uopoko)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/cb2001.c b/src/mame/drivers/cb2001.c
index c1595d7d35c..ed01f887aa3 100644
--- a/src/mame/drivers/cb2001.c
+++ b/src/mame/drivers/cb2001.c
@@ -71,6 +71,7 @@ public:
TILE_GET_INFO_MEMBER(get_cb2001_reel3_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_cb2001(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -331,18 +332,17 @@ e3 -> c6
*/
-static SCREEN_UPDATE_RGB32(cb2001)
+UINT32 cb2001_state::screen_update_cb2001(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- cb2001_state *state = screen.machine().driver_data<cb2001_state>();
int count,x,y;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
count = 0x0000;
// render bg as 8x8 tilemaps
- if (state->m_other1 & 0x02)
+ if (m_other1 & 0x02)
{
- if (!(state->m_other1 & 0x04))
+ if (!(m_other1 & 0x04))
{
for (y=0;y<32;y++)
{
@@ -351,9 +351,9 @@ static SCREEN_UPDATE_RGB32(cb2001)
int tile;
int colour;
- tile = (state->m_vram_bg[count] & 0x0fff);
- colour = (state->m_vram_bg[count] & 0xf000)>>12;
- tile += state->m_videobank*0x2000;
+ tile = (m_vram_bg[count] & 0x0fff);
+ colour = (m_vram_bg[count] & 0xf000)>>12;
+ tile += m_videobank*0x2000;
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],tile,colour,0,0,x*8,y*8);
@@ -370,26 +370,26 @@ static SCREEN_UPDATE_RGB32(cb2001)
{
UINT16 scroll;
- scroll = state->m_vram_bg[0xa00/2 + i/2];
+ scroll = m_vram_bg[0xa00/2 + i/2];
if (i&1)
scroll >>=8;
scroll &=0xff;
- state->m_reel2_tilemap->set_scrolly(i, scroll);
+ m_reel2_tilemap->set_scrolly(i, scroll);
- scroll = state->m_vram_bg[0x800/2 + i/2];
+ scroll = m_vram_bg[0x800/2 + i/2];
if (i&1)
scroll >>=8;
scroll &=0xff;
- state->m_reel1_tilemap->set_scrolly(i, scroll);
+ m_reel1_tilemap->set_scrolly(i, scroll);
- scroll = state->m_vram_bg[0xc00/2 + i/2];
+ scroll = m_vram_bg[0xc00/2 + i/2];
if (i&1)
scroll >>=8;
scroll &=0xff;
- state->m_reel3_tilemap->set_scrolly(i, scroll);
+ m_reel3_tilemap->set_scrolly(i, scroll);
}
@@ -398,9 +398,9 @@ static SCREEN_UPDATE_RGB32(cb2001)
const rectangle visible2(0*8, (14+48)*8-1, 10*8, (10+7)*8-1);
const rectangle visible3(0*8, (14+48)*8-1, 17*8, (17+7)*8-1);
- state->m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
- state->m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
- state->m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
+ m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
+ m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
+ m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
}
}
@@ -413,11 +413,11 @@ static SCREEN_UPDATE_RGB32(cb2001)
int tile;
int colour;
- tile = (state->m_vram_fg[count] & 0x0fff);
- colour = (state->m_vram_fg[count] & 0xf000)>>12;
- tile += state->m_videobank*0x2000;
+ tile = (m_vram_fg[count] & 0x0fff);
+ colour = (m_vram_fg[count] & 0xf000)>>12;
+ tile += m_videobank*0x2000;
- if (state->m_other2 & 0x4)
+ if (m_other2 & 0x4)
{
tile += 0x1000;
}
@@ -427,7 +427,7 @@ static SCREEN_UPDATE_RGB32(cb2001)
}
}
- popmessage("%02x %02x %02x %02x\n",state->m_videobank,state->m_videomode, state->m_other1, state->m_other2);
+ popmessage("%02x %02x %02x %02x\n",m_videobank,m_videomode, m_other1, m_other2);
return 0;
}
@@ -849,7 +849,7 @@ static MACHINE_CONFIG_START( cb2001, cb2001_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cb2001)
+ MCFG_SCREEN_UPDATE_DRIVER(cb2001_state, screen_update_cb2001)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c
index 078c8568403..ea32dfc1a7c 100644
--- a/src/mame/drivers/cball.c
+++ b/src/mame/drivers/cball.c
@@ -32,6 +32,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_cball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -56,20 +57,19 @@ void cball_state::video_start()
}
-static SCREEN_UPDATE_IND16( cball )
+UINT32 cball_state::screen_update_cball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cball_state *state = screen.machine().driver_data<cball_state>();
/* draw playfield */
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
/* draw sprite */
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1],
- state->m_video_ram[0x399] >> 4,
+ m_video_ram[0x399] >> 4,
0,
0, 0,
- 240 - state->m_video_ram[0x390],
- 240 - state->m_video_ram[0x398], 0);
+ 240 - m_video_ram[0x390],
+ 240 - m_video_ram[0x398], 0);
return 0;
}
@@ -236,7 +236,7 @@ static MACHINE_CONFIG_START( cball, cball_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
- MCFG_SCREEN_UPDATE_STATIC(cball)
+ MCFG_SCREEN_UPDATE_DRIVER(cball_state, screen_update_cball)
MCFG_GFXDECODE(cball)
MCFG_PALETTE_LENGTH(6)
diff --git a/src/mame/drivers/cbasebal.c b/src/mame/drivers/cbasebal.c
index af31eeb72fd..bd05b4a4f2d 100644
--- a/src/mame/drivers/cbasebal.c
+++ b/src/mame/drivers/cbasebal.c
@@ -290,7 +290,7 @@ static MACHINE_CONFIG_START( cbasebal, cbasebal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(cbasebal)
+ MCFG_SCREEN_UPDATE_DRIVER(cbasebal_state, screen_update_cbasebal)
MCFG_GFXDECODE(cbasebal)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cbuster.c b/src/mame/drivers/cbuster.c
index 2dec4f4f761..668a2c47985 100644
--- a/src/mame/drivers/cbuster.c
+++ b/src/mame/drivers/cbuster.c
@@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( twocrude, cbuster_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(twocrude)
+ MCFG_SCREEN_UPDATE_DRIVER(cbuster_state, screen_update_twocrude)
MCFG_GFXDECODE(cbuster)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index 7b8c684f52d..1ad668beb00 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -484,7 +484,7 @@ static MACHINE_CONFIG_START( ccastles, ccastles_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, HTOTAL - 1, VTOTAL, 0, VTOTAL - 1) /* will be adjusted later */
- MCFG_SCREEN_UPDATE_STATIC(ccastles)
+ MCFG_SCREEN_UPDATE_DRIVER(ccastles_state, screen_update_ccastles)
/* sound hardware */
diff --git a/src/mame/drivers/cchance.c b/src/mame/drivers/cchance.c
index 3bb6d8eb133..76fecf8774e 100644
--- a/src/mame/drivers/cchance.c
+++ b/src/mame/drivers/cchance.c
@@ -236,8 +236,8 @@ static MACHINE_CONFIG_START( cchance, cchance_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(cchance_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(cchance_state, screen_eof_tnzs)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT_OVERRIDE(cchance_state,arknoid2)
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index e240c6d3c21..9e089fc2c6e 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -997,7 +997,7 @@ static MACHINE_CONFIG_START( root, cclimber_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cclimber)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_cclimber)
MCFG_GFXDECODE(cclimber)
MCFG_PALETTE_LENGTH(16*4+8*4)
@@ -1047,7 +1047,7 @@ static MACHINE_CONFIG_DERIVED( yamato, root )
MCFG_PALETTE_LENGTH(16*4+8*4+256)
MCFG_PALETTE_INIT_OVERRIDE(cclimber_state,yamato)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(yamato)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_yamato)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1073,7 +1073,7 @@ static MACHINE_CONFIG_DERIVED( toprollr, cclimber )
MCFG_VIDEO_START_OVERRIDE(cclimber_state,toprollr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(toprollr)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_toprollr)
MACHINE_CONFIG_END
@@ -1095,7 +1095,7 @@ static MACHINE_CONFIG_START( swimmer, cclimber_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(swimmer)
+ MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_swimmer)
MCFG_GFXDECODE(swimmer)
MCFG_PALETTE_LENGTH(32*8+4*8+1)
diff --git a/src/mame/drivers/cd32.c b/src/mame/drivers/cd32.c
index 11b63a22a9a..d126a1b546b 100644
--- a/src/mame/drivers/cd32.c
+++ b/src/mame/drivers/cd32.c
@@ -782,7 +782,7 @@ static MACHINE_CONFIG_START( cd32base, cd32_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 312)
MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
- MCFG_SCREEN_UPDATE_STATIC(amiga_aga)
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
MCFG_VIDEO_START_OVERRIDE(cd32_state,amiga_aga)
diff --git a/src/mame/drivers/cdi.c b/src/mame/drivers/cdi.c
index 075b346b109..8d8afcd0f2b 100644
--- a/src/mame/drivers/cdi.c
+++ b/src/mame/drivers/cdi.c
@@ -331,14 +331,14 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 302)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) //dynamic resolution,TODO
- MCFG_SCREEN_UPDATE_STATIC(cdimono1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
MCFG_SCREEN_ADD("lcd", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(192, 22)
MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
- MCFG_SCREEN_UPDATE_STATIC(cdimono1_lcd)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c
index 59cda529e77..53434ae257e 100644
--- a/src/mame/drivers/centiped.c
+++ b/src/mame/drivers/centiped.c
@@ -1766,7 +1766,7 @@ static MACHINE_CONFIG_START( centiped_base, centiped_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(centiped)
+ MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_centiped)
MCFG_GFXDECODE(centiped)
MCFG_PALETTE_LENGTH(4+4*4*4*4)
@@ -1846,7 +1846,7 @@ static MACHINE_CONFIG_DERIVED( milliped, centiped )
MCFG_VIDEO_START_OVERRIDE(centiped_state,milliped)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(milliped)
+ MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_milliped)
/* sound hardware */
MCFG_POKEY_REPLACE("pokey", 12096000/8)
@@ -1883,7 +1883,7 @@ static MACHINE_CONFIG_DERIVED( warlords, centiped )
MCFG_PALETTE_INIT_OVERRIDE(centiped_state,warlords)
MCFG_VIDEO_START_OVERRIDE(centiped_state,warlords)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(warlords)
+ MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_warlords)
/* sound hardware */
MCFG_POKEY_REPLACE("pokey", 12096000/8)
@@ -1898,7 +1898,7 @@ static MACHINE_CONFIG_DERIVED( mazeinv, milliped )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mazeinv_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(centiped)
+ MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_centiped)
MACHINE_CONFIG_END
@@ -1916,7 +1916,7 @@ static MACHINE_CONFIG_START( bullsdrt, centiped_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bullsdrt)
+ MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_bullsdrt)
MCFG_GFXDECODE(centiped)
MCFG_PALETTE_LENGTH(4+4*4*4*4)
diff --git a/src/mame/drivers/chaknpop.c b/src/mame/drivers/chaknpop.c
index 36e20d33eb8..e789d71184b 100644
--- a/src/mame/drivers/chaknpop.c
+++ b/src/mame/drivers/chaknpop.c
@@ -384,7 +384,7 @@ static MACHINE_CONFIG_START( chaknpop, chaknpop_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(chaknpop)
+ MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update_chaknpop)
MCFG_GFXDECODE(chaknpop)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cham24.c b/src/mame/drivers/cham24.c
index 25ea74e3063..5119f5989a4 100644
--- a/src/mame/drivers/cham24.c
+++ b/src/mame/drivers/cham24.c
@@ -88,6 +88,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_cham24(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -302,7 +303,7 @@ void cham24_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( cham24 )
+UINT32 cham24_state::screen_update_cham24(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* render the ppu */
ppu2c0x_device *ppu = screen.machine().device<ppu2c0x_device>("ppu");
@@ -354,7 +355,7 @@ static MACHINE_CONFIG_START( cham24, cham24_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cham24)
+ MCFG_SCREEN_UPDATE_DRIVER(cham24_state, screen_update_cham24)
MCFG_GFXDECODE(cham24)
MCFG_PALETTE_LENGTH(8*4*16)
diff --git a/src/mame/drivers/champbas.c b/src/mame/drivers/champbas.c
index 6b0b624692c..823606773d7 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -95,15 +95,14 @@ TODO:
*
*************************************/
-static SCREEN_VBLANK( champbas )
+void champbas_state::screen_eof_champbas(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- champbas_state *state = screen.machine().driver_data<champbas_state>();
- state->m_watchdog_count++;
+ m_watchdog_count++;
- if (state->m_watchdog_count == 0x10)
+ if (m_watchdog_count == 0x10)
screen.machine().schedule_soft_reset();
}
}
@@ -633,8 +632,8 @@ static MACHINE_CONFIG_START( talbot, champbas_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(champbas)
- MCFG_SCREEN_VBLANK_STATIC(champbas)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_champbas)
+ MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE(talbot)
MCFG_PALETTE_LENGTH(0x200)
@@ -668,8 +667,8 @@ static MACHINE_CONFIG_START( champbas, champbas_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(champbas)
- MCFG_SCREEN_VBLANK_STATIC(champbas)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_champbas)
+ MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE(champbas)
MCFG_PALETTE_LENGTH(0x200)
@@ -725,8 +724,8 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state )
MCFG_SCREEN_REFRESH_RATE(60.54)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(exctsccr)
- MCFG_SCREEN_VBLANK_STATIC(champbas)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_exctsccr)
+ MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE(exctsccr)
MCFG_PALETTE_LENGTH(0x200)
@@ -776,8 +775,8 @@ static MACHINE_CONFIG_START( exctsccrb, champbas_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(exctsccr)
- MCFG_SCREEN_VBLANK_STATIC(champbas)
+ MCFG_SCREEN_UPDATE_DRIVER(champbas_state, screen_update_exctsccr)
+ MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE(exctsccr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index 4b2770655a8..70caa7166ad 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -171,6 +171,10 @@ public:
DECLARE_MACHINE_START(champbwl);
DECLARE_MACHINE_RESET(champbwl);
DECLARE_MACHINE_START(doraemon);
+ UINT32 screen_update_champbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_doraemon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_champbwl(screen_device &screen, bool state);
+ void screen_eof_doraemon(screen_device &screen, bool state);
};
@@ -452,7 +456,7 @@ MACHINE_RESET_MEMBER(champbwl_state,champbwl)
}
-SCREEN_UPDATE_IND16( champbwl )
+UINT32 champbwl_state::screen_update_champbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0x1f0, cliprect);
@@ -463,10 +467,10 @@ SCREEN_UPDATE_IND16( champbwl )
return 0;
}
-SCREEN_VBLANK( champbwl )
+void champbwl_state::screen_eof_champbwl(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
}
@@ -491,8 +495,8 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(champbwl)
- MCFG_SCREEN_VBLANK_STATIC(champbwl)
+ MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_champbwl)
+ MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_champbwl)
MCFG_GFXDECODE(champbwl)
MCFG_PALETTE_LENGTH(512)
@@ -511,7 +515,7 @@ MACHINE_CONFIG_END
-static SCREEN_UPDATE_IND16( doraemon )
+UINT32 champbwl_state::screen_update_doraemon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0x1f0, cliprect);
@@ -522,10 +526,10 @@ static SCREEN_UPDATE_IND16( doraemon )
return 0;
}
-static SCREEN_VBLANK( doraemon )
+void champbwl_state::screen_eof_doraemon(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
screen.machine().device<seta001_device>("spritegen")->setac_eof();
}
@@ -554,8 +558,8 @@ static MACHINE_CONFIG_START( doraemon, champbwl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(doraemon)
- MCFG_SCREEN_VBLANK_STATIC(doraemon)
+ MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_doraemon)
+ MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_doraemon)
MCFG_GFXDECODE(champbwl)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c
index 0c262bd8cae..dca41c4ee16 100644
--- a/src/mame/drivers/chanbara.c
+++ b/src/mame/drivers/chanbara.c
@@ -92,6 +92,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_chanbara(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -206,14 +207,13 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16( chanbara )
+UINT32 chanbara_state::screen_update_chanbara(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- chanbara_state *state = screen.machine().driver_data<chanbara_state>();
- state->m_bg2_tilemap->set_scrolly(0, state->m_scroll | (state->m_scrollhi << 8));
- state->m_bg2_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg2_tilemap->set_scrolly(0, m_scroll | (m_scrollhi << 8));
+ m_bg2_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -415,7 +415,7 @@ static MACHINE_CONFIG_START( chanbara, chanbara_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(chanbara)
+ MCFG_SCREEN_UPDATE_DRIVER(chanbara_state, screen_update_chanbara)
MCFG_GFXDECODE(chanbara)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/chance32.c b/src/mame/drivers/chance32.c
index ac9a33a42a1..3d3ff5f86ff 100644
--- a/src/mame/drivers/chance32.c
+++ b/src/mame/drivers/chance32.c
@@ -62,6 +62,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_chance32(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -101,18 +102,17 @@ void chance32_state::video_start()
}
-SCREEN_UPDATE_IND16( chance32 )
+UINT32 chance32_state::screen_update_chance32(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- chance32_state *state = screen.machine().driver_data<chance32_state>();
/* TODO: wtf? */
- state->m_bg_tilemap->set_scrollx(0, 352);
- state->m_bg_tilemap->set_scrolly(0, 160);
- state->m_fg_tilemap->set_scrollx(0, 352);
- state->m_fg_tilemap->set_scrolly(0, 160);
+ m_bg_tilemap->set_scrollx(0, 352);
+ m_bg_tilemap->set_scrolly(0, 160);
+ m_fg_tilemap->set_scrollx(0, 352);
+ m_fg_tilemap->set_scrolly(0, 160);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -481,7 +481,7 @@ static MACHINE_CONFIG_START( chance32, chance32_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*16, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 35*16-1, 0, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(chance32)
+ MCFG_SCREEN_UPDATE_DRIVER(chance32_state, screen_update_chance32)
MCFG_MC6845_ADD("crtc", H46505, 12000000/16, mc6845_intf) /* 52.786 Hz (similar to Major Poker) */
diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c
index f16e0959163..8b1272a14e9 100644
--- a/src/mame/drivers/changela.c
+++ b/src/mame/drivers/changela.c
@@ -515,7 +515,7 @@ static MACHINE_CONFIG_START( changela, changela_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess */
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(changela)
+ MCFG_SCREEN_UPDATE_DRIVER(changela_state, screen_update_changela)
MCFG_PALETTE_LENGTH(0x40)
diff --git a/src/mame/drivers/cheekyms.c b/src/mame/drivers/cheekyms.c
index 01b990ff977..978869a62a0 100644
--- a/src/mame/drivers/cheekyms.c
+++ b/src/mame/drivers/cheekyms.c
@@ -139,7 +139,7 @@ static MACHINE_CONFIG_START( cheekyms, cheekyms_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cheekyms)
+ MCFG_SCREEN_UPDATE_DRIVER(cheekyms_state, screen_update_cheekyms)
MCFG_GFXDECODE(cheekyms)
MCFG_PALETTE_LENGTH(0xc0)
diff --git a/src/mame/drivers/chinagat.c b/src/mame/drivers/chinagat.c
index 97827b39278..f1debbd27dd 100644
--- a/src/mame/drivers/chinagat.c
+++ b/src/mame/drivers/chinagat.c
@@ -587,7 +587,7 @@ static MACHINE_CONFIG_START( chinagat, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
@@ -631,7 +631,7 @@ static MACHINE_CONFIG_START( saiyugoub1, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
@@ -672,7 +672,7 @@ static MACHINE_CONFIG_START( saiyugoub2, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
diff --git a/src/mame/drivers/chinsan.c b/src/mame/drivers/chinsan.c
index e09e745303e..d6c2f341609 100644
--- a/src/mame/drivers/chinsan.c
+++ b/src/mame/drivers/chinsan.c
@@ -75,6 +75,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_chinsan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -97,9 +98,8 @@ void chinsan_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( chinsan )
+UINT32 chinsan_state::screen_update_chinsan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- chinsan_state *state = screen.machine().driver_data<chinsan_state>();
int y, x, count;
count = 0;
for (y = 0; y < 32; y++)
@@ -107,8 +107,8 @@ static SCREEN_UPDATE_IND16( chinsan )
for (x = 0; x < 64; x++)
{
int tileno, colour;
- tileno = state->m_video[count] | (state->m_video[count + 0x800] << 8);
- colour = state->m_video[count + 0x1000] >> 3;
+ tileno = m_video[count] | (m_video[count + 0x800] << 8);
+ colour = m_video[count + 0x1000] >> 3;
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],tileno,colour,0,0,x*8,y*8);
count++;
}
@@ -614,7 +614,7 @@ static MACHINE_CONFIG_START( chinsan, chinsan_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_VISIBLE_AREA(24, 512-24-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(chinsan)
+ MCFG_SCREEN_UPDATE_DRIVER(chinsan_state, screen_update_chinsan)
MCFG_GFXDECODE(chinsan)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/chqflag.c b/src/mame/drivers/chqflag.c
index 3e3fc35ae93..c55a9b0ad94 100644
--- a/src/mame/drivers/chqflag.c
+++ b/src/mame/drivers/chqflag.c
@@ -373,7 +373,7 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(chqflag)
+ MCFG_SCREEN_UPDATE_DRIVER(chqflag_state, screen_update_chqflag)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cinemat.c b/src/mame/drivers/cinemat.c
index c4664942d88..171c4dae2d1 100644
--- a/src/mame/drivers/cinemat.c
+++ b/src/mame/drivers/cinemat.c
@@ -999,7 +999,7 @@ static MACHINE_CONFIG_START( cinemat_nojmi_4k, cinemat_state )
MCFG_SCREEN_REFRESH_RATE(MASTER_CLOCK/4/16/16/16/16/2)
MCFG_SCREEN_SIZE(1024, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 1023, 0, 767)
- MCFG_SCREEN_UPDATE_STATIC(cinemat)
+ MCFG_SCREEN_UPDATE_DRIVER(cinemat_state, screen_update_cinemat)
MACHINE_CONFIG_END
@@ -1045,7 +1045,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( spacewar, cinemat_nojmi_4k )
MCFG_FRAGMENT_ADD(spacewar_sound)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(spacewar)
+ MCFG_SCREEN_UPDATE_DRIVER(cinemat_state, screen_update_spacewar)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c
index ba618ffd36f..59d4421813a 100644
--- a/src/mame/drivers/circus.c
+++ b/src/mame/drivers/circus.c
@@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( circus, circus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(circus)
+ MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_circus)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
@@ -329,7 +329,7 @@ static MACHINE_CONFIG_START( robotbwl, circus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(robotbwl)
+ MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_robotbwl)
MCFG_GFXDECODE(robotbwl)
MCFG_PALETTE_LENGTH(2)
@@ -369,7 +369,7 @@ static MACHINE_CONFIG_START( crash, circus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
MCFG_SCREEN_SIZE(40*8, 40*8) //TODO
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(crash)
+ MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_crash)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
@@ -401,7 +401,7 @@ static MACHINE_CONFIG_START( ripcord, circus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ripcord)
+ MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_ripcord)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c
index 7d2b8481a79..fb3bcc6b2a6 100644
--- a/src/mame/drivers/circusc.c
+++ b/src/mame/drivers/circusc.c
@@ -371,7 +371,7 @@ static MACHINE_CONFIG_START( circusc, circusc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(circusc)
+ MCFG_SCREEN_UPDATE_DRIVER(circusc_state, screen_update_circusc)
MCFG_GFXDECODE(circusc)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/cischeat.c b/src/mame/drivers/cischeat.c
index 7ccd9d669d0..a292d13667c 100644
--- a/src/mame/drivers/cischeat.c
+++ b/src/mame/drivers/cischeat.c
@@ -1584,7 +1584,7 @@ static MACHINE_CONFIG_START( bigrun, cischeat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(bigrun)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_bigrun)
MCFG_GFXDECODE(bigrun)
MCFG_PALETTE_LENGTH(16*16 * 3 + 64*16 * 2 + 64*16) /* scroll 0,1,2; road 0,1; sprites */
@@ -1626,7 +1626,7 @@ static MACHINE_CONFIG_DERIVED( cischeat, bigrun )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-8-1)
- MCFG_SCREEN_UPDATE_STATIC(cischeat)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_cischeat)
MCFG_GFXDECODE(cischeat)
MCFG_PALETTE_LENGTH(32*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
@@ -1659,7 +1659,7 @@ static MACHINE_CONFIG_DERIVED( f1gpstar, bigrun )
MCFG_VIDEO_START_OVERRIDE(cischeat_state,f1gpstar)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(f1gpstar)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_f1gpstar)
MACHINE_CONFIG_END
@@ -1717,7 +1717,7 @@ static MACHINE_CONFIG_START( scudhamm, cischeat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0 +16, 256-1 -16)
- MCFG_SCREEN_UPDATE_STATIC(scudhamm)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_scudhamm)
MCFG_GFXDECODE(scudhamm)
MCFG_PALETTE_LENGTH(16*16+16*16+128*16)
diff --git a/src/mame/drivers/citycon.c b/src/mame/drivers/citycon.c
index 348a7afb1ae..3a60804238d 100644
--- a/src/mame/drivers/citycon.c
+++ b/src/mame/drivers/citycon.c
@@ -219,7 +219,7 @@ static MACHINE_CONFIG_START( citycon, citycon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(citycon)
+ MCFG_SCREEN_UPDATE_DRIVER(citycon_state, screen_update_citycon)
MCFG_GFXDECODE(citycon)
MCFG_PALETTE_LENGTH(640+1024) /* 640 real palette + 1024 virtual palette */
diff --git a/src/mame/drivers/clayshoo.c b/src/mame/drivers/clayshoo.c
index 3bf9e0b6a6d..f8b4145b2a3 100644
--- a/src/mame/drivers/clayshoo.c
+++ b/src/mame/drivers/clayshoo.c
@@ -40,6 +40,7 @@ public:
DECLARE_READ8_MEMBER(input_port_r);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_clayshoo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -185,17 +186,16 @@ void clayshoo_state::machine_start()
*
*************************************/
-static SCREEN_UPDATE_RGB32( clayshoo )
+UINT32 clayshoo_state::screen_update_clayshoo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- clayshoo_state *state = screen.machine().driver_data<clayshoo_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 x = offs << 3;
UINT8 y = ~(offs >> 5);
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -340,7 +340,7 @@ static MACHINE_CONFIG_START( clayshoo, clayshoo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 64, 255)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_STATIC(clayshoo)
+ MCFG_SCREEN_UPDATE_DRIVER(clayshoo_state, screen_update_clayshoo)
MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c
index 1c19066ae3e..e10fde1444f 100644
--- a/src/mame/drivers/cloak.c
+++ b/src/mame/drivers/cloak.c
@@ -349,7 +349,7 @@ static MACHINE_CONFIG_START( cloak, cloak_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cloak)
+ MCFG_SCREEN_UPDATE_DRIVER(cloak_state, screen_update_cloak)
MCFG_GFXDECODE(cloak)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 0166aa9aee9..49d42bc88da 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( cloud9, cloud9_state )
MCFG_SCREEN_SIZE(HTOTAL, VTOTAL)
MCFG_SCREEN_VBLANK_TIME(0) /* VBLANK is handled manually */
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 231)
- MCFG_SCREEN_UPDATE_STATIC(cloud9)
+ MCFG_SCREEN_UPDATE_DRIVER(cloud9_state, screen_update_cloud9)
/* sound hardware */
diff --git a/src/mame/drivers/clshroad.c b/src/mame/drivers/clshroad.c
index 8c920d2760d..27c05b6ed1d 100644
--- a/src/mame/drivers/clshroad.c
+++ b/src/mame/drivers/clshroad.c
@@ -244,7 +244,7 @@ static MACHINE_CONFIG_START( firebatl, clshroad_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x120, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
- MCFG_SCREEN_UPDATE_STATIC(clshroad)
+ MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update_clshroad)
MCFG_GFXDECODE(firebatl)
MCFG_PALETTE_LENGTH(512+64*4)
@@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( clshroad, clshroad_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x120, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
- MCFG_SCREEN_UPDATE_STATIC(clshroad)
+ MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update_clshroad)
MCFG_GFXDECODE(clshroad)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c
index bb0f20ee12d..5b7fa965897 100644
--- a/src/mame/drivers/cmmb.c
+++ b/src/mame/drivers/cmmb.c
@@ -66,6 +66,7 @@ public:
DECLARE_READ8_MEMBER(kludge_r);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_cmmb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -74,10 +75,9 @@ void cmmb_state::video_start()
}
-static SCREEN_UPDATE_IND16( cmmb )
+UINT32 cmmb_state::screen_update_cmmb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cmmb_state *state = screen.machine().driver_data<cmmb_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
gfx_element *gfx = screen.machine().gfx[0];
int count = 0x00000;
@@ -325,7 +325,7 @@ static MACHINE_CONFIG_START( cmmb, cmmb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // unknown
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cmmb)
+ MCFG_SCREEN_UPDATE_DRIVER(cmmb_state, screen_update_cmmb)
MCFG_GFXDECODE(cmmb)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c
index 08093d90912..0190aa2a8a8 100644
--- a/src/mame/drivers/cninja.c
+++ b/src/mame/drivers/cninja.c
@@ -919,7 +919,7 @@ static MACHINE_CONFIG_START( cninja, cninja_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cninja)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -971,7 +971,7 @@ static MACHINE_CONFIG_START( stoneage, cninja_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cninja)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cninjabl)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl)
MCFG_GFXDECODE(cninjabl)
MCFG_PALETTE_LENGTH(2048)
@@ -1066,7 +1066,7 @@ static MACHINE_CONFIG_START( edrandy, cninja_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(edrandy)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_edrandy)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -1118,7 +1118,7 @@ static MACHINE_CONFIG_START( robocop2, cninja_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(robocop2)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
MCFG_GFXDECODE(robocop2)
MCFG_PALETTE_LENGTH(2048)
@@ -1171,7 +1171,7 @@ static MACHINE_CONFIG_START( mutantf, cninja_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mutantf)
+ MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_mutantf)
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c
index a192b424b3e..aab0610ed8a 100644
--- a/src/mame/drivers/cntsteer.c
+++ b/src/mame/drivers/cntsteer.c
@@ -90,6 +90,8 @@ public:
DECLARE_MACHINE_RESET(zerotrgt);
DECLARE_VIDEO_START(zerotrgt);
DECLARE_PALETTE_INIT(zerotrgt);
+ UINT32 screen_update_cntsteer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_zerotrgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -278,19 +280,18 @@ static void cntsteer_draw_sprites( running_machine &machine, bitmap_ind16 &bitma
}
}
-static SCREEN_UPDATE_IND16( zerotrgt )
+UINT32 cntsteer_state::screen_update_zerotrgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cntsteer_state *state = screen.machine().driver_data<cntsteer_state>();
- if (state->m_disable_roz)
- bitmap.fill(screen.machine().pens[8 * state->m_bg_color_bank], cliprect);
+ if (m_disable_roz)
+ bitmap.fill(screen.machine().pens[8 * m_bg_color_bank], cliprect);
else
{
int p1, p2, p3, p4;
int rot_val, x, y;
- rot_val = state->m_rotation_sign ? (-state->m_rotation_x) : (state->m_rotation_x);
+ rot_val = m_rotation_sign ? (-m_rotation_x) : (m_rotation_x);
-// popmessage("%d %02x %02x", rot_val, state->m_rotation_sign, state->m_rotation_x);
+// popmessage("%d %02x %02x", rot_val, m_rotation_sign, m_rotation_x);
if (rot_val > 90) { rot_val = 90; }
if (rot_val < -90) { rot_val = -90; }
@@ -312,10 +313,10 @@ static SCREEN_UPDATE_IND16( zerotrgt )
p3 = 65536 * 1 * sin(2 * M_PI * (rot_val) / 1024);
p4 = -65536 * 1 * cos(2 * M_PI * (rot_val) / 1024);
- x = -256 - (state->m_scrollx | state->m_scrollx_hi);
- y = 256 + (state->m_scrolly | state->m_scrolly_hi);
+ x = -256 - (m_scrollx | m_scrollx_hi);
+ y = 256 + (m_scrolly | m_scrolly_hi);
- state->m_bg_tilemap->draw_roz(bitmap, cliprect,
+ m_bg_tilemap->draw_roz(bitmap, cliprect,
(x << 16), (y << 16),
p1, p2,
p3, p4,
@@ -324,25 +325,24 @@ static SCREEN_UPDATE_IND16( zerotrgt )
}
zerotrgt_draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
-static SCREEN_UPDATE_IND16( cntsteer )
+UINT32 cntsteer_state::screen_update_cntsteer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cntsteer_state *state = screen.machine().driver_data<cntsteer_state>();
- if (state->m_disable_roz)
- bitmap.fill(screen.machine().pens[8 * state->m_bg_color_bank], cliprect);
+ if (m_disable_roz)
+ bitmap.fill(screen.machine().pens[8 * m_bg_color_bank], cliprect);
else
{
int p1, p2, p3, p4;
int rot_val, x, y;
- rot_val = (state->m_rotation_x) | ((state->m_rotation_sign & 3) << 8);
- rot_val = (state->m_rotation_sign & 4) ? (rot_val) : (-rot_val);
-// popmessage("%d %02x %02x", rot_val, state->m_rotation_sign, state->m_rotation_x);
+ rot_val = (m_rotation_x) | ((m_rotation_sign & 3) << 8);
+ rot_val = (m_rotation_sign & 4) ? (rot_val) : (-rot_val);
+// popmessage("%d %02x %02x", rot_val, m_rotation_sign, m_rotation_x);
/*
(u, v) = (a + cx + dy, b - dx + cy) when (x, y)=screen and (u, v) = tilemap
@@ -361,10 +361,10 @@ static SCREEN_UPDATE_IND16( cntsteer )
p3 = 65536 * 1 * sin(2 * M_PI * (rot_val) / 1024);
p4 = -65536 * 1 * cos(2 * M_PI * (rot_val) / 1024);
- x = 256 + (state->m_scrollx | state->m_scrollx_hi);
- y = 256 - (state->m_scrolly | state->m_scrolly_hi);
+ x = 256 + (m_scrollx | m_scrollx_hi);
+ y = 256 - (m_scrolly | m_scrolly_hi);
- state->m_bg_tilemap->draw_roz(bitmap, cliprect,
+ m_bg_tilemap->draw_roz(bitmap, cliprect,
(x << 16), (y << 16),
p1, p2,
p3, p4,
@@ -373,7 +373,7 @@ static SCREEN_UPDATE_IND16( cntsteer )
}
cntsteer_draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -902,7 +902,7 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cntsteer)
+ MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_cntsteer)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
@@ -951,7 +951,7 @@ static MACHINE_CONFIG_START( zerotrgt, cntsteer_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(zerotrgt)
+ MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_zerotrgt)
MCFG_GFXDECODE(zerotrgt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/cobra.c b/src/mame/drivers/cobra.c
index 35a5d884020..e5a21e411f1 100644
--- a/src/mame/drivers/cobra.c
+++ b/src/mame/drivers/cobra.c
@@ -720,6 +720,7 @@ public:
DECLARE_DRIVER_INIT(cobra);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_cobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
void cobra_renderer::render_color_scan(INT32 scanline, const extent_t &extent, const cobra_polydata &extradata, int threadid)
@@ -994,11 +995,10 @@ void cobra_state::video_start()
m_renderer->gfx_init(machine());
}
-SCREEN_UPDATE_RGB32( cobra )
+UINT32 cobra_state::screen_update_cobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- cobra_state *cobra = screen.machine().driver_data<cobra_state>();
- if (cobra->m_has_psac)
+ if (m_has_psac)
{
device_t *k001604 = screen.machine().device("k001604");
@@ -1006,7 +1006,7 @@ SCREEN_UPDATE_RGB32( cobra )
k001604_draw_front_layer(k001604, bitmap, cliprect);
}
- cobra->m_renderer->display(&bitmap, cliprect);
+ m_renderer->display(&bitmap, cliprect);
return 0;
}
@@ -3260,7 +3260,7 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
MCFG_PALETTE_LENGTH(65536)
- MCFG_SCREEN_UPDATE_STATIC(cobra)
+ MCFG_SCREEN_UPDATE_DRIVER(cobra_state, screen_update_cobra)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c
index e07d5a7b4df..037676af032 100644
--- a/src/mame/drivers/coinmstr.c
+++ b/src/mame/drivers/coinmstr.c
@@ -55,6 +55,7 @@ public:
DECLARE_DRIVER_INIT(coinmstr);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
+ UINT32 screen_update_coinmstr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -920,10 +921,9 @@ void coinmstr_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(coinmstr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 46, 32);
}
-static SCREEN_UPDATE_IND16( coinmstr )
+UINT32 coinmstr_state::screen_update_coinmstr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- coinmstr_state *state = screen.machine().driver_data<coinmstr_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -1022,7 +1022,7 @@ static MACHINE_CONFIG_START( coinmstr, coinmstr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 46*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(coinmstr)
+ MCFG_SCREEN_UPDATE_DRIVER(coinmstr_state, screen_update_coinmstr)
MCFG_GFXDECODE(coinmstr)
MCFG_PALETTE_LENGTH(46*32*4)
diff --git a/src/mame/drivers/coinmvga.c b/src/mame/drivers/coinmvga.c
index 8185c9f09fb..9b7894aedcc 100644
--- a/src/mame/drivers/coinmvga.c
+++ b/src/mame/drivers/coinmvga.c
@@ -236,6 +236,7 @@ public:
DECLARE_DRIVER_INIT(cmrltv75);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_coinmvga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -249,9 +250,8 @@ void coinmvga_state::video_start()
}
-static SCREEN_UPDATE_IND16( coinmvga )
+UINT32 coinmvga_state::screen_update_coinmvga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- coinmvga_state *state = screen.machine().driver_data<coinmvga_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count = 0x04000/2;
@@ -262,7 +262,7 @@ static SCREEN_UPDATE_IND16( coinmvga )
{
for (x=0;x<128;x++)
{
- int tile = state->m_vram[count];
+ int tile = m_vram[count];
//int colour = tile>>12;
drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8);
@@ -683,7 +683,7 @@ static MACHINE_CONFIG_START( coinmvga, coinmvga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640,480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_STATIC(coinmvga)
+ MCFG_SCREEN_UPDATE_DRIVER(coinmvga_state, screen_update_coinmvga)
MCFG_GFXDECODE(coinmvga)
diff --git a/src/mame/drivers/combatsc.c b/src/mame/drivers/combatsc.c
index 8b1012fd21f..f29aff33055 100644
--- a/src/mame/drivers/combatsc.c
+++ b/src/mame/drivers/combatsc.c
@@ -750,7 +750,7 @@ static MACHINE_CONFIG_START( combatsc, combatsc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(combatsc)
+ MCFG_SCREEN_UPDATE_DRIVER(combatsc_state, screen_update_combatsc)
MCFG_GFXDECODE(combatsc)
MCFG_PALETTE_LENGTH(8*16*16)
@@ -801,7 +801,7 @@ static MACHINE_CONFIG_START( combatscb, combatsc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(combatscb)
+ MCFG_SCREEN_UPDATE_DRIVER(combatsc_state, screen_update_combatscb)
MCFG_GFXDECODE(combatscb)
MCFG_PALETTE_LENGTH(8*16*16)
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index 1205396936d..d8af16cd562 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -260,7 +260,7 @@ static MACHINE_CONFIG_START( commando, commando_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(commando)
+ MCFG_SCREEN_UPDATE_DRIVER(commando_state, screen_update_commando)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(commando)
diff --git a/src/mame/drivers/compgolf.c b/src/mame/drivers/compgolf.c
index 098892bbfc4..2ce772f68b1 100644
--- a/src/mame/drivers/compgolf.c
+++ b/src/mame/drivers/compgolf.c
@@ -257,7 +257,7 @@ static MACHINE_CONFIG_START( compgolf, compgolf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(compgolf)
+ MCFG_SCREEN_UPDATE_DRIVER(compgolf_state, screen_update_compgolf)
MCFG_PALETTE_LENGTH(0x100)
MCFG_GFXDECODE(compgolf)
diff --git a/src/mame/drivers/contra.c b/src/mame/drivers/contra.c
index 7d9d77ad2a7..8d98e8ac490 100644
--- a/src/mame/drivers/contra.c
+++ b/src/mame/drivers/contra.c
@@ -206,7 +206,7 @@ static MACHINE_CONFIG_START( contra, contra_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(contra)
+ MCFG_SCREEN_UPDATE_DRIVER(contra_state, screen_update_contra)
MCFG_GFXDECODE(contra)
MCFG_PALETTE_LENGTH(2*8*16*16)
diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c
index 62c8900adfc..dd2e175c5a2 100644
--- a/src/mame/drivers/coolridr.c
+++ b/src/mame/drivers/coolridr.c
@@ -319,6 +319,7 @@ public:
DECLARE_DRIVER_INIT(coolridr);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_coolridr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -331,9 +332,8 @@ void coolridr_state::video_start()
m_test_offs = 0x2000;
}
-static SCREEN_UPDATE_RGB32(coolridr)
+UINT32 coolridr_state::screen_update_coolridr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- coolridr_state *state = screen.machine().driver_data<coolridr_state>();
/* planes seems to basically be at 0x8000 and 0x28000... */
gfx_element *gfx = screen.machine().gfx[2];
UINT32 count;
@@ -341,35 +341,35 @@ static SCREEN_UPDATE_RGB32(coolridr)
if(screen.machine().input().code_pressed(KEYCODE_Z))
- state->m_test_offs+=4;
+ m_test_offs+=4;
if(screen.machine().input().code_pressed(KEYCODE_X))
- state->m_test_offs-=4;
+ m_test_offs-=4;
if(screen.machine().input().code_pressed(KEYCODE_C))
- state->m_test_offs+=0x40;
+ m_test_offs+=0x40;
if(screen.machine().input().code_pressed(KEYCODE_V))
- state->m_test_offs-=0x40;
+ m_test_offs-=0x40;
if(screen.machine().input().code_pressed(KEYCODE_B))
- state->m_test_offs+=0x400;
+ m_test_offs+=0x400;
if(screen.machine().input().code_pressed(KEYCODE_N))
- state->m_test_offs-=0x400;
+ m_test_offs-=0x400;
if(screen.machine().input().code_pressed_once(KEYCODE_A))
- state->m_color++;
+ m_color++;
if(screen.machine().input().code_pressed_once(KEYCODE_S))
- state->m_color--;
+ m_color--;
- if(state->m_test_offs > 0x100000*4)
- state->m_test_offs = 0;
+ if(m_test_offs > 0x100000*4)
+ m_test_offs = 0;
- count = state->m_test_offs/4;
+ count = m_test_offs/4;
- popmessage("%08x %04x",state->m_test_offs,state->m_color);
+ popmessage("%08x %04x",m_test_offs,m_color);
for (y=0;y<64;y++)
{
@@ -377,18 +377,18 @@ static SCREEN_UPDATE_RGB32(coolridr)
{
int tile;
- tile = (state->m_h1_vram[count] & 0x0fff0000) >> 16;
- drawgfx_opaque(bitmap,cliprect,gfx,tile,state->m_color,0,0,(x+0)*16,y*16);
+ tile = (m_h1_vram[count] & 0x0fff0000) >> 16;
+ drawgfx_opaque(bitmap,cliprect,gfx,tile,m_color,0,0,(x+0)*16,y*16);
- tile = (state->m_h1_vram[count] & 0x00000fff) >> 0;
- drawgfx_opaque(bitmap,cliprect,gfx,tile,state->m_color,0,0,(x+1)*16,y*16);
+ tile = (m_h1_vram[count] & 0x00000fff) >> 0;
+ drawgfx_opaque(bitmap,cliprect,gfx,tile,m_color,0,0,(x+1)*16,y*16);
count++;
}
}
- copybitmap_trans(bitmap, state->m_temp_bitmap_sprites, 0, 0, 0, 0, cliprect, 0);
- state->m_temp_bitmap_sprites.fill(0, cliprect);
+ copybitmap_trans(bitmap, m_temp_bitmap_sprites, 0, 0, 0, 0, cliprect, 0);
+ m_temp_bitmap_sprites.fill(0, cliprect);
return 0;
@@ -1181,7 +1181,7 @@ static MACHINE_CONFIG_START( coolridr, coolridr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(128*8+22, 64*8+44)
MCFG_SCREEN_VISIBLE_AREA(0*8, 128*8-1, 0*8, 64*8-1) //TODO: these are just two different screens
- MCFG_SCREEN_UPDATE_STATIC(coolridr)
+ MCFG_SCREEN_UPDATE_DRIVER(coolridr_state, screen_update_coolridr)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/cop01.c b/src/mame/drivers/cop01.c
index f070434e0d4..c2866446810 100644
--- a/src/mame/drivers/cop01.c
+++ b/src/mame/drivers/cop01.c
@@ -467,7 +467,7 @@ static MACHINE_CONFIG_START( cop01, cop01_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cop01)
+ MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
MCFG_GFXDECODE(cop01)
MCFG_PALETTE_LENGTH(16+8*16+16*16)
@@ -505,7 +505,7 @@ static MACHINE_CONFIG_START( mightguy, cop01_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cop01)
+ MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
MCFG_GFXDECODE(cop01)
MCFG_PALETTE_LENGTH(16+8*16+16*16)
diff --git a/src/mame/drivers/copsnrob.c b/src/mame/drivers/copsnrob.c
index e487ee47451..dfd66ffa2a1 100644
--- a/src/mame/drivers/copsnrob.c
+++ b/src/mame/drivers/copsnrob.c
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( copsnrob, copsnrob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 26*8-1)
- MCFG_SCREEN_UPDATE_STATIC(copsnrob)
+ MCFG_SCREEN_UPDATE_DRIVER(copsnrob_state, screen_update_copsnrob)
MCFG_GFXDECODE(copsnrob)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/corona.c b/src/mame/drivers/corona.c
index a9244202bcb..4ba6d045b85 100644
--- a/src/mame/drivers/corona.c
+++ b/src/mame/drivers/corona.c
@@ -348,6 +348,8 @@ public:
DECLARE_WRITE8_MEMBER(ay_port_b_out);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_winner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_luckyrlt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -459,26 +461,24 @@ void corona_state::video_start()
m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
}
-static SCREEN_UPDATE_IND16(winner)
+UINT32 corona_state::screen_update_winner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- corona_state *state = screen.machine().driver_data<corona_state>();
int x, y;
for (y = 0; y < 256; y++)
for (x = 0; x < 256; x++)
- bitmap.pix16(y, x) = state->m_videobuf[y * 512 + x];
+ bitmap.pix16(y, x) = m_videobuf[y * 512 + x];
return 0;
}
-static SCREEN_UPDATE_IND16(luckyrlt)
+UINT32 corona_state::screen_update_luckyrlt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- corona_state *state = screen.machine().driver_data<corona_state>();
int x, y;
for (y = 0; y < 256; y++)
for (x = 0; x < 256; x++)
- bitmap.pix16(255 - y, x) = state->m_videobuf[y * 512 + x];
+ bitmap.pix16(255 - y, x) = m_videobuf[y * 512 + x];
return 0;
}
@@ -1374,7 +1374,7 @@ static MACHINE_CONFIG_START( winner81, corona_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(winner)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1405,7 +1405,7 @@ static MACHINE_CONFIG_START( winner82, corona_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(winner)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1436,7 +1436,7 @@ static MACHINE_CONFIG_START( re800, corona_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(winner)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1466,7 +1466,7 @@ static MACHINE_CONFIG_START( rcirulet, corona_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(winner)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1497,7 +1497,7 @@ static MACHINE_CONFIG_START( luckyrlt, corona_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(luckyrlt)
+ MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_luckyrlt)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index 1a53b11d941..0bd0a1fb3e1 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -1025,7 +1025,7 @@ static MACHINE_CONFIG_DERIVED( panic, cosmic )
MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,panic)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(panic)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_panic)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1050,7 +1050,7 @@ static MACHINE_CONFIG_DERIVED( cosmica, cosmic )
MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,cosmica)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(cosmica)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmica)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1083,7 +1083,7 @@ static MACHINE_CONFIG_START( cosmicg, cosmic_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cosmicg)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmicg)
MCFG_PALETTE_LENGTH(16)
@@ -1112,7 +1112,7 @@ static MACHINE_CONFIG_DERIVED( magspot, cosmic )
MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,magspot)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(magspot)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_magspot)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1128,7 +1128,7 @@ static MACHINE_CONFIG_DERIVED( devzone, magspot )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(devzone)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_devzone)
MACHINE_CONFIG_END
@@ -1144,7 +1144,7 @@ static MACHINE_CONFIG_DERIVED( nomnlnd, cosmic )
MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,nomnlnd)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(nomnlnd)
+ MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_nomnlnd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index a247ee8280c..cf612f93c48 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -3067,8 +3067,8 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3151,8 +3151,8 @@ static MACHINE_CONFIG_START( cpspicb, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3225,8 +3225,8 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3309,8 +3309,8 @@ static MACHINE_CONFIG_START( knightsb, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c
index e1602dfccfe..13c9b5fe56d 100644
--- a/src/mame/drivers/cps2.c
+++ b/src/mame/drivers/cps2.c
@@ -1241,8 +1241,8 @@ static MACHINE_CONFIG_START( cps2, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_8MHz, 518, 64, 448, 259, 16, 240)
- MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
/*
Measured clocks:
V = 59.6376Hz
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index 267a211aede..4ab17fffbd4 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -933,9 +933,8 @@ static void cps3_draw_tilemapsprite_line(running_machine &machine, int tmnum, in
}
}
-static SCREEN_UPDATE_RGB32(cps3)
+UINT32 cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- cps3_state *state = screen.machine().driver_data<cps3_state>();
int y,x, count;
attoseconds_t period = screen.frame_period().attoseconds;
rectangle visarea = screen.visible_area();
@@ -951,27 +950,27 @@ static SCREEN_UPDATE_RGB32(cps3)
/* registers are normally 002a006f 01ef01c6
widescreen mode = 00230076 026501c6
only SFIII2 uses widescreen, I don't know exactly which register controls it */
- if (((state->m_fullscreenzoom[1]&0xffff0000)>>16)==0x0265)
+ if (((m_fullscreenzoom[1]&0xffff0000)>>16)==0x0265)
{
- if (state->m_screenwidth!=496)
+ if (m_screenwidth!=496)
{
- state->m_screenwidth = 496;
+ m_screenwidth = 496;
visarea.set(0, 496-1, 0, 224-1);
screen.configure(496, 224, visarea, period);
}
}
else
{
- if (state->m_screenwidth!=384)
+ if (m_screenwidth!=384)
{
- state->m_screenwidth = 384;
+ m_screenwidth = 384;
visarea.set(0, 384-1, 0, 224-1);
screen.configure(384, 224, visarea, period);
}
}
- fullscreenzoomx = state->m_fullscreenzoom[3] & 0x000000ff;
- fullscreenzoomy = state->m_fullscreenzoom[3] & 0x000000ff;
+ fullscreenzoomx = m_fullscreenzoom[3] & 0x000000ff;
+ fullscreenzoomy = m_fullscreenzoom[3] & 0x000000ff;
/* clamp at 0x80, I don't know if this is accurate */
if (fullscreenzoomx>0x80) fullscreenzoomx = 0x80;
if (fullscreenzoomy>0x80) fullscreenzoomy = 0x80;
@@ -979,12 +978,12 @@ static SCREEN_UPDATE_RGB32(cps3)
fszx = (fullscreenzoomx<<16)/0x40;
fszy = (fullscreenzoomy<<16)/0x40;
- state->m_renderbuffer_clip.min_x = 0;
- state->m_renderbuffer_clip.max_x = ((state->m_screenwidth*fszx)>>16)-1;
- state->m_renderbuffer_clip.min_y = 0;
- state->m_renderbuffer_clip.max_y = ((224*fszx)>>16)-1;
+ m_renderbuffer_clip.min_x = 0;
+ m_renderbuffer_clip.max_x = ((m_screenwidth*fszx)>>16)-1;
+ m_renderbuffer_clip.min_y = 0;
+ m_renderbuffer_clip.max_y = ((224*fszx)>>16)-1;
- state->m_renderbuffer_bitmap.fill(0, state->m_renderbuffer_clip);
+ m_renderbuffer_bitmap.fill(0, m_renderbuffer_clip);
/* Sprites */
{
@@ -993,37 +992,37 @@ static SCREEN_UPDATE_RGB32(cps3)
//printf("Spritelist start:\n");
for (i=0x00000/4;i<0x2000/4;i+=4)
{
- int xpos = (state->m_spriteram[i+1]&0x03ff0000)>>16;
- int ypos = state->m_spriteram[i+1]&0x000003ff;
+ int xpos = (m_spriteram[i+1]&0x03ff0000)>>16;
+ int ypos = m_spriteram[i+1]&0x000003ff;
int j;
- int gscroll = (state->m_spriteram[i+0]&0x70000000)>>28;
- int length = (state->m_spriteram[i+0]&0x01ff0000)>>16; // how many entries in the sprite table
- UINT32 start = (state->m_spriteram[i+0]&0x00007ff0)>>4;
-
- int whichbpp = (state->m_spriteram[i+2]&0x40000000)>>30; // not 100% sure if this is right, jojo title / characters
- int whichpal = (state->m_spriteram[i+2]&0x20000000)>>29;
- int global_xflip = (state->m_spriteram[i+2]&0x10000000)>>28;
- int global_yflip = (state->m_spriteram[i+2]&0x08000000)>>27;
- int global_alpha = (state->m_spriteram[i+2]&0x04000000)>>26; // alpha / shadow? set on sfiii2 shadows, and big black image in jojo intro
- int global_bpp = (state->m_spriteram[i+2]&0x02000000)>>25;
- int global_pal = (state->m_spriteram[i+2]&0x01ff0000)>>16;
-
- int gscrollx = (state->m_unk_vidregs[gscroll]&0x03ff0000)>>16;
- int gscrolly = (state->m_unk_vidregs[gscroll]&0x000003ff)>>0;
+ int gscroll = (m_spriteram[i+0]&0x70000000)>>28;
+ int length = (m_spriteram[i+0]&0x01ff0000)>>16; // how many entries in the sprite table
+ UINT32 start = (m_spriteram[i+0]&0x00007ff0)>>4;
+
+ int whichbpp = (m_spriteram[i+2]&0x40000000)>>30; // not 100% sure if this is right, jojo title / characters
+ int whichpal = (m_spriteram[i+2]&0x20000000)>>29;
+ int global_xflip = (m_spriteram[i+2]&0x10000000)>>28;
+ int global_yflip = (m_spriteram[i+2]&0x08000000)>>27;
+ int global_alpha = (m_spriteram[i+2]&0x04000000)>>26; // alpha / shadow? set on sfiii2 shadows, and big black image in jojo intro
+ int global_bpp = (m_spriteram[i+2]&0x02000000)>>25;
+ int global_pal = (m_spriteram[i+2]&0x01ff0000)>>16;
+
+ int gscrollx = (m_unk_vidregs[gscroll]&0x03ff0000)>>16;
+ int gscrolly = (m_unk_vidregs[gscroll]&0x000003ff)>>0;
start = (start * 0x100) >> 2;
- if ((state->m_spriteram[i+0]&0xf0000000) == 0x80000000)
+ if ((m_spriteram[i+0]&0xf0000000) == 0x80000000)
break;
for (j=0;j<(length)*4;j+=4)
{
- UINT32 value1 = (state->m_spriteram[start+j+0]);
- UINT32 value2 = (state->m_spriteram[start+j+1]);
- UINT32 value3 = (state->m_spriteram[start+j+2]);
+ UINT32 value1 = (m_spriteram[start+j+0]);
+ UINT32 value2 = (m_spriteram[start+j+1]);
+ UINT32 value3 = (m_spriteram[start+j+2]);
- //UINT8* srcdata = (UINT8*)state->m_char_ram;
+ //UINT8* srcdata = (UINT8*)m_char_ram;
//UINT32 sourceoffset = (value1 >>14)&0x7fffff;
int count;
@@ -1061,7 +1060,7 @@ static SCREEN_UPDATE_RGB32(cps3)
//int endline;
//int height = (value3 & 0x7f000000)>>24;
int uu;
-// UINT32* tmapregs[4] = { state->m_tilemap20_regs_base, state->m_tilemap30_regs_base, state->m_tilemap40_regs_base, state->m_tilemap50_regs_base };
+// UINT32* tmapregs[4] = { m_tilemap20_regs_base, m_tilemap30_regs_base, m_tilemap40_regs_base, m_tilemap50_regs_base };
// UINT32* regs;
// regs = tmapregs[tilemapnum];
//endline = value2;
@@ -1083,7 +1082,7 @@ static SCREEN_UPDATE_RGB32(cps3)
{
for (uu=0;uu<1023;uu++)
{
- cps3_draw_tilemapsprite_line(screen.machine(), tilemapnum, uu, state->m_renderbuffer_bitmap, state->m_renderbuffer_clip );
+ cps3_draw_tilemapsprite_line(screen.machine(), tilemapnum, uu, m_renderbuffer_bitmap, m_renderbuffer_clip );
}
}
bg_drawn[tilemapnum] = 1;
@@ -1141,7 +1140,7 @@ static SCREEN_UPDATE_RGB32(cps3)
if (current_ypos&0x200) current_ypos-=0x400;
- //if ( (whichbpp) && (machine.primary_screen->frame_number() & 1)) continue;
+ //if ( (whichbpp) && (machine().primary_screen->frame_number() & 1)) continue;
/* use the palette value from the main list or the sublists? */
if (whichpal)
@@ -1170,11 +1169,11 @@ static SCREEN_UPDATE_RGB32(cps3)
if (global_alpha || alpha)
{
- cps3_drawgfxzoom(state->m_renderbuffer_bitmap,state->m_renderbuffer_clip,screen.machine().gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,CPS3_TRANSPARENCY_PEN_INDEX_BLEND,0,xinc,yinc, NULL, 0);
+ cps3_drawgfxzoom(m_renderbuffer_bitmap,m_renderbuffer_clip,screen.machine().gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,CPS3_TRANSPARENCY_PEN_INDEX_BLEND,0,xinc,yinc, NULL, 0);
}
else
{
- cps3_drawgfxzoom(state->m_renderbuffer_bitmap,state->m_renderbuffer_clip,screen.machine().gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,CPS3_TRANSPARENCY_PEN_INDEX,0,xinc,yinc, NULL, 0);
+ cps3_drawgfxzoom(m_renderbuffer_bitmap,m_renderbuffer_clip,screen.machine().gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,CPS3_TRANSPARENCY_PEN_INDEX,0,xinc,yinc, NULL, 0);
}
count++;
}
@@ -1201,12 +1200,12 @@ static SCREEN_UPDATE_RGB32(cps3)
for (rendery=0;rendery<224;rendery++)
{
dstbitmap = &bitmap.pix32(rendery);
- srcbitmap = &state->m_renderbuffer_bitmap.pix32(srcy>>16);
+ srcbitmap = &m_renderbuffer_bitmap.pix32(srcy>>16);
srcx=0;
- for (renderx=0;renderx<state->m_screenwidth;renderx++)
+ for (renderx=0;renderx<m_screenwidth;renderx++)
{
- dstbitmap[renderx] = state->m_mame_colours[srcbitmap[srcx>>16]&0x1ffff];
+ dstbitmap[renderx] = m_mame_colours[srcbitmap[srcx>>16]&0x1ffff];
srcx += fszx;
}
@@ -1218,26 +1217,26 @@ static SCREEN_UPDATE_RGB32(cps3)
/* Copy the first 0x800 colours to be used for fg layer rendering */
// for (offset=0;offset<0x200;offset++)
// {
-// int palreadbase = (state->m_ss_pal_base << 9);
-// palette_set_color(machine,offset,state->m_mame_colours[palreadbase+offset]);
+// int palreadbase = (m_ss_pal_base << 9);
+// palette_set_color(machine(),offset,m_mame_colours[palreadbase+offset]);
// }
// fg layer
{
// bank select? (sfiii2 intro)
- if (state->m_ss_bank_base & 0x01000000) count = 0x000;
+ if (m_ss_bank_base & 0x01000000) count = 0x000;
else count = 0x800;
for (y=0;y<32;y++)
{
for (x=0;x<64;x++)
{
- UINT32 data = state->m_ss_ram[count]; // +0x800 = 2nd bank, used on sfiii2 intro..
+ UINT32 data = m_ss_ram[count]; // +0x800 = 2nd bank, used on sfiii2 intro..
UINT32 tile = (data >> 16) & 0x1ff;
int pal = (data&0x003f) >> 1;
int flipx = (data & 0x0080) >> 7;
int flipy = (data & 0x0040) >> 6;
- pal += state->m_ss_pal_base << 5;
+ pal += m_ss_pal_base << 5;
tile+=0x200;
cps3_drawgfxzoom(bitmap, cliprect, screen.machine().gfx[0],tile,pal,flipx,flipy,x*8,y*8,CPS3_TRANSPARENCY_PEN,0,0x10000,0x10000,NULL,0);
@@ -2506,7 +2505,7 @@ static MACHINE_CONFIG_START( cps3, cps3_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_60MHz/8, 486, 0, 384, 259, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(cps3)
+ MCFG_SCREEN_UPDATE_DRIVER(cps3_state, screen_update_cps3)
/*
Measured clocks:
V = 59.5992Hz
diff --git a/src/mame/drivers/crbaloon.c b/src/mame/drivers/crbaloon.c
index cd7cea200dd..a9d51f3416d 100644
--- a/src/mame/drivers/crbaloon.c
+++ b/src/mame/drivers/crbaloon.c
@@ -384,7 +384,7 @@ static MACHINE_CONFIG_START( crbaloon, crbaloon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(crbaloon)
+ MCFG_SCREEN_UPDATE_DRIVER(crbaloon_state, screen_update_crbaloon)
/* audio hardware */
MCFG_FRAGMENT_ADD(crbaloon_audio)
diff --git a/src/mame/drivers/crimfght.c b/src/mame/drivers/crimfght.c
index 3593b6ddb73..34bd6a5e069 100644
--- a/src/mame/drivers/crimfght.c
+++ b/src/mame/drivers/crimfght.c
@@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(crimfght)
+ MCFG_SCREEN_UPDATE_DRIVER(crimfght_state, screen_update_crimfght)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/crospang.c b/src/mame/drivers/crospang.c
index 9468e8d49e3..2bc030be116 100644
--- a/src/mame/drivers/crospang.c
+++ b/src/mame/drivers/crospang.c
@@ -362,7 +362,7 @@ static MACHINE_CONFIG_START( crospang, crospang_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(crospang)
+ MCFG_SCREEN_UPDATE_DRIVER(crospang_state, screen_update_crospang)
MCFG_PALETTE_LENGTH(0x300)
MCFG_GFXDECODE(crospang)
diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c
index 5719f009a89..fb7c55d2ff2 100644
--- a/src/mame/drivers/crshrace.c
+++ b/src/mame/drivers/crshrace.c
@@ -475,8 +475,8 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(crshrace)
- MCFG_SCREEN_VBLANK_STATIC(crshrace)
+ MCFG_SCREEN_UPDATE_DRIVER(crshrace_state, screen_update_crshrace)
+ MCFG_SCREEN_VBLANK_DRIVER(crshrace_state, screen_eof_crshrace)
MCFG_GFXDECODE(crshrace)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index dee733d7012..f41c72ed2eb 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -190,6 +190,8 @@ public:
DECLARE_DRIVER_INIT(evosocc);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_crystal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_crystal(screen_device &screen, bool state);
};
static void IntReq( running_machine &machine, int num )
@@ -647,9 +649,8 @@ static void SetVidReg( address_space &space, UINT16 reg, UINT16 val )
}
-static SCREEN_UPDATE_IND16( crystal )
+UINT32 crystal_state::screen_update_crystal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- crystal_state *state = screen.machine().driver_data<crystal_state>();
address_space &space = *screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
int DoFlip;
@@ -664,18 +665,18 @@ static SCREEN_UPDATE_IND16( crystal )
if (GetVidReg(space, 0x8e) & 1)
{
- Front = (UINT16*) (state->m_frameram + B1 / 4);
- Back = (UINT16*) (state->m_frameram + B0 / 4);
+ Front = (UINT16*) (m_frameram + B1 / 4);
+ Back = (UINT16*) (m_frameram + B0 / 4);
}
else
{
- Front = (UINT16*) (state->m_frameram + B0 / 4);
- Back = (UINT16*) (state->m_frameram + B1 / 4);
+ Front = (UINT16*) (m_frameram + B0 / 4);
+ Back = (UINT16*) (m_frameram + B1 / 4);
}
Visible = (UINT16*) Front;
// ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
- DrawDest = reinterpret_cast<UINT16 *>(state->m_frameram.target());
+ DrawDest = reinterpret_cast<UINT16 *>(m_frameram.target());
if (GetVidReg(space, 0x8c) & 0x80)
@@ -693,7 +694,7 @@ static SCREEN_UPDATE_IND16( crystal )
while ((head & 0x7ff) != (tail & 0x7ff))
{
// ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
- DoFlip = vrender0_ProcessPacket(state->m_vr0video, 0x03800000 + head * 64, DrawDest, reinterpret_cast<UINT8*>(state->m_textureram.target()));
+ DoFlip = vrender0_ProcessPacket(m_vr0video, 0x03800000 + head * 64, DrawDest, reinterpret_cast<UINT8*>(m_textureram.target()));
head++;
head &= 0x7ff;
if (DoFlip)
@@ -710,12 +711,11 @@ static SCREEN_UPDATE_IND16( crystal )
return 0;
}
-static SCREEN_VBLANK(crystal)
+void crystal_state::screen_eof_crystal(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- crystal_state *state = screen.machine().driver_data<crystal_state>();
address_space &space = *screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
UINT16 head, tail;
int DoFlip = 0;
@@ -735,8 +735,8 @@ static SCREEN_VBLANK(crystal)
SetVidReg(space, 0x82, head);
if (DoFlip)
{
- if (state->m_FlipCount)
- state->m_FlipCount--;
+ if (m_FlipCount)
+ m_FlipCount--;
}
}
@@ -851,8 +851,8 @@ static MACHINE_CONFIG_START( crystal, crystal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(crystal)
- MCFG_SCREEN_VBLANK_STATIC(crystal)
+ MCFG_SCREEN_UPDATE_DRIVER(crystal_state, screen_update_crystal)
+ MCFG_SCREEN_VBLANK_DRIVER(crystal_state, screen_eof_crystal)
MCFG_VIDEO_VRENDER0_ADD("vr0", vr0video_config)
diff --git a/src/mame/drivers/cshooter.c b/src/mame/drivers/cshooter.c
index b9e3f2b08d0..65211ca2d5e 100644
--- a/src/mame/drivers/cshooter.c
+++ b/src/mame/drivers/cshooter.c
@@ -119,6 +119,7 @@ public:
virtual void video_start();
DECLARE_MACHINE_RESET(cshooter);
DECLARE_MACHINE_RESET(airraid);
+ UINT32 screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -150,17 +151,16 @@ void cshooter_state::video_start()
m_txtilemap->set_transparent_pen(3);
}
-static SCREEN_UPDATE_IND16(cshooter)
+UINT32 cshooter_state::screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cshooter_state *state = screen.machine().driver_data<cshooter_state>();
bitmap.fill(0/*get_black_pen(screen.screen.machine(, cliprect))*/);
- state->m_txtilemap->mark_all_dirty();
+ m_txtilemap->mark_all_dirty();
//sprites
{
- UINT8 *spriteram = state->m_spriteram;
+ UINT8 *spriteram = m_spriteram;
int i;
- for(i=0;i<state->m_spriteram.bytes();i+=4)
+ for(i=0;i<m_spriteram.bytes();i+=4)
{
if(spriteram[i+3]!=0)
{
@@ -193,8 +193,8 @@ static SCREEN_UPDATE_IND16(cshooter)
}
}
- state->m_txtilemap->mark_all_dirty();
- state->m_txtilemap->draw(bitmap, cliprect, 0,0);
+ m_txtilemap->mark_all_dirty();
+ m_txtilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -452,7 +452,7 @@ static MACHINE_CONFIG_START( cshooter, cshooter_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(cshooter)
+ MCFG_SCREEN_UPDATE_DRIVER(cshooter_state, screen_update_cshooter)
MCFG_GFXDECODE(cshooter)
MCFG_PALETTE_LENGTH(0x1000)
@@ -478,7 +478,7 @@ static MACHINE_CONFIG_START( airraid, cshooter_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(cshooter)
+ MCFG_SCREEN_UPDATE_DRIVER(cshooter_state, screen_update_cshooter)
MCFG_GFXDECODE(cshooter)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c
index 80e4748a8aa..97f6b29b2e6 100644
--- a/src/mame/drivers/cubeqst.c
+++ b/src/mame/drivers/cubeqst.c
@@ -56,6 +56,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_cubeqst(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -110,9 +111,8 @@ WRITE16_MEMBER(cubeqst_state::palette_w)
}
/* TODO: This is a simplified version of what actually happens */
-static SCREEN_UPDATE_RGB32( cubeqst )
+UINT32 cubeqst_state::screen_update_cubeqst(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- cubeqst_state *state = screen.machine().driver_data<cubeqst_state>();
int y;
/*
@@ -121,7 +121,7 @@ static SCREEN_UPDATE_RGB32( cubeqst )
*/
/* Bit 3 selects LD/#GRAPHICS */
- bitmap.fill(state->m_colormap[255], cliprect);
+ bitmap.fill(m_colormap[255], cliprect);
/* TODO: Add 1 for linebuffering? */
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
@@ -133,7 +133,7 @@ static SCREEN_UPDATE_RGB32( cubeqst )
UINT32 pen;
/* Zap the depth buffer */
- memset(state->m_depth_buffer, 0xff, 512);
+ memset(m_depth_buffer, 0xff, 512);
/* Process all the spans on this scanline */
if (y < 256)
@@ -170,13 +170,13 @@ static SCREEN_UPDATE_RGB32( cubeqst )
}
/* Draw the span, testing for depth */
- pen = state->m_colormap[state->m_generic_paletteram_16[color]];
+ pen = m_colormap[m_generic_paletteram_16[color]];
for (x = h1; x <= h2; ++x)
{
- if (!(state->m_depth_buffer[x] < depth))
+ if (!(m_depth_buffer[x] < depth))
{
dest[x] = pen;
- state->m_depth_buffer[x] = depth;
+ m_depth_buffer[x] = depth;
}
}
}
@@ -532,7 +532,7 @@ static MACHINE_CONFIG_START( cubeqst, cubeqst_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_LASERDISC_SIMUTREK_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(CUBEQST_HBLANK, CUBEQST_VCOUNT, cubeqst)
+ MCFG_LASERDISC_OVERLAY_DRIVER(CUBEQST_HBLANK, CUBEQST_VCOUNT, cubeqst_state, screen_update_cubeqst)
MCFG_LASERDISC_OVERLAY_CLIP(0, 320-1, 0, 256-8)
MCFG_LASERDISC_OVERLAY_POSITION(0.002f, -0.018f)
MCFG_LASERDISC_OVERLAY_SCALE(1.0f, 1.030f)
diff --git a/src/mame/drivers/cultures.c b/src/mame/drivers/cultures.c
index ebc7d41f708..9c915e73ec7 100644
--- a/src/mame/drivers/cultures.c
+++ b/src/mame/drivers/cultures.c
@@ -56,6 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_cultures(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -98,32 +99,31 @@ void cultures_state::video_start()
m_bg2_tilemap->set_scrolldy(255, 0);
}
-static SCREEN_UPDATE_IND16( cultures )
+UINT32 cultures_state::screen_update_cultures(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cultures_state *state = screen.machine().driver_data<cultures_state>();
int attr;
// tilemaps attributes
- attr = (state->m_bg0_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (state->m_bg0_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
- state->m_bg0_tilemap->set_flip(attr);
+ attr = (m_bg0_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg0_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
+ m_bg0_tilemap->set_flip(attr);
- attr = (state->m_bg1_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (state->m_bg1_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
- state->m_bg1_tilemap->set_flip(attr);
+ attr = (m_bg1_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg1_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
+ m_bg1_tilemap->set_flip(attr);
- attr = (state->m_bg2_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (state->m_bg2_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
- state->m_bg2_tilemap->set_flip(attr);
+ attr = (m_bg2_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg2_regs_y[3] & 1 ? TILEMAP_FLIPY : 0);
+ m_bg2_tilemap->set_flip(attr);
// tilemaps scrolls
- state->m_bg0_tilemap->set_scrollx(0, (state->m_bg0_regs_x[2] << 8) + state->m_bg0_regs_x[0]);
- state->m_bg1_tilemap->set_scrollx(0, (state->m_bg1_regs_x[2] << 8) + state->m_bg1_regs_x[0]);
- state->m_bg2_tilemap->set_scrollx(0, (state->m_bg2_regs_x[2] << 8) + state->m_bg2_regs_x[0]);
- state->m_bg0_tilemap->set_scrolly(0, (state->m_bg0_regs_y[2] << 8) + state->m_bg0_regs_y[0]);
- state->m_bg1_tilemap->set_scrolly(0, (state->m_bg1_regs_y[2] << 8) + state->m_bg1_regs_y[0]);
- state->m_bg2_tilemap->set_scrolly(0, (state->m_bg2_regs_y[2] << 8) + state->m_bg2_regs_y[0]);
+ m_bg0_tilemap->set_scrollx(0, (m_bg0_regs_x[2] << 8) + m_bg0_regs_x[0]);
+ m_bg1_tilemap->set_scrollx(0, (m_bg1_regs_x[2] << 8) + m_bg1_regs_x[0]);
+ m_bg2_tilemap->set_scrollx(0, (m_bg2_regs_x[2] << 8) + m_bg2_regs_x[0]);
+ m_bg0_tilemap->set_scrolly(0, (m_bg0_regs_y[2] << 8) + m_bg0_regs_y[0]);
+ m_bg1_tilemap->set_scrolly(0, (m_bg1_regs_y[2] << 8) + m_bg1_regs_y[0]);
+ m_bg2_tilemap->set_scrolly(0, (m_bg2_regs_y[2] << 8) + m_bg2_regs_y[0]);
- state->m_bg2_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_bg0_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_bg1_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg2_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg0_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg1_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -407,7 +407,7 @@ static MACHINE_CONFIG_START( cultures, cultures_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cultures)
+ MCFG_SCREEN_UPDATE_DRIVER(cultures_state, screen_update_cultures)
MCFG_GFXDECODE(culture)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/cvs.c b/src/mame/drivers/cvs.c
index d2d18e32577..508d188e9bf 100644
--- a/src/mame/drivers/cvs.c
+++ b/src/mame/drivers/cvs.c
@@ -1068,7 +1068,7 @@ static MACHINE_CONFIG_START( cvs, cvs_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 1*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1000))
- MCFG_SCREEN_UPDATE_STATIC(cvs)
+ MCFG_SCREEN_UPDATE_DRIVER(cvs_state, screen_update_cvs)
MCFG_S2636_ADD("s2636_0", s2636_0_config)
MCFG_S2636_ADD("s2636_1", s2636_1_config)
diff --git a/src/mame/drivers/cyberbal.c b/src/mame/drivers/cyberbal.c
index bf4a7686b6e..e547255de08 100644
--- a/src/mame/drivers/cyberbal.c
+++ b/src/mame/drivers/cyberbal.c
@@ -457,13 +457,13 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(cyberbal_left)
+ MCFG_SCREEN_UPDATE_DRIVER(cyberbal_state, screen_update_cyberbal_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(cyberbal_right)
+ MCFG_SCREEN_UPDATE_DRIVER(cyberbal_state, screen_update_cyberbal_right)
MCFG_VIDEO_START_OVERRIDE(cyberbal_state,cyberbal)
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( cyberbal2p, cyberbal_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(cyberbal2p)
+ MCFG_SCREEN_UPDATE_DRIVER(cyberbal_state, screen_update_cyberbal2p)
MCFG_VIDEO_START_OVERRIDE(cyberbal_state,cyberbal2p)
diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c
index 74c468fa5fd..4e3e801c4d7 100644
--- a/src/mame/drivers/cybertnk.c
+++ b/src/mame/drivers/cybertnk.c
@@ -219,6 +219,8 @@ public:
TILE_GET_INFO_MEMBER(get_tilemap1_tile_info);
TILE_GET_INFO_MEMBER(get_tilemap2_tile_info);
virtual void video_start();
+ UINT32 screen_update_cybertnk_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_cybertnk_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/* tile format
@@ -498,8 +500,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const r
return 0;
}
-static SCREEN_UPDATE_IND16( cybertnk_left ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE_IND16( cybertnk_right ) { return update_screen(screen, bitmap, cliprect, -256); }
+UINT32 cybertnk_state::screen_update_cybertnk_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 0); }
+UINT32 cybertnk_state::screen_update_cybertnk_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, -256); }
WRITE16_MEMBER(cybertnk_state::tilemap0_vram_w)
@@ -851,14 +853,14 @@ static MACHINE_CONFIG_START( cybertnk, cybertnk_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cybertnk_left)
+ MCFG_SCREEN_UPDATE_DRIVER(cybertnk_state, screen_update_cybertnk_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cybertnk_right)
+ MCFG_SCREEN_UPDATE_DRIVER(cybertnk_state, screen_update_cybertnk_right)
MCFG_GFXDECODE(cybertnk)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c
index 1a94a9c4f86..3f3ae5fd36b 100644
--- a/src/mame/drivers/cyclemb.c
+++ b/src/mame/drivers/cyclemb.c
@@ -119,6 +119,8 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_cyclemb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_skydest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -357,14 +359,14 @@ static void skydest_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
}
}
-static SCREEN_UPDATE_IND16( cyclemb )
+UINT32 cyclemb_state::screen_update_cyclemb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cyclemb_draw_tilemap(screen,bitmap,cliprect);
cyclemb_draw_sprites(screen,bitmap,cliprect);
return 0;
}
-static SCREEN_UPDATE_IND16( skydest )
+UINT32 cyclemb_state::screen_update_skydest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -917,7 +919,7 @@ static MACHINE_CONFIG_START( cyclemb, cyclemb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cyclemb)
+ MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_cyclemb)
MCFG_GFXDECODE(cyclemb)
MCFG_PALETTE_LENGTH(256)
@@ -938,7 +940,7 @@ static MACHINE_CONFIG_DERIVED( skydest, cyclemb )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(skydest)
+ MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_skydest)
// MCFG_PALETTE_INIT_OVERRIDE(cyclemb_state,skydest)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/d9final.c b/src/mame/drivers/d9final.c
index 2797bf54779..55ed1a0d1bc 100644
--- a/src/mame/drivers/d9final.c
+++ b/src/mame/drivers/d9final.c
@@ -45,6 +45,7 @@ public:
TILE_GET_INFO_MEMBER(get_sc0_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_d9final(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -66,10 +67,9 @@ void d9final_state::video_start()
m_sc0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(d9final_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32);
}
-static SCREEN_UPDATE_IND16(d9final)
+UINT32 d9final_state::screen_update_d9final(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- d9final_state *state = screen.machine().driver_data<d9final_state>();
- state->m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -293,7 +293,7 @@ static MACHINE_CONFIG_START( d9final, d9final_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(d9final)
+ MCFG_SCREEN_UPDATE_DRIVER(d9final_state, screen_update_d9final)
MCFG_GFXDECODE(d9final)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c
index 82f8956c302..a91816783ed 100644
--- a/src/mame/drivers/dacholer.c
+++ b/src/mame/drivers/dacholer.c
@@ -89,6 +89,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_dacholer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(dacholer_state::get_bg_tile_info)
@@ -151,24 +152,23 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16(dacholer)
+UINT32 dacholer_state::screen_update_dacholer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dacholer_state *state = screen.machine().driver_data<dacholer_state>();
- if (state->flip_screen())
+ if (flip_screen())
{
- state->m_bg_tilemap->set_scrollx(0, 256 - state->m_scroll_x);
- state->m_bg_tilemap->set_scrolly(0, 256 - state->m_scroll_y);
+ m_bg_tilemap->set_scrollx(0, 256 - m_scroll_x);
+ m_bg_tilemap->set_scrolly(0, 256 - m_scroll_y);
}
else
{
- state->m_bg_tilemap->set_scrollx(0, state->m_scroll_x);
- state->m_bg_tilemap->set_scrolly(0, state->m_scroll_y);
+ m_bg_tilemap->set_scrollx(0, m_scroll_x);
+ m_bg_tilemap->set_scrolly(0, m_scroll_y);
}
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -666,7 +666,7 @@ static MACHINE_CONFIG_START( dacholer, dacholer_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(dacholer)
+ MCFG_SCREEN_UPDATE_DRIVER(dacholer_state, screen_update_dacholer)
MCFG_PALETTE_LENGTH(32)
MCFG_GFXDECODE(dacholer)
diff --git a/src/mame/drivers/dai3wksi.c b/src/mame/drivers/dai3wksi.c
index e2ef3810bf6..50b0fe4dd11 100644
--- a/src/mame/drivers/dai3wksi.c
+++ b/src/mame/drivers/dai3wksi.c
@@ -67,6 +67,7 @@ public:
DECLARE_WRITE8_MEMBER(dai3wksi_audio_3_w);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_dai3wksi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -128,31 +129,30 @@ static void dai3wksi_get_pens(pen_t *pens)
}
-static SCREEN_UPDATE_RGB32( dai3wksi )
+UINT32 dai3wksi_state::screen_update_dai3wksi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- dai3wksi_state *state = screen.machine().driver_data<dai3wksi_state>();
offs_t offs;
pen_t pens[8];
dai3wksi_get_pens(pens);
- for (offs = 0; offs < state->m_dai3wksi_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_dai3wksi_videoram.bytes(); offs++)
{
offs_t i;
UINT8 x = offs << 2;
UINT8 y = offs >> 6;
- UINT8 data = state->m_dai3wksi_videoram[offs];
+ UINT8 data = m_dai3wksi_videoram[offs];
UINT8 color;
- int value = (x >> 2) + ((y >> 5) << 6) + 64 * 8 * (state->m_dai3wksi_redterop ? 1 : 0);
+ int value = (x >> 2) + ((y >> 5) << 6) + 64 * 8 * (m_dai3wksi_redterop ? 1 : 0);
- if (state->m_dai3wksi_redscreen)
+ if (m_dai3wksi_redscreen)
{
color = 0x02;
}
else
{
- if (state->ioport("IN2")->read() & 0x03)
+ if (ioport("IN2")->read() & 0x03)
color = vr_prom2[value];
else
color = vr_prom1[value];
@@ -162,7 +162,7 @@ static SCREEN_UPDATE_RGB32( dai3wksi )
{
pen_t pen = (data & (1 << i)) ? pens[color] : pens[0];
- if (state->m_dai3wksi_flipscreen)
+ if (m_dai3wksi_flipscreen)
bitmap.pix32(255-y, 255-x) = pen;
else
bitmap.pix32(y, x) = pen;
@@ -599,7 +599,7 @@ static MACHINE_CONFIG_START( dai3wksi, dai3wksi_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(4, 251, 8, 247)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(dai3wksi)
+ MCFG_SCREEN_UPDATE_DRIVER(dai3wksi_state, screen_update_dai3wksi)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dambustr.c b/src/mame/drivers/dambustr.c
index 226599175d0..74c8f683742 100644
--- a/src/mame/drivers/dambustr.c
+++ b/src/mame/drivers/dambustr.c
@@ -261,7 +261,7 @@ static MACHINE_CONFIG_START( dambustr, dambustr_state )
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dambustr)
+ MCFG_SCREEN_UPDATE_DRIVER(dambustr_state, screen_update_dambustr)
MCFG_GFXDECODE(dambustr)
MCFG_PALETTE_LENGTH(32+2+64+8) /* 32 for the characters, 2 for the bullets, 64 for the stars, 8 for the background */
diff --git a/src/mame/drivers/darius.c b/src/mame/drivers/darius.c
index d5eb171821e..cdf09e14c53 100644
--- a/src/mame/drivers/darius.c
+++ b/src/mame/drivers/darius.c
@@ -944,21 +944,21 @@ static MACHINE_CONFIG_START( darius, darius_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(darius_left)
+ MCFG_SCREEN_UPDATE_DRIVER(darius_state, screen_update_darius_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(darius_middle)
+ MCFG_SCREEN_UPDATE_DRIVER(darius_state, screen_update_darius_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(darius_right)
+ MCFG_SCREEN_UPDATE_DRIVER(darius_state, screen_update_darius_right)
MCFG_PC080SN_ADD("pc080sn", darius_pc080sn_intf)
diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c
index f6f4cdd8320..36dcb921d64 100644
--- a/src/mame/drivers/darkmist.c
+++ b/src/mame/drivers/darkmist.c
@@ -242,7 +242,7 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(darkmist)
+ MCFG_SCREEN_UPDATE_DRIVER(darkmist_state, screen_update_darkmist)
MCFG_GFXDECODE(darkmist)
MCFG_PALETTE_LENGTH(0x100*4)
diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c
index a708c68ffed..1585ae34e6f 100644
--- a/src/mame/drivers/darkseal.c
+++ b/src/mame/drivers/darkseal.c
@@ -274,7 +274,7 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(darkseal)
+ MCFG_SCREEN_UPDATE_DRIVER(darkseal_state, screen_update_darkseal)
MCFG_GFXDECODE(darkseal)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c
index f35218f70ba..1cf0477cc63 100644
--- a/src/mame/drivers/dassault.c
+++ b/src/mame/drivers/dassault.c
@@ -524,7 +524,7 @@ static MACHINE_CONFIG_START( dassault, dassault_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dassault)
+ MCFG_SCREEN_UPDATE_DRIVER(dassault_state, screen_update_dassault)
MCFG_GFXDECODE(dassault)
diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c
index 2217562beca..e507200b6a0 100644
--- a/src/mame/drivers/dblewing.c
+++ b/src/mame/drivers/dblewing.c
@@ -83,6 +83,7 @@ public:
DECLARE_DRIVER_INIT(dblewing);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_dblewing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
UINT16 dblwings_pri_callback(UINT16 x)
@@ -101,21 +102,20 @@ UINT16 dblwings_pri_callback(UINT16 x)
-static SCREEN_UPDATE_IND16(dblewing)
+UINT32 dblewing_state::screen_update_dblewing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dblewing_state *state = screen.machine().driver_data<dblewing_state>();
- address_space &space = state->generic_space();
- UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, space, 0, 0xffff);
+ address_space &space = generic_space();
+ UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff);
- state->flip_screen_set(BIT(flip, 7));
- deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
+ flip_screen_set(BIT(flip, 7));
+ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll);
bitmap.fill(0, cliprect); /* not Confirmed */
screen.machine().priority_bitmap.fill(0);
- deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
+ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2);
+ deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 4);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
return 0;
}
@@ -656,7 +656,7 @@ static MACHINE_CONFIG_START( dblewing, dblewing_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dblewing)
+ MCFG_SCREEN_UPDATE_DRIVER(dblewing_state, screen_update_dblewing)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(dblewing)
diff --git a/src/mame/drivers/dbz.c b/src/mame/drivers/dbz.c
index 399db0b6fa1..ddd17c846f1 100644
--- a/src/mame/drivers/dbz.c
+++ b/src/mame/drivers/dbz.c
@@ -398,7 +398,7 @@ static MACHINE_CONFIG_START( dbz, dbz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 40*8)
MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dbz)
+ MCFG_SCREEN_UPDATE_DRIVER(dbz_state, screen_update_dbz)
MCFG_GFXDECODE(dbz)
diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c
index b64d531f0c7..108bf01894d 100644
--- a/src/mame/drivers/dcheese.c
+++ b/src/mame/drivers/dcheese.c
@@ -424,7 +424,7 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(360, 262) /* guess, need to see what the games write to the vid registers */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(dcheese)
+ MCFG_SCREEN_UPDATE_DRIVER(dcheese_state, screen_update_dcheese)
MCFG_PALETTE_LENGTH(65534)
diff --git a/src/mame/drivers/dcon.c b/src/mame/drivers/dcon.c
index 6ad41b36733..e884a3ea95f 100644
--- a/src/mame/drivers/dcon.c
+++ b/src/mame/drivers/dcon.c
@@ -263,7 +263,7 @@ static MACHINE_CONFIG_START( dcon, dcon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dcon)
+ MCFG_SCREEN_UPDATE_DRIVER(dcon_state, screen_update_dcon)
MCFG_GFXDECODE(dcon)
MCFG_PALETTE_LENGTH(2048)
@@ -290,7 +290,7 @@ static MACHINE_CONFIG_START( sdgndmps, dcon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sdgndmps)
+ MCFG_SCREEN_UPDATE_DRIVER(dcon_state, screen_update_sdgndmps)
MCFG_GFXDECODE(dcon)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dday.c b/src/mame/drivers/dday.c
index c0e5d3f471e..2ace7e0419a 100644
--- a/src/mame/drivers/dday.c
+++ b/src/mame/drivers/dday.c
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( dday, dday_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dday)
+ MCFG_SCREEN_UPDATE_DRIVER(dday_state, screen_update_dday)
MCFG_GFXDECODE(dday)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ddayjlc.c b/src/mame/drivers/ddayjlc.c
index d792b12a757..5c48cda7b98 100644
--- a/src/mame/drivers/ddayjlc.c
+++ b/src/mame/drivers/ddayjlc.c
@@ -105,6 +105,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_ddayjlc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -388,18 +389,17 @@ void ddayjlc_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(ddayjlc_state::get_tile_info_bg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( ddayjlc )
+UINT32 ddayjlc_state::screen_update_ddayjlc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ddayjlc_state *state = screen.machine().driver_data<ddayjlc_state>();
UINT32 i;
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
for (i = 0; i < 0x400; i += 4)
{
- UINT8 flags = state->m_spriteram[i + 2];
- UINT8 y = 256 - state->m_spriteram[i + 0] - 8;
- UINT16 code = state->m_spriteram[i + 1];
- UINT8 x = state->m_spriteram[i + 3] - 16;
+ UINT8 flags = m_spriteram[i + 2];
+ UINT8 y = 256 - m_spriteram[i + 0] - 8;
+ UINT16 code = m_spriteram[i + 1];
+ UINT8 x = m_spriteram[i + 3] - 16;
UINT8 xflip = flags & 0x80;
UINT8 yflip = (code & 0x80);
UINT8 color = flags & 0xf;
@@ -415,11 +415,11 @@ static SCREEN_UPDATE_IND16( ddayjlc )
for (y = 0; y < 32; y++)
for (x = 0; x < 32; x++)
{
- c = state->m_videoram[y * 32 + x];
+ c = m_videoram[y * 32 + x];
if (x > 1 && x < 30)
- drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1], c + state->m_char_bank * 0x100, 2, 0, 0, x*8, y*8, 0);
+ drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1], c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8, 0);
else
- drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[1], c + state->m_char_bank * 0x100, 2, 0, 0, x*8, y*8);
+ drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[1], c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8);
}
}
return 0;
@@ -533,7 +533,7 @@ static MACHINE_CONFIG_START( ddayjlc, ddayjlc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ddayjlc)
+ MCFG_SCREEN_UPDATE_DRIVER(ddayjlc_state, screen_update_ddayjlc)
MCFG_GFXDECODE(ddayjlc)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ddealer.c b/src/mame/drivers/ddealer.c
index ba8b85606b6..d19d69b21a3 100644
--- a/src/mame/drivers/ddealer.c
+++ b/src/mame/drivers/ddealer.c
@@ -156,6 +156,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_ddealer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -264,12 +265,11 @@ static void ddealer_draw_video_layer( running_machine &machine, UINT16* vreg_bas
}
-static SCREEN_UPDATE_IND16( ddealer )
+UINT32 ddealer_state::screen_update_ddealer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ddealer_state *state = screen.machine().driver_data<ddealer_state>();
- state->m_back_tilemap->set_scrollx(0, state->m_flipscreen ? -192 : -64);
- state->m_back_tilemap->set_flip(state->m_flipscreen ? TILEMAP_FLIPY | TILEMAP_FLIPX : 0);
- state->m_back_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_back_tilemap->set_scrollx(0, m_flipscreen ? -192 : -64);
+ m_back_tilemap->set_flip(m_flipscreen ? TILEMAP_FLIPY | TILEMAP_FLIPX : 0);
+ m_back_tilemap->draw(bitmap, cliprect, 0, 0);
/* the fg tilemap handling is a little hacky right now,
i'm not sure if it should be a single tilemap with
@@ -277,28 +277,28 @@ static SCREEN_UPDATE_IND16( ddealer )
combined, the flipscreen case makes things more
difficult to understand */
- if (!state->m_flipscreen)
+ if (!m_flipscreen)
{
- if (state->m_vregs[0xcc / 2] & 0x80)
+ if (m_vregs[0xcc / 2] & 0x80)
{
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0x1e0 / 2], state->m_left_fg_vram_top, state->m_left_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0xcc / 2], state->m_right_fg_vram_top, state->m_right_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0x1e0 / 2], m_left_fg_vram_top, m_left_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0xcc / 2], m_right_fg_vram_top, m_right_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
}
else
{
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0x1e0 / 2], state->m_left_fg_vram_top, state->m_left_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0x1e0 / 2], m_left_fg_vram_top, m_left_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
}
}
else
{
- if (state->m_vregs[0xcc / 2] & 0x80)
+ if (m_vregs[0xcc / 2] & 0x80)
{
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0xcc / 2], state->m_left_fg_vram_top, state->m_left_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0x1e0 / 2], state->m_right_fg_vram_top, state->m_right_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0xcc / 2], m_left_fg_vram_top, m_left_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0x1e0 / 2], m_right_fg_vram_top, m_right_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
}
else
{
- ddealer_draw_video_layer(screen.machine(), &state->m_vregs[0x1e0 / 2], state->m_left_fg_vram_top, state->m_left_fg_vram_bottom, bitmap, cliprect, state->m_flipscreen);
+ ddealer_draw_video_layer(screen.machine(), &m_vregs[0x1e0 / 2], m_left_fg_vram_top, m_left_fg_vram_bottom, bitmap, cliprect, m_flipscreen);
}
}
@@ -640,7 +640,7 @@ static MACHINE_CONFIG_START( ddealer, ddealer_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ddealer)
+ MCFG_SCREEN_UPDATE_DRIVER(ddealer_state, screen_update_ddealer)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index bc7d2bed0ec..650cbba36f0 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -1289,9 +1289,8 @@ static void copylayer(running_machine &machine, bitmap_ind16 &bitmap, const rect
}
}
-SCREEN_UPDATE_IND16(ddenlovr)
+UINT32 dynax_state::screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dynax_state *state = screen.machine().driver_data<dynax_state>();
static const int order[24][4] =
{
@@ -1303,22 +1302,22 @@ SCREEN_UPDATE_IND16(ddenlovr)
int pri;
- int enab = state->m_ddenlovr_layer_enable;
- int enab2 = state->m_ddenlovr_layer_enable2;
+ int enab = m_ddenlovr_layer_enable;
+ int enab2 = m_ddenlovr_layer_enable2;
#if 0
static int base = 0x0;
const UINT8 *gfx = screen.machine().root_device().memregion("blitter")->base();
int next;
- memset(state->m_ddenlovr_pixmap[0], 0, 512 * 512);
- memset(state->m_ddenlovr_pixmap[1], 0, 512 * 512);
- memset(state->m_ddenlovr_pixmap[2], 0, 512 * 512);
- memset(state->m_ddenlovr_pixmap[3], 0, 512 * 512);
- state->m_ddenlovr_dest_layer = 8;
- state->m_ddenlovr_blit_pen = 0;
- state->m_ddenlovr_blit_pen_mode = 0;
- state->m_ddenlovr_blit_y = 5;
- state->m_ddenlovr_clip_ctrl = 0x0f;
+ memset(m_ddenlovr_pixmap[0], 0, 512 * 512);
+ memset(m_ddenlovr_pixmap[1], 0, 512 * 512);
+ memset(m_ddenlovr_pixmap[2], 0, 512 * 512);
+ memset(m_ddenlovr_pixmap[3], 0, 512 * 512);
+ m_ddenlovr_dest_layer = 8;
+ m_ddenlovr_blit_pen = 0;
+ m_ddenlovr_blit_pen_mode = 0;
+ m_ddenlovr_blit_y = 5;
+ m_ddenlovr_clip_ctrl = 0x0f;
next = blit_draw(screen.machine(), base, 0);
popmessage("GFX %06x", base);
if (screen.machine().input().code_pressed(KEYCODE_S)) base = next;
@@ -1329,7 +1328,7 @@ SCREEN_UPDATE_IND16(ddenlovr)
if (screen.machine().input().code_pressed_once(KEYCODE_F)) { base++; while ((gfx[base] & 0xf0) != 0x30) base++; }
#endif
- bitmap.fill(state->m_ddenlovr_bgcolor, cliprect);
+ bitmap.fill(m_ddenlovr_bgcolor, cliprect);
#ifdef MAME_DEBUG
if (screen.machine().input().code_pressed(KEYCODE_Z))
@@ -1345,7 +1344,7 @@ SCREEN_UPDATE_IND16(ddenlovr)
mask2 = 0;
- if (state->m_extra_layers)
+ if (m_extra_layers)
{
if (screen.machine().input().code_pressed(KEYCODE_A)) mask2 |= 1;
if (screen.machine().input().code_pressed(KEYCODE_S)) mask2 |= 2;
@@ -1355,13 +1354,13 @@ SCREEN_UPDATE_IND16(ddenlovr)
if (mask || mask2)
{
- state->m_ddenlovr_layer_enable &= mask;
- state->m_ddenlovr_layer_enable2 &= mask2;
+ m_ddenlovr_layer_enable &= mask;
+ m_ddenlovr_layer_enable2 &= mask2;
}
}
#endif
- pri = state->m_ddenlovr_priority;
+ pri = m_ddenlovr_priority;
if (pri >= 24)
{
@@ -1374,9 +1373,9 @@ SCREEN_UPDATE_IND16(ddenlovr)
copylayer(screen.machine(), bitmap, cliprect, order[pri][2]);
copylayer(screen.machine(), bitmap, cliprect, order[pri][3]);
- if (state->m_extra_layers)
+ if (m_extra_layers)
{
- pri = state->m_ddenlovr_priority2;
+ pri = m_ddenlovr_priority2;
if (pri >= 24)
{
@@ -1390,8 +1389,8 @@ SCREEN_UPDATE_IND16(ddenlovr)
copylayer(screen.machine(), bitmap, cliprect, order[pri][3] + 4);
}
- state->m_ddenlovr_layer_enable = enab;
- state->m_ddenlovr_layer_enable2 = enab2;
+ m_ddenlovr_layer_enable = enab;
+ m_ddenlovr_layer_enable2 = enab2;
return 0;
}
@@ -8513,7 +8512,7 @@ static MACHINE_CONFIG_START( ddenlovr, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8637,7 +8636,7 @@ static MACHINE_CONFIG_START( quizchq, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8728,7 +8727,7 @@ static MACHINE_CONFIG_START( mmpanic, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8812,7 +8811,7 @@ static MACHINE_CONFIG_START( hanakanz, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
@@ -9228,7 +9227,7 @@ static MACHINE_CONFIG_START( jongtei, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
@@ -9269,7 +9268,7 @@ static MACHINE_CONFIG_START( sryudens, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -9314,7 +9313,7 @@ static MACHINE_CONFIG_START( janshinp, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -9388,7 +9387,7 @@ static MACHINE_CONFIG_START( seljan2, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -9435,7 +9434,7 @@ static MACHINE_CONFIG_START( daimyojn, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
- MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index d4fb3043f1f..16bbeb7ad44 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -985,7 +985,7 @@ static MACHINE_CONFIG_START( ddragon, ddragon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
@@ -1048,7 +1048,7 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
@@ -1094,7 +1094,7 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(ddragon)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon_state, screen_update_ddragon)
MCFG_VIDEO_START_OVERRIDE(ddragon_state,ddragon)
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index 5571cf52db2..d95e036498c 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -602,7 +602,7 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE_STATIC(ddragon3)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ddragon3)
MCFG_GFXDECODE(ddragon3)
MCFG_PALETTE_LENGTH(768)
@@ -636,7 +636,7 @@ static MACHINE_CONFIG_DERIVED( ctribe, ddragon3 )
MCFG_CPU_PROGRAM_MAP(ctribe_sound_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ctribe)
+ MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ctribe)
MCFG_SOUND_MODIFY("ym2151")
MCFG_SOUND_ROUTES_RESET()
diff --git a/src/mame/drivers/ddribble.c b/src/mame/drivers/ddribble.c
index 85bca3ad893..ba59864cf75 100644
--- a/src/mame/drivers/ddribble.c
+++ b/src/mame/drivers/ddribble.c
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( ddribble, ddribble_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
/* MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) */
- MCFG_SCREEN_UPDATE_STATIC(ddribble)
+ MCFG_SCREEN_UPDATE_DRIVER(ddribble_state, screen_update_ddribble)
MCFG_GFXDECODE(ddribble)
MCFG_PALETTE_LENGTH(64 + 256)
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index e473dcc7793..49cff3f5cb8 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -23,6 +23,8 @@ public:
: driver_device(mconfig, type, tag) { }
virtual void video_start();
+ UINT32 screen_update_ddz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void screen_eof_ddz(screen_device &screen, bool state);
};
@@ -35,12 +37,12 @@ void ddz_state::video_start()
}
-static SCREEN_UPDATE_RGB32(ddz)
+UINT32 ddz_state::screen_update_ddz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
-static SCREEN_VBLANK(ddz)
+void ddz_state::screen_eof_ddz(screen_device &screen, bool state)
{
}
@@ -75,8 +77,8 @@ static MACHINE_CONFIG_START( ddz, ddz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(ddz)
- MCFG_SCREEN_VBLANK_STATIC(ddz)
+ MCFG_SCREEN_UPDATE_DRIVER(ddz_state, screen_update_ddz)
+ MCFG_SCREEN_VBLANK_DRIVER(ddz_state, screen_eof_ddz)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c
index 49d89a689d9..451d1ef46c8 100644
--- a/src/mame/drivers/deadang.c
+++ b/src/mame/drivers/deadang.c
@@ -253,7 +253,7 @@ static MACHINE_CONFIG_START( deadang, deadang_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(deadang)
+ MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update_deadang)
MCFG_GFXDECODE(deadang)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dec0.c b/src/mame/drivers/dec0.c
index 5b7ef10c7b0..5a1ab49d6d3 100644
--- a/src/mame/drivers/dec0.c
+++ b/src/mame/drivers/dec0.c
@@ -1413,7 +1413,7 @@ static MACHINE_CONFIG_START( automat, dec0_automat_state )
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(automat)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_automat_state, screen_update_automat)
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
@@ -1466,7 +1466,7 @@ static MACHINE_CONFIG_START( secretab, dec0_automat_state )
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(secretab)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_automat_state, screen_update_secretab)
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
@@ -1525,7 +1525,7 @@ static MACHINE_CONFIG_DERIVED( hbarrel, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
//MCFG_SCREEN_SIZE(32*8, 32*8)
//MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hbarrel)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_hbarrel)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( baddudes, dec0_base_sound )
@@ -1545,7 +1545,7 @@ static MACHINE_CONFIG_DERIVED( baddudes, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(baddudes)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_baddudes)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( birdtry, dec0_base_sound )
@@ -1565,7 +1565,7 @@ static MACHINE_CONFIG_DERIVED( birdtry, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(birdtry)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_birdtry)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( robocop, dec0_base_sound )
@@ -1590,7 +1590,7 @@ static MACHINE_CONFIG_DERIVED( robocop, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(robocop)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_robocop)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( robocopb, dec0_base_sound )
@@ -1610,7 +1610,7 @@ static MACHINE_CONFIG_DERIVED( robocopb, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(robocop)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_robocop)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hippodrm, dec0_base_sound )
@@ -1635,7 +1635,7 @@ static MACHINE_CONFIG_DERIVED( hippodrm, dec0_base_sound )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hippodrm)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_hippodrm)
MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(dec0_state,slyspy)
@@ -1661,7 +1661,7 @@ static MACHINE_CONFIG_DERIVED( slyspy, dec0_base_sound_alt )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slyspy)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_slyspy)
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
@@ -1688,7 +1688,7 @@ static MACHINE_CONFIG_DERIVED( midres, dec0_base_sound_alt )
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(midres)
+ MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_midres)
MCFG_GFXDECODE(midres)
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index 1e5a898dc0e..78da8e36dc5 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -66,14 +66,13 @@ WRITE8_MEMBER(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)
}
/* Only used by ghostb, gondo, garyoret, other games can control buffering */
-static SCREEN_VBLANK( dec8 )
+void dec8_state::screen_eof_dec8(screen_device &screen, bool state)
{
- dec8_state *state = screen.machine().driver_data<dec8_state>();
// rising edge
- if (vblank_on)
+ if (state)
{
address_space &space = *screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- state->dec8_mxc06_karn_buffer_spriteram_w(space, 0, 0);
+ dec8_mxc06_karn_buffer_spriteram_w(space, 0, 0);
}
}
@@ -2056,7 +2055,7 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lastmisn)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2103,7 +2102,7 @@ static MACHINE_CONFIG_START( shackled, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(shackled)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_shackled)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2150,8 +2149,8 @@ static MACHINE_CONFIG_START( gondo, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gondo)
- MCFG_SCREEN_VBLANK_STATIC(dec8)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_gondo)
+ MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE(gondo)
MCFG_PALETTE_LENGTH(1024)
@@ -2198,8 +2197,8 @@ static MACHINE_CONFIG_START( garyoret, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(garyoret)
- MCFG_SCREEN_VBLANK_STATIC(dec8)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_garyoret)
+ MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE(gondo)
MCFG_PALETTE_LENGTH(1024)
@@ -2249,8 +2248,8 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ghostb)
- MCFG_SCREEN_VBLANK_STATIC(dec8)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_ghostb)
+ MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE(ghostb)
MCFG_PALETTE_LENGTH(1024)
@@ -2299,7 +2298,7 @@ static MACHINE_CONFIG_START( csilver, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lastmisn)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2354,7 +2353,7 @@ static MACHINE_CONFIG_START( oscar, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(oscar)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_oscar)
MCFG_GFXDECODE(oscar)
MCFG_PALETTE_LENGTH(512)
@@ -2395,7 +2394,7 @@ static MACHINE_CONFIG_START( srdarwin, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(srdarwin)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_srdarwin)
MCFG_GFXDECODE(srdarwin)
MCFG_PALETTE_LENGTH(144)
@@ -2445,7 +2444,7 @@ static MACHINE_CONFIG_START( cobracom, dec8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cobracom)
+ MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_cobracom)
MCFG_GFXDECODE(cobracom)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c
index f3b26a479e4..ce487616e59 100644
--- a/src/mame/drivers/deco156.c
+++ b/src/mame/drivers/deco156.c
@@ -54,6 +54,7 @@ public:
DECLARE_DRIVER_INIT(hvysmsh);
DECLARE_DRIVER_INIT(wcvol95);
virtual void video_start();
+ UINT32 screen_update_wcvol95(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -68,20 +69,19 @@ void deco156_state::video_start()
}
-static SCREEN_UPDATE_RGB32( wcvol95 )
+UINT32 deco156_state::screen_update_wcvol95(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
//FIXME: flip_screen_x should not be written!
- deco156_state *state = screen.machine().driver_data<deco156_state>();
- state->flip_screen_set_no_update(1);
+ flip_screen_set_no_update(1);
screen.machine().priority_bitmap.fill(0);
bitmap.fill(0);
- deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll);
- deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x800);
- deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
+ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x800);
+ deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
@@ -363,7 +363,7 @@ static MACHINE_CONFIG_START( hvysmsh, deco156_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wcvol95)
+ MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update_wcvol95)
MCFG_GFXDECODE(hvysmsh)
MCFG_PALETTE_LENGTH(1024)
@@ -400,7 +400,7 @@ static MACHINE_CONFIG_START( wcvol95, deco156_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wcvol95)
+ MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update_wcvol95)
MCFG_GFXDECODE(hvysmsh)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index 9d4d573a8bb..6c6c2377686 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -1748,8 +1748,8 @@ static MACHINE_CONFIG_START( captaven, deco32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(captaven)
- MCFG_SCREEN_VBLANK_STATIC(captaven)
+ MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_captaven)
+ MCFG_SCREEN_VBLANK_DRIVER(deco32_state, screen_eof_captaven)
MCFG_GFXDECODE(captaven)
MCFG_PALETTE_LENGTH(2048)
@@ -1799,7 +1799,7 @@ static MACHINE_CONFIG_START( fghthist, deco32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fghthist)
+ MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist)
MCFG_GFXDECODE(fghthist)
MCFG_PALETTE_LENGTH(2048)
@@ -1845,7 +1845,7 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fghthist)
+ MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist)
MCFG_GFXDECODE(fghthist)
MCFG_PALETTE_LENGTH(2048)
@@ -1958,8 +1958,8 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dragngun)
- MCFG_SCREEN_VBLANK_STATIC(dragngun)
+ MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update_dragngun)
+ MCFG_SCREEN_VBLANK_DRIVER(dragngun_state, screen_eof_dragngun)
MCFG_BUFFERED_SPRITERAM32_ADD("spriteram")
@@ -2034,8 +2034,8 @@ static MACHINE_CONFIG_START( lockload, dragngun_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8+22)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dragngun)
- MCFG_SCREEN_VBLANK_STATIC(dragngun)
+ MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update_dragngun)
+ MCFG_SCREEN_VBLANK_DRIVER(dragngun_state, screen_eof_dragngun)
MCFG_BUFFERED_SPRITERAM32_ADD("spriteram")
@@ -2119,7 +2119,7 @@ static MACHINE_CONFIG_START( tattass, deco32_state )
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nslasher)
+ MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher)
MCFG_DECO16IC_ADD("tilegen1", tattass_deco16ic_tilegen1_intf)
MCFG_DECO16IC_ADD("tilegen2", tattass_deco16ic_tilegen2_intf)
@@ -2158,7 +2158,7 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nslasher)
+ MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher)
MCFG_DECO16IC_ADD("tilegen1", tattass_deco16ic_tilegen1_intf)
MCFG_DECO16IC_ADD("tilegen2", tattass_deco16ic_tilegen2_intf)
diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c
index fcfef1f14a3..b10d5d1b68a 100644
--- a/src/mame/drivers/deco_ld.c
+++ b/src/mame/drivers/deco_ld.c
@@ -146,6 +146,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(begas_vblank_r);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
virtual void machine_start();
+ UINT32 screen_update_rblaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *spriteram, UINT16 tile_bank )
@@ -193,23 +194,22 @@ static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const r
}
}
-static SCREEN_UPDATE_RGB32( rblaster )
+UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- deco_ld_state *state = screen.machine().driver_data<deco_ld_state>();
gfx_element *gfx = screen.machine().gfx[0];
int y,x;
bitmap.fill(0, cliprect);
- draw_sprites(screen.machine(), bitmap,cliprect,state->m_vram1,0x000);
- draw_sprites(screen.machine(), bitmap,cliprect,state->m_vram0,0x100);
+ draw_sprites(screen.machine(), bitmap,cliprect,m_vram1,0x000);
+ draw_sprites(screen.machine(), bitmap,cliprect,m_vram0,0x100);
for (y=0;y<32;y++)
{
for (x=0;x<32;x++)
{
- int attr = state->m_attr0[x+y*32];
- int tile = state->m_vram0[x+y*32] | ((attr & 3) << 8);
+ int attr = m_attr0[x+y*32];
+ int tile = m_vram0[x+y*32] | ((attr & 3) << 8);
int colour = (6 & 0x7); /* TODO */
drawgfx_transpen(bitmap,cliprect,gfx,tile|0x400,colour,0,0,x*8,y*8,0);
@@ -220,8 +220,8 @@ static SCREEN_UPDATE_RGB32( rblaster )
{
for (x=0;x<32;x++)
{
- int attr = state->m_attr1[x+y*32];
- int tile = state->m_vram1[x+y*32] | ((attr & 3) << 8);
+ int attr = m_attr1[x+y*32];
+ int tile = m_vram1[x+y*32] | ((attr & 3) << 8);
int colour = (6 & 0x7); /* TODO */
drawgfx_transpen(bitmap,cliprect,gfx,tile,colour,0,0,x*8,y*8,0);
@@ -468,7 +468,7 @@ static MACHINE_CONFIG_START( rblaster, deco_ld_state )
// MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_LASERDISC_LDV1000_ADD("laserdisc") //Sony LDP-1000A, is it truly compatible with the Pioneer?
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, rblaster)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, deco_ld_state, screen_update_rblaster)
MCFG_LASERDISC_OVERLAY_CLIP(0, 256-1, 8, 240-1)
/* video hardware */
diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c
index 011580091b1..73e699b3150 100644
--- a/src/mame/drivers/deco_mlc.c
+++ b/src/mame/drivers/deco_mlc.c
@@ -391,8 +391,8 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mlc)
- MCFG_SCREEN_VBLANK_STATIC(mlc)
+ MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update_mlc)
+ MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc)
MCFG_GFXDECODE(deco_mlc)
MCFG_PALETTE_LENGTH(2048)
@@ -423,8 +423,8 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state )
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mlc)
- MCFG_SCREEN_VBLANK_STATIC(mlc)
+ MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update_mlc)
+ MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc)
MCFG_GFXDECODE(deco_mlc)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/decocass.c b/src/mame/drivers/decocass.c
index f3f62a6d9ec..aa79aa04228 100644
--- a/src/mame/drivers/decocass.c
+++ b/src/mame/drivers/decocass.c
@@ -780,7 +780,7 @@ static MACHINE_CONFIG_START( decocass, decocass_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 0*8, 256, 272, 1*8, 248)
- MCFG_SCREEN_UPDATE_STATIC(decocass)
+ MCFG_SCREEN_UPDATE_DRIVER(decocass_state, screen_update_decocass)
MCFG_GFXDECODE(decocass)
MCFG_PALETTE_LENGTH(32+2*8+2*4)
diff --git a/src/mame/drivers/deniam.c b/src/mame/drivers/deniam.c
index fde6aaf42be..0f7b4839481 100644
--- a/src/mame/drivers/deniam.c
+++ b/src/mame/drivers/deniam.c
@@ -286,7 +286,7 @@ static MACHINE_CONFIG_START( deniam16b, deniam_state )
MCFG_SCREEN_SIZE(512, 256)
//MCFG_SCREEN_VISIBLE_AREA(24*8, 64*8-1, 0*8, 28*8-1) // looks better but doesn't match hardware
MCFG_SCREEN_VISIBLE_AREA(24*8-4, 64*8-5, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(deniam)
+ MCFG_SCREEN_UPDATE_DRIVER(deniam_state, screen_update_deniam)
MCFG_GFXDECODE(deniam)
MCFG_PALETTE_LENGTH(2048)
@@ -318,7 +318,7 @@ static MACHINE_CONFIG_START( deniam16c, deniam_state )
MCFG_SCREEN_SIZE(512, 256)
//MCFG_SCREEN_VISIBLE_AREA(24*8, 64*8-1, 0*8, 28*8-1) // looks better but doesn't match hardware
MCFG_SCREEN_VISIBLE_AREA(24*8-4, 64*8-5, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(deniam)
+ MCFG_SCREEN_UPDATE_DRIVER(deniam_state, screen_update_deniam)
MCFG_GFXDECODE(deniam)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/deshoros.c b/src/mame/drivers/deshoros.c
index 08d0b8e7772..a59a28765ec 100644
--- a/src/mame/drivers/deshoros.c
+++ b/src/mame/drivers/deshoros.c
@@ -59,6 +59,8 @@ protected:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+public:
+ UINT32 screen_update_destiny(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -72,10 +74,9 @@ void destiny_state::video_start()
m_led_array[20] = 0;
}
-static SCREEN_UPDATE_IND16( destiny )
+UINT32 destiny_state::screen_update_destiny(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- destiny_state *state = screen.machine().driver_data<destiny_state>();
- popmessage("%s",state->m_led_array);
+ popmessage("%s",m_led_array);
return 0;
}
@@ -268,7 +269,7 @@ static MACHINE_CONFIG_START( destiny, destiny_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(48*8, 16*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*8-1)
- MCFG_SCREEN_UPDATE_STATIC(destiny)
+ MCFG_SCREEN_UPDATE_DRIVER(destiny_state, screen_update_destiny)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c
index c1145352c8f..2b2515f4aec 100644
--- a/src/mame/drivers/destroyr.c
+++ b/src/mame/drivers/destroyr.c
@@ -51,12 +51,12 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_IND16( destroyr )
+UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- destroyr_state *state = screen.machine().driver_data<destroyr_state>();
int i, j;
bitmap.fill(0, cliprect);
@@ -64,8 +64,8 @@ static SCREEN_UPDATE_IND16( destroyr )
/* draw major objects */
for (i = 0; i < 16; i++)
{
- int attr = state->m_major_obj_ram[2 * i + 0] ^ 0xff;
- int horz = state->m_major_obj_ram[2 * i + 1];
+ int attr = m_major_obj_ram[2 * i + 0] ^ 0xff;
+ int horz = m_major_obj_ram[2 * i + 1];
int num = attr & 3;
int scan = attr & 4;
@@ -90,7 +90,7 @@ static SCREEN_UPDATE_IND16( destroyr )
{
for (j = 0; j < 32; j++)
{
- int num = state->m_alpha_num_ram[32 * i + j];
+ int num = m_alpha_num_ram[32 * i + j];
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0], num, 0, 0, 0, 8 * j, 8 * i, 0);
}
@@ -99,9 +99,9 @@ static SCREEN_UPDATE_IND16( destroyr )
/* draw minor objects */
for (i = 0; i < 2; i++)
{
- int num = i << 4 | (state->m_minor_obj_ram[i + 0] & 0xf);
- int horz = 256 - state->m_minor_obj_ram[i + 2];
- int vert = 256 - state->m_minor_obj_ram[i + 4];
+ int num = i << 4 | (m_minor_obj_ram[i + 0] & 0xf);
+ int horz = 256 - m_minor_obj_ram[i + 2];
+ int vert = 256 - m_minor_obj_ram[i + 4];
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1], num, 0, 0, 0, horz, vert, 0);
}
@@ -109,14 +109,14 @@ static SCREEN_UPDATE_IND16( destroyr )
/* draw waves */
for (i = 0; i < 4; i++)
{
- drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[3], state->m_wavemod ? 1 : 0, 0, 0, 0, 64 * i, 0x4e, 0);
+ drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[3], m_wavemod ? 1 : 0, 0, 0, 0, 64 * i, 0x4e, 0);
}
/* draw cursor */
for (i = 0; i < 256; i++)
{
if (i & 4)
- bitmap.pix16(state->m_cursor ^ 0xff, i) = 7;
+ bitmap.pix16(m_cursor ^ 0xff, i) = 7;
}
return 0;
}
@@ -460,7 +460,7 @@ static MACHINE_CONFIG_START( destroyr, destroyr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(destroyr)
+ MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update_destroyr)
MCFG_GFXDECODE(destroyr)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c
index e818b66af2a..aa5f977b676 100644
--- a/src/mame/drivers/dgpix.c
+++ b/src/mame/drivers/dgpix.c
@@ -77,6 +77,7 @@ public:
DECLARE_DRIVER_INIT(kdynastg);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_dgpix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -291,15 +292,14 @@ void dgpix_state::video_start()
m_vram = auto_alloc_array(machine(), UINT32, 0x40000*2/4);
}
-static SCREEN_UPDATE_IND16( dgpix )
+UINT32 dgpix_state::screen_update_dgpix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dgpix_state *state = screen.machine().driver_data<dgpix_state>();
int y;
for (y = 0; y < 240; y++)
{
int x;
- UINT32 *src = &state->m_vram[(state->m_vbuffer ? 0 : 0x10000) | (y << 8)];
+ UINT32 *src = &m_vram[(m_vbuffer ? 0 : 0x10000) | (y << 8)];
UINT16 *dest = &bitmap.pix16(y);
for (x = 0; x < 320; x += 2)
@@ -342,7 +342,7 @@ static MACHINE_CONFIG_START( dgpix, dgpix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(dgpix)
+ MCFG_SCREEN_UPDATE_DRIVER(dgpix_state, screen_update_dgpix)
MCFG_PALETTE_INIT(BBBBB_GGGGG_RRRRR)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/dietgo.c b/src/mame/drivers/dietgo.c
index 5ad2461d581..ce0a4c83f2b 100644
--- a/src/mame/drivers/dietgo.c
+++ b/src/mame/drivers/dietgo.c
@@ -220,7 +220,7 @@ static MACHINE_CONFIG_START( dietgo, dietgo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dietgo)
+ MCFG_SCREEN_UPDATE_DRIVER(dietgo_state, screen_update_dietgo)
MCFG_PALETTE_LENGTH(1024)
MCFG_GFXDECODE(dietgo)
diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c
index 247485ac1f5..420f6ebeef1 100644
--- a/src/mame/drivers/discoboy.c
+++ b/src/mame/drivers/discoboy.c
@@ -86,6 +86,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -142,9 +143,8 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
-static SCREEN_UPDATE_IND16( discoboy )
+UINT32 discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- discoboy_state *state = screen.machine().driver_data<discoboy_state>();
UINT16 x, y;
int i;
int count = 0;
@@ -153,7 +153,7 @@ static SCREEN_UPDATE_IND16( discoboy )
{
UINT16 pal;
int r, g, b;
- pal = state->m_ram_1[i] | (state->m_ram_1[i + 1] << 8);
+ pal = m_ram_1[i] | (m_ram_1[i + 1] << 8);
b = ((pal >> 0) & 0xf) << 4;
g = ((pal >> 4) & 0xf) << 4;
@@ -166,7 +166,7 @@ static SCREEN_UPDATE_IND16( discoboy )
{
UINT16 pal;
int r,g,b;
- pal = state->m_ram_2[i] | (state->m_ram_2[i + 1] << 8);
+ pal = m_ram_2[i] | (m_ram_2[i + 1] << 8);
b = ((pal >> 0) & 0xf) << 4;
g = ((pal >> 4) & 0xf) << 4;
@@ -181,17 +181,17 @@ static SCREEN_UPDATE_IND16( discoboy )
{
for (x = 0; x < 64; x++)
{
- UINT16 tileno = state->m_ram_3[count] | (state->m_ram_3[count + 1] << 8);
+ UINT16 tileno = m_ram_3[count] | (m_ram_3[count + 1] << 8);
if (tileno > 0x2000)
{
- if ((state->m_gfxbank & 0x40) == 0x40)
+ if ((m_gfxbank & 0x40) == 0x40)
tileno = 0x2000 + (tileno & 0x1fff) + 0x2000;
else
tileno = 0x2000 + (tileno & 0x1fff) + 0x0000;
}
- drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[1], tileno, state->m_ram_att[count / 2], 0, 0, x*8, y*8);
+ drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[1], tileno, m_ram_att[count / 2], 0, 0, x*8, y*8);
count += 2;
}
}
@@ -511,7 +511,7 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(8*8, 512-1-8*8, 0+8, 256-1-8)
- MCFG_SCREEN_UPDATE_STATIC(discoboy)
+ MCFG_SCREEN_UPDATE_DRIVER(discoboy_state, screen_update_discoboy)
MCFG_GFXDECODE(discoboy)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c
index 9f13f5b0365..12e69de0b61 100644
--- a/src/mame/drivers/diverboy.c
+++ b/src/mame/drivers/diverboy.c
@@ -70,6 +70,7 @@ public:
DECLARE_WRITE8_MEMBER(okibank_w);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_diverboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -113,7 +114,7 @@ static void draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16(diverboy)
+UINT32 diverboy_state::screen_update_diverboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// bitmap.fill(get_black_pen(screen.machine()), cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
@@ -269,7 +270,7 @@ static MACHINE_CONFIG_START( diverboy, diverboy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8+4, 40*8+1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(diverboy)
+ MCFG_SCREEN_UPDATE_DRIVER(diverboy_state, screen_update_diverboy)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/djboy.c b/src/mame/drivers/djboy.c
index d953ab47ff9..80bb595b6fd 100644
--- a/src/mame/drivers/djboy.c
+++ b/src/mame/drivers/djboy.c
@@ -595,8 +595,8 @@ static MACHINE_CONFIG_START( djboy, djboy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(djboy)
- MCFG_SCREEN_VBLANK_STATIC(djboy)
+ MCFG_SCREEN_UPDATE_DRIVER(djboy_state, screen_update_djboy)
+ MCFG_SCREEN_VBLANK_DRIVER(djboy_state, screen_eof_djboy)
MCFG_GFXDECODE(djboy)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/djmain.c b/src/mame/drivers/djmain.c
index b210d55eab7..78f646b546a 100644
--- a/src/mame/drivers/djmain.c
+++ b/src/mame/drivers/djmain.c
@@ -1471,7 +1471,7 @@ static MACHINE_CONFIG_START( djmain, djmain_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(12, 512-12-1, 0, 384-1)
- MCFG_SCREEN_UPDATE_STATIC(djmain)
+ MCFG_SCREEN_UPDATE_DRIVER(djmain_state, screen_update_djmain)
MCFG_PALETTE_LENGTH(0x4440/4)
MCFG_GFXDECODE(djmain)
diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c
index d713f70ac70..b6042d6f12b 100644
--- a/src/mame/drivers/dkong.c
+++ b/src/mame/drivers/dkong.c
@@ -1661,7 +1661,7 @@ static MACHINE_CONFIG_START( dkong_base, dkong_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(dkong)
+ MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_dkong)
MCFG_GFXDECODE(dkong)
MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
@@ -1724,7 +1724,7 @@ static MACHINE_CONFIG_START( dkong3, dkong_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(dkong)
+ MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_dkong)
MCFG_GFXDECODE(dkong)
MCFG_PALETTE_LENGTH(DK3_PALETTE_LENGTH)
@@ -1752,7 +1752,7 @@ static MACHINE_CONFIG_DERIVED( pestplce, dkongjr )
MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
MCFG_PALETTE_INIT_OVERRIDE(dkong_state,dkong2b) /* wrong! */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(pestplce)
+ MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_pestplce)
MACHINE_CONFIG_END
@@ -1790,7 +1790,7 @@ static MACHINE_CONFIG_DERIVED( spclforc, s2650 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(spclforc)
+ MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_spclforc)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c
index 6a8543ca3b4..266fcceca50 100644
--- a/src/mame/drivers/dlair.c
+++ b/src/mame/drivers/dlair.c
@@ -113,6 +113,7 @@ public:
DECLARE_MACHINE_START(dlair);
DECLARE_MACHINE_RESET(dlair);
DECLARE_PALETTE_INIT(dleuro);
+ UINT32 screen_update_dleuro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -226,10 +227,9 @@ PALETTE_INIT_MEMBER(dlair_state,dleuro)
*
*************************************/
-static SCREEN_UPDATE_IND16( dleuro )
+UINT32 dlair_state::screen_update_dleuro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dlair_state *state = screen.machine().driver_data<dlair_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
int x, y;
/* redraw the overlay */
@@ -772,7 +772,7 @@ static MACHINE_CONFIG_START( dleuro, dlair_state )
MCFG_MACHINE_RESET_OVERRIDE(dlair_state,dlair)
MCFG_LASERDISC_22VP932_ADD("ld_22vp932")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, dleuro)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, dlair_state, screen_update_dleuro)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_PAL("screen", "ld_22vp932")
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
index e2a1b4a7c31..bfaac82f707 100644
--- a/src/mame/drivers/dmndrby.c
+++ b/src/mame/drivers/dmndrby.c
@@ -80,6 +80,7 @@ public:
TILE_GET_INFO_MEMBER(get_dmndrby_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_dderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -345,9 +346,8 @@ void dmndrby_state::video_start()
}
-static SCREEN_UPDATE_IND16(dderby)
+UINT32 dmndrby_state::screen_update_dderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dmndrby_state *state = screen.machine().driver_data<dmndrby_state>();
int x,y,count;
int off,scrolly;
gfx_element *gfx = screen.machine().gfx[0];
@@ -363,22 +363,22 @@ racetrack seems to be stored in 4th and 5th prom.
can we draw it with the tilemap? maybe not, the layout is a litle strange
*/
-// base = state->m_scroll_ram[0];
+// base = m_scroll_ram[0];
- off=0x1900-(state->m_bg*0x100)+(state->m_scroll_ram[1])*0x100;
- scrolly = 0xff-(state->m_scroll_ram[0]);
- if(state->m_scroll_ram[1]==0xff) off=0x1800;
+ off=0x1900-(m_bg*0x100)+(m_scroll_ram[1])*0x100;
+ scrolly = 0xff-(m_scroll_ram[0]);
+ if(m_scroll_ram[1]==0xff) off=0x1800;
for(x=0;x<16;x++) {
for(y=0;y<16;y++) {
- int chr = state->m_racetrack_tilemap_rom[off];
- int col = state->m_racetrack_tilemap_rom[off+0x2000]&0x1f;
- int flipx = state->m_racetrack_tilemap_rom[off+0x2000]&0x40;
+ int chr = m_racetrack_tilemap_rom[off];
+ int col = m_racetrack_tilemap_rom[off+0x2000]&0x1f;
+ int flipx = m_racetrack_tilemap_rom[off+0x2000]&0x40;
drawgfx_opaque(bitmap,cliprect,track,chr,col,flipx,0,y*16+scrolly,x*16);
// draw another bit of track
// a rubbish way of doing it
- chr = state->m_racetrack_tilemap_rom[off-0x100];
- col = state->m_racetrack_tilemap_rom[off+0x1f00]&0x1f;
- flipx = state->m_racetrack_tilemap_rom[off+0x1f00]&0x40;
+ chr = m_racetrack_tilemap_rom[off-0x100];
+ col = m_racetrack_tilemap_rom[off+0x1f00]&0x1f;
+ flipx = m_racetrack_tilemap_rom[off+0x1f00]&0x40;
drawgfx_opaque(bitmap,cliprect,track,chr,col,flipx,0,y*16-256+scrolly,x*16);
off++;
}
@@ -399,12 +399,12 @@ wouldnt like to say its the most effective way though...
int a=0;
int b=0;
int base = count*4;
- int sprx=state->m_sprite_ram[base+3];
- int spry=state->m_sprite_ram[base+2];
- //state->m_sprite_ram[base+1];
- int col = (state->m_sprite_ram[base+1]&0x1f);
- int anim = (state->m_sprite_ram[base]&0x3)*0x40; // animation frame - probably wrong but seems right
- int horse = (state->m_sprite_ram[base+1]&0x7)*8+7; // horse label from 1 - 6
+ int sprx=m_sprite_ram[base+3];
+ int spry=m_sprite_ram[base+2];
+ //m_sprite_ram[base+1];
+ int col = (m_sprite_ram[base+1]&0x1f);
+ int anim = (m_sprite_ram[base]&0x3)*0x40; // animation frame - probably wrong but seems right
+ int horse = (m_sprite_ram[base+1]&0x7)*8+7; // horse label from 1 - 6
for (a=0;a<8 ;a++)
{
@@ -427,10 +427,10 @@ wouldnt like to say its the most effective way though...
for(x=0;x<32;x++)
{
int tileno,bank,color;
- tileno=state->m_dderby_vidchars[count];
- bank=(state->m_dderby_vidattribs[count]&0x20)>>5;
+ tileno=m_dderby_vidchars[count];
+ bank=(m_dderby_vidattribs[count]&0x20)>>5;
tileno|=(bank<<8);
- color=((state->m_dderby_vidattribs[count])&0x1f);
+ color=((m_dderby_vidattribs[count])&0x1f);
drawgfx_transpen(bitmap,cliprect,gfx,tileno,color,0,0,x*8,y*8,(tileno == 0x38) ? 0 : -1);
@@ -527,7 +527,7 @@ static MACHINE_CONFIG_START( dderby, dmndrby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(dderby)
+ MCFG_SCREEN_UPDATE_DRIVER(dmndrby_state, screen_update_dderby)
MCFG_GFXDECODE(dmndrby)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c
index eda75ba4ad4..ff69b5d7460 100644
--- a/src/mame/drivers/docastle.c
+++ b/src/mame/drivers/docastle.c
@@ -620,7 +620,7 @@ static MACHINE_CONFIG_START( docastle, docastle_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(docastle)
+ MCFG_SCREEN_UPDATE_DRIVER(docastle_state, screen_update_docastle)
MCFG_GFXDECODE(docastle)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/dogfgt.c b/src/mame/drivers/dogfgt.c
index 3a1ce7e4b1f..729168fd2f4 100644
--- a/src/mame/drivers/dogfgt.c
+++ b/src/mame/drivers/dogfgt.c
@@ -256,7 +256,7 @@ static MACHINE_CONFIG_START( dogfgt, dogfgt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dogfgt)
+ MCFG_SCREEN_UPDATE_DRIVER(dogfgt_state, screen_update_dogfgt)
MCFG_GFXDECODE(dogfgt)
MCFG_PALETTE_LENGTH(16+64)
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index f37940464cb..e3fd1bdde57 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -85,6 +85,7 @@ public:
DECLARE_WRITE8_MEMBER(dominob_d008_w);
DECLARE_READ8_MEMBER(dominob_unk_port02_r);
virtual void video_start();
+ UINT32 screen_update_dominob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
void dominob_state::video_start()
@@ -122,9 +123,8 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
-static SCREEN_UPDATE_IND16( dominob )
+UINT32 dominob_state::screen_update_dominob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dominob_state *state = screen.machine().driver_data<dominob_state>();
int x,y;
int index = 0;
@@ -136,8 +136,8 @@ static SCREEN_UPDATE_IND16( dominob )
drawgfx_opaque(bitmap,
cliprect,
screen.machine().gfx[1],
- state->m_bgram[index] + 256 * (state->m_bgram[index + 1] & 0xf),
- state->m_bgram[index + 1] >> 4,
+ m_bgram[index] + 256 * (m_bgram[index + 1] & 0xf),
+ m_bgram[index + 1] >> 4,
0, 0,
x * 32, y * 32);
index += 2;
@@ -151,8 +151,8 @@ static SCREEN_UPDATE_IND16( dominob )
drawgfx_transpen( bitmap,
cliprect,
screen.machine().gfx[0],
- state->m_videoram[(y * 32 + x) * 2 + 1] + (state->m_videoram[(y * 32 + x) * 2] & 7) * 256,
- (state->m_videoram[(y * 32 + x) * 2] >> 3),
+ m_videoram[(y * 32 + x) * 2 + 1] + (m_videoram[(y * 32 + x) * 2] & 7) * 256,
+ (m_videoram[(y * 32 + x) * 2] >> 3),
0, 0,
x * 8, y * 8,0);
}
@@ -307,7 +307,7 @@ static MACHINE_CONFIG_START( dominob, dominob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dominob)
+ MCFG_SCREEN_UPDATE_DRIVER(dominob_state, screen_update_dominob)
MCFG_GFXDECODE(dominob)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c
index 7efa878a52c..3a1700401f1 100644
--- a/src/mame/drivers/dooyong.c
+++ b/src/mame/drivers/dooyong.c
@@ -882,7 +882,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(lastday)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_lastday)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(lastday)
@@ -924,7 +924,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(gulfstrm)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_gulfstrm)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(lastday)
@@ -957,7 +957,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(pollux)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_pollux)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(lastday)
@@ -989,7 +989,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(bluehawk)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_bluehawk)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(bluehawk)
@@ -1021,7 +1021,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(flytiger)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_flytiger)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(flytiger)
@@ -1051,7 +1051,7 @@ static MACHINE_CONFIG_START( primella, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(primella)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_primella)
MCFG_GFXDECODE(primella)
MCFG_PALETTE_LENGTH(1024)
@@ -1092,7 +1092,7 @@ static MACHINE_CONFIG_START( rshark, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(rshark)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_rshark)
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(rshark)
@@ -1122,7 +1122,7 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(rshark)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_rshark)
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(rshark)
@@ -1152,7 +1152,7 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(popbingo)
+ MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_popbingo)
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(popbingo)
diff --git a/src/mame/drivers/dorachan.c b/src/mame/drivers/dorachan.c
index 355e8c7f7df..cee73b77946 100644
--- a/src/mame/drivers/dorachan.c
+++ b/src/mame/drivers/dorachan.c
@@ -35,6 +35,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(dorachan_v128_r);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -81,18 +82,17 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE_RGB32( dorachan )
+UINT32 dorachan_state::screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- dorachan_state *state = screen.machine().driver_data<dorachan_state>();
pen_t pens[NUM_PENS];
offs_t offs;
const UINT8 *color_map_base;
get_pens(pens);
- color_map_base = state->memregion("proms")->base();
+ color_map_base = memregion("proms")->base();
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 fore_color;
@@ -103,9 +103,9 @@ static SCREEN_UPDATE_RGB32( dorachan )
/* the need for +1 is extremely unusual, but definetely correct */
offs_t color_address = ((((offs << 2) & 0x03e0) | (offs >> 8)) + 1) & 0x03ff;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
- if (state->m_flip_screen)
+ if (m_flip_screen)
fore_color = (color_map_base[color_address] >> 3) & 0x07;
else
fore_color = (color_map_base[color_address] >> 0) & 0x07;
@@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( dorachan, dorachan_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(dorachan)
+ MCFG_SCREEN_UPDATE_DRIVER(dorachan_state, screen_update_dorachan)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dotrikun.c b/src/mame/drivers/dotrikun.c
index ad0413fb758..7e4bd3ffdcf 100644
--- a/src/mame/drivers/dotrikun.c
+++ b/src/mame/drivers/dotrikun.c
@@ -39,6 +39,7 @@ public:
DECLARE_WRITE8_MEMBER(dotrikun_color_w);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_dotrikun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -62,19 +63,18 @@ WRITE8_MEMBER(dotrikun_state::dotrikun_color_w)
}
-static SCREEN_UPDATE_RGB32( dotrikun )
+UINT32 dotrikun_state::screen_update_dotrikun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- dotrikun_state *state = screen.machine().driver_data<dotrikun_state>();
int x,y,i;
- pen_t back_pen = MAKE_RGB(pal1bit(state->m_color >> 3), pal1bit(state->m_color >> 4), pal1bit(state->m_color >> 5));
- pen_t fore_pen = MAKE_RGB(pal1bit(state->m_color >> 0), pal1bit(state->m_color >> 1), pal1bit(state->m_color >> 2));
+ pen_t back_pen = MAKE_RGB(pal1bit(m_color >> 3), pal1bit(m_color >> 4), pal1bit(m_color >> 5));
+ pen_t fore_pen = MAKE_RGB(pal1bit(m_color >> 0), pal1bit(m_color >> 1), pal1bit(m_color >> 2));
for(y = (cliprect.min_y & ~1); y < cliprect.max_y; y+=2)
{
for (x = 0; x < 256; x+=16)
{
- UINT8 data = state->m_dotrikun_bitmap[((x/16)+((y/2)*16))];
+ UINT8 data = m_dotrikun_bitmap[((x/16)+((y/2)*16))];
for (i = 0; i < 8; i++)
{
@@ -161,7 +161,7 @@ static MACHINE_CONFIG_START( dotrikun, dotrikun_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 256+32, 0, 256, 192+32, 0, 192) // FIXME: h/v params of this are completely inaccurate, shows it especially under the "CRT test"
- MCFG_SCREEN_UPDATE_STATIC(dotrikun)
+ MCFG_SCREEN_UPDATE_DRIVER(dotrikun_state, screen_update_dotrikun)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dragrace.c b/src/mame/drivers/dragrace.c
index 83f0e6565a9..1fe7413dc36 100644
--- a/src/mame/drivers/dragrace.c
+++ b/src/mame/drivers/dragrace.c
@@ -343,7 +343,7 @@ static MACHINE_CONFIG_START( dragrace, dragrace_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(dragrace)
+ MCFG_SCREEN_UPDATE_DRIVER(dragrace_state, screen_update_dragrace)
MCFG_GFXDECODE(dragrace)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c
index a1fd4dd6b0a..0beaa64431f 100644
--- a/src/mame/drivers/dreamwld.c
+++ b/src/mame/drivers/dreamwld.c
@@ -163,6 +163,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_dreamwld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_dreamwld(screen_device &screen, bool state);
};
@@ -284,35 +286,33 @@ void dreamwld_state::video_start()
}
-SCREEN_VBLANK( dreamwld )
+void dreamwld_state::screen_eof_dreamwld(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- dreamwld_state *state = screen.machine().driver_data<dreamwld_state>();
- memcpy(state->m_spritebuf2, state->m_spritebuf1, 0x2000);
- memcpy(state->m_spritebuf1, state->m_spriteram, 0x2000);
+ memcpy(m_spritebuf2, m_spritebuf1, 0x2000);
+ memcpy(m_spritebuf1, m_spriteram, 0x2000);
}
}
-static SCREEN_UPDATE_IND16( dreamwld )
+UINT32 dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dreamwld_state *state = screen.machine().driver_data<dreamwld_state>();
// int tm0size, tm1size;
tilemap_t *tmptilemap0, *tmptilemap1;
- tmptilemap0 = state->m_bg_tilemap;
- tmptilemap1 = state->m_bg2_tilemap;
+ tmptilemap0 = m_bg_tilemap;
+ tmptilemap1 = m_bg2_tilemap;
- int layer0_scrolly = state->m_vregs[(0x400 / 4)] + 32;
- int layer1_scrolly = state->m_vregs[(0x400 / 4) + 2] + 32;
+ int layer0_scrolly = m_vregs[(0x400 / 4)] + 32;
+ int layer1_scrolly = m_vregs[(0x400 / 4) + 2] + 32;
- int layer0_scrollx = state->m_vregs[(0x400 / 4) + 1] + 3;
- int layer1_scrollx = state->m_vregs[(0x400 / 4) + 3] + 5;
- UINT32 layer0_ctrl = state->m_vregs[0x412 / 4];
- UINT32 layer1_ctrl = state->m_vregs[0x416 / 4];
+ int layer0_scrollx = m_vregs[(0x400 / 4) + 1] + 3;
+ int layer1_scrollx = m_vregs[(0x400 / 4) + 3] + 5;
+ UINT32 layer0_ctrl = m_vregs[0x412 / 4];
+ UINT32 layer1_ctrl = m_vregs[0x416 / 4];
tmptilemap0->set_scrolly(0, layer0_scrolly);
tmptilemap1->set_scrolly(0, layer1_scrolly);
@@ -342,7 +342,7 @@ static SCREEN_UPDATE_IND16( dreamwld )
int x0 = 0, x1 = 0;
/* layer 0 */
- UINT16 *vregs = reinterpret_cast<UINT16 *>(state->m_vregs.target());
+ UINT16 *vregs = reinterpret_cast<UINT16 *>(m_vregs.target());
if (layer0_ctrl & 0x0300)
{
if (layer0_ctrl & 0x0200)
@@ -377,19 +377,19 @@ static SCREEN_UPDATE_IND16( dreamwld )
}
- state->m_tilebank[0] = (state->m_vregs[(0x400 / 4) + 4] >> 6) & 1;
- state->m_tilebank[1] = (state->m_vregs[(0x400 / 4) + 5] >> 6) & 1;
+ m_tilebank[0] = (m_vregs[(0x400 / 4) + 4] >> 6) & 1;
+ m_tilebank[1] = (m_vregs[(0x400 / 4) + 5] >> 6) & 1;
- if (state->m_tilebank[0] != state->m_tilebankold[0])
+ if (m_tilebank[0] != m_tilebankold[0])
{
- state->m_tilebankold[0] = state->m_tilebank[0];
- state->m_bg_tilemap->mark_all_dirty();
+ m_tilebankold[0] = m_tilebank[0];
+ m_bg_tilemap->mark_all_dirty();
}
- if (state->m_tilebank[1] != state->m_tilebankold[1])
+ if (m_tilebank[1] != m_tilebankold[1])
{
- state->m_tilebankold[1] = state->m_tilebank[1];
- state->m_bg2_tilemap->mark_all_dirty();
+ m_tilebankold[1] = m_tilebank[1];
+ m_bg2_tilemap->mark_all_dirty();
}
tmptilemap0->draw(bitmap, cliprect, 0, 0);
@@ -598,8 +598,8 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(512,256)
MCFG_SCREEN_VISIBLE_AREA(0, 304-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(dreamwld)
- MCFG_SCREEN_VBLANK_STATIC(dreamwld)
+ MCFG_SCREEN_UPDATE_DRIVER(dreamwld_state, screen_update_dreamwld)
+ MCFG_SCREEN_VBLANK_DRIVER(dreamwld_state, screen_eof_dreamwld)
MCFG_PALETTE_LENGTH(0x1000)
MCFG_GFXDECODE(dreamwld)
diff --git a/src/mame/drivers/drgnmst.c b/src/mame/drivers/drgnmst.c
index e046f153a8a..a866ba0021c 100644
--- a/src/mame/drivers/drgnmst.c
+++ b/src/mame/drivers/drgnmst.c
@@ -411,7 +411,7 @@ static MACHINE_CONFIG_START( drgnmst, drgnmst_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(drgnmst)
+ MCFG_SCREEN_UPDATE_DRIVER(drgnmst_state, screen_update_drgnmst)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/dribling.c b/src/mame/drivers/dribling.c
index c3cea192ea0..85963f36b8c 100644
--- a/src/mame/drivers/dribling.c
+++ b/src/mame/drivers/dribling.c
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( dribling, dribling_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 40, 255)
- MCFG_SCREEN_UPDATE_STATIC(dribling)
+ MCFG_SCREEN_UPDATE_DRIVER(dribling_state, screen_update_dribling)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/drmicro.c b/src/mame/drivers/drmicro.c
index 738806a9c06..fe53f04931b 100644
--- a/src/mame/drivers/drmicro.c
+++ b/src/mame/drivers/drmicro.c
@@ -274,7 +274,7 @@ static MACHINE_CONFIG_START( drmicro, drmicro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(drmicro)
+ MCFG_SCREEN_UPDATE_DRIVER(drmicro_state, screen_update_drmicro)
MCFG_GFXDECODE(drmicro)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/drtomy.c b/src/mame/drivers/drtomy.c
index 684ce096e67..daf58c8f81c 100644
--- a/src/mame/drivers/drtomy.c
+++ b/src/mame/drivers/drtomy.c
@@ -40,6 +40,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_drtomy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -131,12 +132,11 @@ void drtomy_state::video_start()
m_tilemap_fg->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( drtomy )
+UINT32 drtomy_state::screen_update_drtomy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- drtomy_state *state = screen.machine().driver_data<drtomy_state>();
- state->m_tilemap_bg->draw(bitmap, cliprect, 0, 0);
- state->m_tilemap_fg->draw(bitmap, cliprect, 0, 0);
+ m_tilemap_bg->draw(bitmap, cliprect, 0, 0);
+ m_tilemap_fg->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( drtomy, drtomy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(drtomy)
+ MCFG_SCREEN_UPDATE_DRIVER(drtomy_state, screen_update_drtomy)
MCFG_GFXDECODE(drtomy)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c
index 45e83a7c725..20e0a85a665 100644
--- a/src/mame/drivers/drw80pkr.c
+++ b/src/mame/drivers/drw80pkr.c
@@ -70,6 +70,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -339,10 +340,9 @@ void drw80pkr_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(drw80pkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 27);
}
-static SCREEN_UPDATE_IND16( drw80pkr )
+UINT32 drw80pkr_state::screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- drw80pkr_state *state = screen.machine().driver_data<drw80pkr_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -477,7 +477,7 @@ static MACHINE_CONFIG_START( drw80pkr, drw80pkr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((31+1)*8, (31+1)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 27*8-1)
- MCFG_SCREEN_UPDATE_STATIC(drw80pkr)
+ MCFG_SCREEN_UPDATE_DRIVER(drw80pkr_state, screen_update_drw80pkr)
MCFG_GFXDECODE(drw80pkr)
MCFG_PALETTE_LENGTH(16*16)
diff --git a/src/mame/drivers/dunhuang.c b/src/mame/drivers/dunhuang.c
index 7ab60f6245c..3ee886db00c 100644
--- a/src/mame/drivers/dunhuang.c
+++ b/src/mame/drivers/dunhuang.c
@@ -122,6 +122,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_dunhuang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -158,9 +159,8 @@ void dunhuang_state::video_start()
save_item(NAME(m_paldata));
}
-static SCREEN_UPDATE_IND16( dunhuang )
+UINT32 dunhuang_state::screen_update_dunhuang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dunhuang_state *state = screen.machine().driver_data<dunhuang_state>();
int layers_ctrl = -1;
#if DUNHUANG_DEBUG
@@ -175,19 +175,19 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- switch (state->m_layers)
+ switch (m_layers)
{
case 0x04: // girl select: bg over fg
- if (layers_ctrl & 2) state->m_tmap2->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- if (layers_ctrl & 1) state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_tmap2->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_tmap->draw(bitmap, cliprect, 0, 0);
break;
case 0x05: // dips: must hide fg
- if (layers_ctrl & 1) state->m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
break;
case 0x07: // game,demo: fg over bg
default:
- if (layers_ctrl & 1) state->m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- if (layers_ctrl & 2) state->m_tmap2->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 1) m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 2) m_tmap2->draw(bitmap, cliprect, 0, 0);
break;
}
@@ -830,7 +830,7 @@ static MACHINE_CONFIG_START( dunhuang, dunhuang_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0+8, 512-8-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(dunhuang)
+ MCFG_SCREEN_UPDATE_DRIVER(dunhuang_state, screen_update_dunhuang)
MCFG_GFXDECODE(dunhuang)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/dwarfd.c b/src/mame/drivers/dwarfd.c
index f0a5903ed76..f34b13b04b6 100644
--- a/src/mame/drivers/dwarfd.c
+++ b/src/mame/drivers/dwarfd.c
@@ -349,6 +349,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -847,7 +848,7 @@ static void drawCrt( running_machine &machine, bitmap_rgb32 &bitmap,const rectan
}
-static SCREEN_UPDATE_RGB32( dwarfd )
+UINT32 dwarfd_state::screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(get_black_pen(screen.machine()), cliprect);
drawCrt(screen.machine(), bitmap, cliprect);
@@ -1080,7 +1081,7 @@ static MACHINE_CONFIG_START( dwarfd, dwarfd_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(272*2, 200+4*8)
MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(dwarfd)
+ MCFG_SCREEN_UPDATE_DRIVER(dwarfd_state, screen_update_dwarfd)
MCFG_GFXDECODE(dwarfd)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c
index 0652e8a4b50..65e5901a88f 100644
--- a/src/mame/drivers/dynadice.c
+++ b/src/mame/drivers/dynadice.c
@@ -65,6 +65,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_dynadice(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -212,13 +213,12 @@ void dynadice_state::video_start()
m_bg_tilemap->set_scrollx(0, -16);
}
-static SCREEN_UPDATE_IND16( dynadice )
+UINT32 dynadice_state::screen_update_dynadice(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- dynadice_state *state = screen.machine().driver_data<dynadice_state>();
rectangle myclip = cliprect;
myclip.max_x = 15;
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_top_tilemap->draw(bitmap, myclip, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_top_tilemap->draw(bitmap, myclip, 0, 0);
return 0;
}
@@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256+16, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 3*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dynadice)
+ MCFG_SCREEN_UPDATE_DRIVER(dynadice_state, screen_update_dynadice)
MCFG_GFXDECODE(dynadice)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 0d3d1994073..dda1ca86c4a 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -4301,7 +4301,7 @@ static MACHINE_CONFIG_START( hanamai, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16+8, 255-8)
- MCFG_SCREEN_UPDATE_STATIC(hanamai)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hanamai)
MCFG_PALETTE_LENGTH(512)
@@ -4358,7 +4358,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(hnoridur)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -4403,7 +4403,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(hnoridur)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -4461,7 +4461,7 @@ static MACHINE_CONFIG_START( sprtmtch, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(sprtmtch)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_sprtmtch)
MCFG_PALETTE_LENGTH(512)
@@ -4503,7 +4503,7 @@ static MACHINE_CONFIG_START( mjfriday, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(mjdialq2)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
MCFG_PALETTE_LENGTH(512)
@@ -4667,14 +4667,14 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(jantouki_top)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_jantouki_top)
MCFG_SCREEN_ADD("bottom", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(jantouki_bottom)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_jantouki_bottom)
MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,jantouki)
@@ -4840,7 +4840,7 @@ static MACHINE_CONFIG_START( htengoku, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+8, 256-1-8)
- MCFG_SCREEN_UPDATE_STATIC(htengoku)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_htengoku)
MCFG_PALETTE_LENGTH(16*256)
@@ -4923,7 +4923,7 @@ static MACHINE_CONFIG_START( tenkai, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256+22)
MCFG_SCREEN_VISIBLE_AREA(4, 512-1, 4, 255-8-4) // hide first 4 horizontal pixels (see scroll of gal 4 in test mode)
- MCFG_SCREEN_UPDATE_STATIC(hnoridur)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -4992,7 +4992,7 @@ static MACHINE_CONFIG_START( gekisha, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(2, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(mjdialq2)
+ MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c
index 60da0946272..f9e7f9c27a2 100644
--- a/src/mame/drivers/dynduke.c
+++ b/src/mame/drivers/dynduke.c
@@ -294,7 +294,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dynduke)
+ MCFG_SCREEN_UPDATE_DRIVER(dynduke_state, screen_update_dynduke)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(dynduke)
diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c
index 200ecab5f04..14f9718fc1a 100644
--- a/src/mame/drivers/egghunt.c
+++ b/src/mame/drivers/egghunt.c
@@ -79,6 +79,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_egghunt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -180,10 +181,9 @@ void egghunt_state::video_start()
save_item(NAME(m_spram));
}
-static SCREEN_UPDATE_IND16(egghunt)
+UINT32 egghunt_state::screen_update_egghunt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- egghunt_state *state = screen.machine().driver_data<egghunt_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -424,7 +424,7 @@ static MACHINE_CONFIG_START( egghunt, egghunt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(egghunt)
+ MCFG_SCREEN_UPDATE_DRIVER(egghunt_state, screen_update_egghunt)
MCFG_GFXDECODE(egghunt)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/embargo.c b/src/mame/drivers/embargo.c
index c5796b8005e..1bf208e35a4 100644
--- a/src/mame/drivers/embargo.c
+++ b/src/mame/drivers/embargo.c
@@ -29,6 +29,7 @@ public:
DECLARE_WRITE8_MEMBER(input_select_w);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_embargo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -38,18 +39,17 @@ public:
*
*************************************/
-static SCREEN_UPDATE_RGB32( embargo )
+UINT32 embargo_state::screen_update_embargo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- embargo_state *state = screen.machine().driver_data<embargo_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 x = offs << 3;
UINT8 y = offs >> 5;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -265,7 +265,7 @@ static MACHINE_CONFIG_START( embargo, embargo_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(embargo)
+ MCFG_SCREEN_UPDATE_DRIVER(embargo_state, screen_update_embargo)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/enigma2.c b/src/mame/drivers/enigma2.c
index 3ceddf51373..13572a19bbc 100644
--- a/src/mame/drivers/enigma2.c
+++ b/src/mame/drivers/enigma2.c
@@ -89,6 +89,8 @@ public:
DECLARE_DRIVER_INIT(enigma2);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_enigma2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_enigma2a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -205,15 +207,14 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE_RGB32( enigma2 )
+UINT32 enigma2_state::screen_update_enigma2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- enigma2_state *state = screen.machine().driver_data<enigma2_state>();
pen_t pens[NUM_PENS];
const rectangle &visarea = screen.visible_area();
- UINT8 *prom = state->memregion("proms")->base();
- UINT8 *color_map_base = state->m_flip_screen ? &prom[0x0400] : &prom[0x0000];
- UINT8 *star_map_base = (state->m_blink_count & 0x08) ? &prom[0x0c00] : &prom[0x0800];
+ UINT8 *prom = memregion("proms")->base();
+ UINT8 *color_map_base = m_flip_screen ? &prom[0x0400] : &prom[0x0000];
+ UINT8 *star_map_base = (m_blink_count & 0x08) ? &prom[0x0c00] : &prom[0x0800];
UINT8 x = 0;
UINT16 bitmap_y = visarea.min_y;
@@ -243,16 +244,16 @@ static SCREEN_UPDATE_RGB32( enigma2 )
/* when the screen is flipped, all the video address bits are inverted,
and the adder at 16A is activated */
- if (state->m_flip_screen) videoram_address = (~videoram_address + 0x0400) & 0x1fff;
+ if (m_flip_screen) videoram_address = (~videoram_address + 0x0400) & 0x1fff;
- video_data = state->m_videoram[videoram_address];
+ video_data = m_videoram[videoram_address];
fore_color = color_map_base[color_map_address] & 0x07;
star_color = star_map_base[star_map_address] & 0x07;
}
/* plot the current pixel */
- if (state->m_flip_screen)
+ if (m_flip_screen)
{
bit = video_data & 0x80;
video_data = video_data << 1;
@@ -287,15 +288,14 @@ static SCREEN_UPDATE_RGB32( enigma2 )
}
}
- state->m_blink_count++;
+ m_blink_count++;
return 0;
}
-static SCREEN_UPDATE_RGB32( enigma2a )
+UINT32 enigma2_state::screen_update_enigma2a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- enigma2_state *state = screen.machine().driver_data<enigma2_state>();
UINT8 x = 0;
const rectangle &visarea = screen.visible_area();
UINT16 bitmap_y = visarea.min_y;
@@ -314,13 +314,13 @@ static SCREEN_UPDATE_RGB32( enigma2a )
/* when the screen is flipped, all the video address bits are inverted,
and the adder at 16A is activated */
- if (state->m_flip_screen) videoram_address = (~videoram_address + 0x0400) & 0x1fff;
+ if (m_flip_screen) videoram_address = (~videoram_address + 0x0400) & 0x1fff;
- video_data = state->m_videoram[videoram_address];
+ video_data = m_videoram[videoram_address];
}
/* plot the current pixel */
- if (state->m_flip_screen)
+ if (m_flip_screen)
{
bit = video_data & 0x80;
video_data = video_data << 1;
@@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( enigma2, enigma2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(enigma2)
+ MCFG_SCREEN_UPDATE_DRIVER(enigma2_state, screen_update_enigma2)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -643,7 +643,7 @@ static MACHINE_CONFIG_START( enigma2a, enigma2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(enigma2a)
+ MCFG_SCREEN_UPDATE_DRIVER(enigma2_state, screen_update_enigma2a)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c
index 2d4c4b34525..547d9b152af 100644
--- a/src/mame/drivers/eolith.c
+++ b/src/mame/drivers/eolith.c
@@ -592,7 +592,7 @@ static MACHINE_CONFIG_START( eolith45, eolith_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(eolith)
+ MCFG_SCREEN_UPDATE_DRIVER(eolith_state, screen_update_eolith)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/eolith16.c b/src/mame/drivers/eolith16.c
index 9d35dea24eb..2dd5fa938ff 100644
--- a/src/mame/drivers/eolith16.c
+++ b/src/mame/drivers/eolith16.c
@@ -33,6 +33,7 @@ public:
DECLARE_DRIVER_INIT(eolith16);
DECLARE_VIDEO_START(eolith16);
DECLARE_PALETTE_INIT(eolith16);
+ UINT32 screen_update_eolith16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -126,9 +127,8 @@ VIDEO_START_MEMBER(eolith16_state,eolith16)
m_vram = auto_alloc_array(machine(), UINT16, 0x10000);
}
-static SCREEN_UPDATE_IND16( eolith16 )
+UINT32 eolith16_state::screen_update_eolith16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- eolith16_state *state = screen.machine().driver_data<eolith16_state>();
int x,y,count;
int color;
@@ -137,10 +137,10 @@ static SCREEN_UPDATE_IND16( eolith16 )
{
for (x=0;x < 320/2;x++)
{
- color = state->m_vram[count + (0x10000/2) * (state->m_vbuffer ^ 1)] & 0xff;
+ color = m_vram[count + (0x10000/2) * (m_vbuffer ^ 1)] & 0xff;
bitmap.pix16(y, x*2 + 0) = color;
- color = (state->m_vram[count + (0x10000/2) * (state->m_vbuffer ^ 1)] & 0xff00) >> 8;
+ color = (m_vram[count + (0x10000/2) * (m_vbuffer ^ 1)] & 0xff00) >> 8;
bitmap.pix16(y, x*2 + 1) = color;
count++;
@@ -189,7 +189,7 @@ static MACHINE_CONFIG_START( eolith16, eolith16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
- MCFG_SCREEN_UPDATE_STATIC(eolith16)
+ MCFG_SCREEN_UPDATE_DRIVER(eolith16_state, screen_update_eolith16)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/epos.c b/src/mame/drivers/epos.c
index e0aa19cd52e..428556737f8 100644
--- a/src/mame/drivers/epos.c
+++ b/src/mame/drivers/epos.c
@@ -407,7 +407,7 @@ static MACHINE_CONFIG_START( epos, epos_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(272, 241)
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
- MCFG_SCREEN_UPDATE_STATIC(epos)
+ MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update_epos)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( dealer, epos_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(272, 241)
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
- MCFG_SCREEN_UPDATE_STATIC(epos)
+ MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update_epos)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/eprom.c b/src/mame/drivers/eprom.c
index c88baa6ec81..d9c146c8c24 100644
--- a/src/mame/drivers/eprom.c
+++ b/src/mame/drivers/eprom.c
@@ -426,7 +426,7 @@ static MACHINE_CONFIG_START( eprom, eprom_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(eprom)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_eprom)
MCFG_VIDEO_START_OVERRIDE(eprom_state,eprom)
@@ -457,7 +457,7 @@ static MACHINE_CONFIG_START( klaxp, eprom_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(eprom)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_eprom)
MCFG_VIDEO_START_OVERRIDE(eprom_state,eprom)
@@ -488,7 +488,7 @@ static MACHINE_CONFIG_START( guts, eprom_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(guts)
+ MCFG_SCREEN_UPDATE_DRIVER(eprom_state, screen_update_guts)
MCFG_VIDEO_START_OVERRIDE(eprom_state,guts)
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index eb7736e82bb..273fb29ea01 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -1263,7 +1263,7 @@ static MACHINE_CONFIG_START( equites, equites_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 3*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(equites)
+ MCFG_SCREEN_UPDATE_DRIVER(equites_state, screen_update_equites)
MCFG_GFXDECODE(equites)
MCFG_PALETTE_LENGTH(0x180)
@@ -1300,7 +1300,7 @@ static MACHINE_CONFIG_START( splndrbt, equites_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(splndrbt)
+ MCFG_SCREEN_UPDATE_DRIVER(equites_state, screen_update_splndrbt)
MCFG_GFXDECODE(splndrbt)
MCFG_PALETTE_LENGTH(0x280)
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c
index 99ed71bbff9..76075fc2221 100644
--- a/src/mame/drivers/esd16.c
+++ b/src/mame/drivers/esd16.c
@@ -630,7 +630,7 @@ static MACHINE_CONFIG_START( esd16, esd16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0+8, 0x100-8-1)
- MCFG_SCREEN_UPDATE_STATIC(hedpanic)
+ MCFG_SCREEN_UPDATE_DRIVER(esd16_state, screen_update_hedpanic)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 0);
diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c
index a11ce729649..b8f7a5c4c7f 100644
--- a/src/mame/drivers/esh.c
+++ b/src/mame/drivers/esh.c
@@ -49,6 +49,7 @@ public:
DECLARE_DRIVER_INIT(esh);
virtual void machine_start();
virtual void palette_init();
+ UINT32 screen_update_esh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -57,9 +58,8 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE_RGB32( esh )
+UINT32 esh_state::screen_update_esh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- esh_state *state = screen.machine().driver_data<esh_state>();
int charx, chary;
/* clear */
@@ -72,13 +72,13 @@ static SCREEN_UPDATE_RGB32( esh )
{
int current_screen_character = (chary*32) + charx;
- int palIndex = (state->m_tile_control_ram[current_screen_character] & 0x0f);
- int tileOffs = (state->m_tile_control_ram[current_screen_character] & 0x10) >> 4;
- //int blinkLine = (state->m_tile_control_ram[current_screen_character] & 0x40) >> 6;
- //int blinkChar = (state->m_tile_control_ram[current_screen_character] & 0x80) >> 7;
+ int palIndex = (m_tile_control_ram[current_screen_character] & 0x0f);
+ int tileOffs = (m_tile_control_ram[current_screen_character] & 0x10) >> 4;
+ //int blinkLine = (m_tile_control_ram[current_screen_character] & 0x40) >> 6;
+ //int blinkChar = (m_tile_control_ram[current_screen_character] & 0x80) >> 7;
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0],
- state->m_tile_ram[current_screen_character] + (0x100 * tileOffs),
+ m_tile_ram[current_screen_character] + (0x100 * tileOffs),
palIndex,
0, 0, charx*8, chary*8, 0);
}
@@ -308,7 +308,7 @@ static MACHINE_CONFIG_START( esh, esh_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, esh)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, esh_state, screen_update_esh)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c
index a909f64dbac..4b4d514b284 100644
--- a/src/mame/drivers/espial.c
+++ b/src/mame/drivers/espial.c
@@ -337,7 +337,7 @@ static MACHINE_CONFIG_START( espial, espial_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(espial)
+ MCFG_SCREEN_UPDATE_DRIVER(espial_state, screen_update_espial)
MCFG_GFXDECODE(espial)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/esripsys.c b/src/mame/drivers/esripsys.c
index be1cb3f0ed2..cbc19d2c6a9 100644
--- a/src/mame/drivers/esripsys.c
+++ b/src/mame/drivers/esripsys.c
@@ -716,7 +716,7 @@ static MACHINE_CONFIG_START( esripsys, esripsys_state )
/* Video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(ESRIPSYS_PIXEL_CLOCK, ESRIPSYS_HTOTAL, ESRIPSYS_HBLANK_END, ESRIPSYS_HBLANK_START, ESRIPSYS_VTOTAL, ESRIPSYS_VBLANK_END, ESRIPSYS_VBLANK_START)
- MCFG_SCREEN_UPDATE_STATIC(esripsys)
+ MCFG_SCREEN_UPDATE_DRIVER(esripsys_state, screen_update_esripsys)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c
index 5040f670a84..8143a1b7f3c 100644
--- a/src/mame/drivers/ettrivia.c
+++ b/src/mame/drivers/ettrivia.c
@@ -60,6 +60,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info_fg);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_ettrivia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -260,11 +261,10 @@ void ettrivia_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( ettrivia )
+UINT32 ettrivia_state::screen_update_ettrivia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ettrivia_state *state = screen.machine().driver_data<ettrivia_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -311,7 +311,7 @@ static MACHINE_CONFIG_START( ettrivia, ettrivia_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ettrivia)
+ MCFG_SCREEN_UPDATE_DRIVER(ettrivia_state, screen_update_ettrivia)
MCFG_GFXDECODE(ettrivia)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c
index a2c82bf00f3..bd12cd744cc 100644
--- a/src/mame/drivers/exedexes.c
+++ b/src/mame/drivers/exedexes.c
@@ -243,7 +243,7 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(exedexes)
+ MCFG_SCREEN_UPDATE_DRIVER(exedexes_state, screen_update_exedexes)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(exedexes)
diff --git a/src/mame/drivers/exerion.c b/src/mame/drivers/exerion.c
index 8c89178b8a2..4fc73995fdc 100644
--- a/src/mame/drivers/exerion.c
+++ b/src/mame/drivers/exerion.c
@@ -418,7 +418,7 @@ static MACHINE_CONFIG_START( exerion, exerion_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(EXERION_PIXEL_CLOCK, EXERION_HTOTAL, EXERION_HBEND, EXERION_HBSTART, EXERION_VTOTAL, EXERION_VBEND, EXERION_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(exerion)
+ MCFG_SCREEN_UPDATE_DRIVER(exerion_state, screen_update_exerion)
MCFG_GFXDECODE(exerion)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/exidy.c b/src/mame/drivers/exidy.c
index 24df2a13f69..b0b9c514ce3 100644
--- a/src/mame/drivers/exidy.c
+++ b/src/mame/drivers/exidy.c
@@ -815,7 +815,7 @@ static MACHINE_CONFIG_START( base, exidy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(exidy)
+ MCFG_SCREEN_UPDATE_DRIVER(exidy_state, screen_update_exidy)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/expro02.c b/src/mame/drivers/expro02.c
index 9a30a91cedd..be6b0dfcbda 100644
--- a/src/mame/drivers/expro02.c
+++ b/src/mame/drivers/expro02.c
@@ -182,6 +182,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_galsnew(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -196,9 +197,8 @@ void expro02_state::palette_init()
palette_set_color_rgb(machine(),2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
-SCREEN_UPDATE_IND16( galsnew )
+UINT32 expro02_state::screen_update_galsnew(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- expro02_state *state = screen.machine().driver_data<expro02_state>();
// kaneko16_fill_bitmap(screen.machine(),bitmap,cliprect);
int y,x;
int count;
@@ -211,7 +211,7 @@ SCREEN_UPDATE_IND16( galsnew )
for (x=0;x<256;x++)
{
- UINT16 dat = (state->m_galsnew_fg_pixram[count] & 0xfffe)>>1;
+ UINT16 dat = (m_galsnew_fg_pixram[count] & 0xfffe)>>1;
dat+=2048;
dest[x] = dat;
count++;
@@ -225,7 +225,7 @@ SCREEN_UPDATE_IND16( galsnew )
for (x=0;x<256;x++)
{
- UINT16 dat = (state->m_galsnew_bg_pixram[count]);
+ UINT16 dat = (m_galsnew_bg_pixram[count]);
//dat &=0x3ff;
if (dat)
dest[x] = dat;
@@ -240,14 +240,14 @@ SCREEN_UPDATE_IND16( galsnew )
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_view2_0->kaneko16_prepare(bitmap, cliprect);
+ m_view2_0->kaneko16_prepare(bitmap, cliprect);
for ( i = 0; i < 8; i++ )
{
- state->m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
+ m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
}
- state->m_kaneko_spr->kaneko16_render_sprites(screen.machine(),bitmap,cliprect, state->m_spriteram, state->m_spriteram.bytes());
+ m_kaneko_spr->kaneko16_render_sprites(screen.machine(),bitmap,cliprect, m_spriteram, m_spriteram.bytes());
return 0;
}
@@ -557,7 +557,7 @@ static MACHINE_CONFIG_START( galsnew, expro02_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE_STATIC(galsnew)
+ MCFG_SCREEN_UPDATE_DRIVER(expro02_state, screen_update_galsnew)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048 + 32768)
diff --git a/src/mame/drivers/exprraid.c b/src/mame/drivers/exprraid.c
index 0953205323a..242a87544ea 100644
--- a/src/mame/drivers/exprraid.c
+++ b/src/mame/drivers/exprraid.c
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( exprraid, exprraid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(exprraid)
+ MCFG_SCREEN_UPDATE_DRIVER(exprraid_state, screen_update_exprraid)
MCFG_GFXDECODE(exprraid)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/exzisus.c b/src/mame/drivers/exzisus.c
index 7d81d5f976e..161624f96fe 100644
--- a/src/mame/drivers/exzisus.c
+++ b/src/mame/drivers/exzisus.c
@@ -295,7 +295,7 @@ static MACHINE_CONFIG_START( exzisus, exzisus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(exzisus)
+ MCFG_SCREEN_UPDATE_DRIVER(exzisus_state, screen_update_exzisus)
MCFG_GFXDECODE(exzisus)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/f-32.c b/src/mame/drivers/f-32.c
index 6332b831cff..f865958d397 100644
--- a/src/mame/drivers/f-32.c
+++ b/src/mame/drivers/f-32.c
@@ -29,12 +29,12 @@ public:
required_device<e132xn_device> m_maincpu;
required_shared_ptr<UINT32> m_videoram;
DECLARE_READ32_MEMBER(f32_input_port_1_r);
+ UINT32 screen_update_mosaicf2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_IND16( mosaicf2 )
+UINT32 mosaicf2_state::screen_update_mosaicf2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mosaicf2_state *state = screen.machine().driver_data<mosaicf2_state>();
offs_t offs;
for (offs = 0; offs < 0x10000; offs++)
@@ -44,8 +44,8 @@ static SCREEN_UPDATE_IND16( mosaicf2 )
if ((x < 0xa0) && (y < 0xe0))
{
- bitmap.pix16(y, (x * 2) + 0) = (state->m_videoram[offs] >> 16) & 0x7fff;
- bitmap.pix16(y, (x * 2) + 1) = (state->m_videoram[offs] >> 0) & 0x7fff;
+ bitmap.pix16(y, (x * 2) + 0) = (m_videoram[offs] >> 16) & 0x7fff;
+ bitmap.pix16(y, (x * 2) + 1) = (m_videoram[offs] >> 0) & 0x7fff;
}
}
@@ -147,7 +147,7 @@ static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223)
- MCFG_SCREEN_UPDATE_STATIC(mosaicf2)
+ MCFG_SCREEN_UPDATE_DRIVER(mosaicf2_state, screen_update_mosaicf2)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/f1gp.c b/src/mame/drivers/f1gp.c
index 18a27ec18b0..6a5e0a69bc8 100644
--- a/src/mame/drivers/f1gp.c
+++ b/src/mame/drivers/f1gp.c
@@ -471,7 +471,7 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(f1gp)
+ MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp)
MCFG_GFXDECODE(f1gp)
MCFG_PALETTE_LENGTH(2048)
@@ -514,7 +514,7 @@ static MACHINE_CONFIG_START( f1gpb, f1gp_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(f1gpb)
+ MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gpb)
MCFG_GFXDECODE(f1gp)
MCFG_PALETTE_LENGTH(2048)
@@ -540,7 +540,7 @@ static MACHINE_CONFIG_DERIVED( f1gp2, f1gp )
MCFG_GFXDECODE(f1gp2)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(f1gp2)
+ MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp2)
MCFG_DEVICE_REMOVE("k053936")
MCFG_K053936_ADD("k053936", f1gp2_k053936_intf)
diff --git a/src/mame/drivers/famibox.c b/src/mame/drivers/famibox.c
index 22320ae46ef..9e6a01e17b6 100644
--- a/src/mame/drivers/famibox.c
+++ b/src/mame/drivers/famibox.c
@@ -109,6 +109,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_famibox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/******************************************************
@@ -538,7 +539,7 @@ void famibox_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( famibox )
+UINT32 famibox_state::screen_update_famibox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* render the ppu */
ppu2c0x_device *ppu = screen.machine().device<ppu2c0x_device>("ppu");
@@ -589,7 +590,7 @@ static MACHINE_CONFIG_START( famibox, famibox_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(famibox)
+ MCFG_SCREEN_UPDATE_DRIVER(famibox_state, screen_update_famibox)
MCFG_GFXDECODE(famibox)
MCFG_PALETTE_LENGTH(8*4*16)
diff --git a/src/mame/drivers/fantland.c b/src/mame/drivers/fantland.c
index 8b65d0f41d5..471a1edde6d 100644
--- a/src/mame/drivers/fantland.c
+++ b/src/mame/drivers/fantland.c
@@ -865,7 +865,7 @@ static MACHINE_CONFIG_START( fantland, fantland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(fantland)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -915,7 +915,7 @@ static MACHINE_CONFIG_START( galaxygn, fantland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(fantland)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -1019,7 +1019,7 @@ static MACHINE_CONFIG_START( borntofi, fantland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(fantland)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -1059,7 +1059,7 @@ static MACHINE_CONFIG_START( wheelrun, fantland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256,224)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(fantland)
+ MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/fastfred.c b/src/mame/drivers/fastfred.c
index 215d9eddd55..08d14725f9e 100644
--- a/src/mame/drivers/fastfred.c
+++ b/src/mame/drivers/fastfred.c
@@ -659,7 +659,7 @@ static MACHINE_CONFIG_START( fastfred, fastfred_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) //CLOCK/16/60
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fastfred)
+ MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_fastfred)
MCFG_GFXDECODE(fastfred)
MCFG_PALETTE_LENGTH(32*8)
@@ -706,7 +706,7 @@ static MACHINE_CONFIG_DERIVED( imago, fastfred )
MCFG_VIDEO_START_OVERRIDE(fastfred_state,imago)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(imago)
+ MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_imago)
MACHINE_CONFIG_END
#undef CLOCK
diff --git a/src/mame/drivers/fastlane.c b/src/mame/drivers/fastlane.c
index d3a46c5b006..c8745136123 100644
--- a/src/mame/drivers/fastlane.c
+++ b/src/mame/drivers/fastlane.c
@@ -228,7 +228,7 @@ static MACHINE_CONFIG_START( fastlane, fastlane_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fastlane)
+ MCFG_SCREEN_UPDATE_DRIVER(fastlane_state, screen_update_fastlane)
MCFG_GFXDECODE(fastlane)
MCFG_PALETTE_LENGTH(1024*16)
diff --git a/src/mame/drivers/fcombat.c b/src/mame/drivers/fcombat.c
index e7890604b7a..d7617679f84 100644
--- a/src/mame/drivers/fcombat.c
+++ b/src/mame/drivers/fcombat.c
@@ -298,7 +298,7 @@ static MACHINE_CONFIG_START( fcombat, fcombat_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(FCOMBAT_PIXEL_CLOCK, FCOMBAT_HTOTAL, FCOMBAT_HBEND, FCOMBAT_HBSTART, FCOMBAT_VTOTAL, FCOMBAT_VBEND, FCOMBAT_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(fcombat)
+ MCFG_SCREEN_UPDATE_DRIVER(fcombat_state, screen_update_fcombat)
MCFG_GFXDECODE(fcombat)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index 372a84265be..ab1861a2fa6 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -217,16 +217,15 @@ static void fcrash_build_palette( running_machine &machine )
}
}
-static SCREEN_UPDATE_IND16( fcrash )
+UINT32 cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cps_state *state = screen.machine().driver_data<cps_state>();
int layercontrol, l0, l1, l2, l3;
- int videocontrol = state->m_cps_a_regs[0x22 / 2];
+ int videocontrol = m_cps_a_regs[0x22 / 2];
- state->flip_screen_set(videocontrol & 0x8000);
+ flip_screen_set(videocontrol & 0x8000);
- layercontrol = state->m_cps_b_regs[0x20 / 2];
+ layercontrol = m_cps_b_regs[0x20 / 2];
/* Get video memory base registers */
cps1_get_video_base(screen.machine());
@@ -236,37 +235,37 @@ static SCREEN_UPDATE_IND16( fcrash )
fcrash_update_transmasks(screen.machine());
- state->m_bg_tilemap[0]->set_scrollx(0, state->m_scroll1x - 62);
- state->m_bg_tilemap[0]->set_scrolly(0, state->m_scroll1y);
+ m_bg_tilemap[0]->set_scrollx(0, m_scroll1x - 62);
+ m_bg_tilemap[0]->set_scrolly(0, m_scroll1y);
if (videocontrol & 0x01) /* linescroll enable */
{
- int scrly = -state->m_scroll2y;
+ int scrly = -m_scroll2y;
int i;
int otheroffs;
- state->m_bg_tilemap[1]->set_scroll_rows(1024);
+ m_bg_tilemap[1]->set_scroll_rows(1024);
- otheroffs = state->m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
+ otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
for (i = 0; i < 256; i++)
- state->m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, state->m_scroll2x + state->m_other[(i + otheroffs) & 0x3ff]);
+ m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, m_scroll2x + m_other[(i + otheroffs) & 0x3ff]);
}
else
{
- state->m_bg_tilemap[1]->set_scroll_rows(1);
- state->m_bg_tilemap[1]->set_scrollx(0, state->m_scroll2x - 60);
+ m_bg_tilemap[1]->set_scroll_rows(1);
+ m_bg_tilemap[1]->set_scrollx(0, m_scroll2x - 60);
}
- state->m_bg_tilemap[1]->set_scrolly(0, state->m_scroll2y);
- state->m_bg_tilemap[2]->set_scrollx(0, state->m_scroll3x - 64);
- state->m_bg_tilemap[2]->set_scrolly(0, state->m_scroll3y);
+ m_bg_tilemap[1]->set_scrolly(0, m_scroll2y);
+ m_bg_tilemap[2]->set_scrollx(0, m_scroll3x - 64);
+ m_bg_tilemap[2]->set_scrolly(0, m_scroll3y);
/* turn all tilemaps on regardless of settings in get_video_base() */
/* write a custom get_video_base for this bootleg hardware? */
- state->m_bg_tilemap[0]->enable(1);
- state->m_bg_tilemap[1]->enable(1);
- state->m_bg_tilemap[2]->enable(1);
+ m_bg_tilemap[0]->enable(1);
+ m_bg_tilemap[1]->enable(1);
+ m_bg_tilemap[2]->enable(1);
/* Blank screen */
bitmap.fill(0xbff, cliprect);
@@ -298,15 +297,14 @@ static SCREEN_UPDATE_IND16( fcrash )
}
// doesn't have the scroll offsets like fcrash
-static SCREEN_UPDATE_IND16( kodb )
+UINT32 cps_state::screen_update_kodb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- cps_state *state = screen.machine().driver_data<cps_state>();
int layercontrol, l0, l1, l2, l3;
- int videocontrol = state->m_cps_a_regs[0x22 / 2];
+ int videocontrol = m_cps_a_regs[0x22 / 2];
- state->flip_screen_set(videocontrol & 0x8000);
+ flip_screen_set(videocontrol & 0x8000);
- layercontrol = state->m_cps_b_regs[0x20 / 2];
+ layercontrol = m_cps_b_regs[0x20 / 2];
/* Get video memory base registers */
cps1_get_video_base(screen.machine());
@@ -316,38 +314,38 @@ static SCREEN_UPDATE_IND16( kodb )
fcrash_update_transmasks(screen.machine());
- state->m_bg_tilemap[0]->set_scrollx(0, state->m_scroll1x);
- state->m_bg_tilemap[0]->set_scrolly(0, state->m_scroll1y);
+ m_bg_tilemap[0]->set_scrollx(0, m_scroll1x);
+ m_bg_tilemap[0]->set_scrolly(0, m_scroll1y);
if (videocontrol & 0x01) /* linescroll enable */
{
- int scrly= -state->m_scroll2y;
+ int scrly= -m_scroll2y;
int i;
int otheroffs;
- state->m_bg_tilemap[1]->set_scroll_rows(1024);
+ m_bg_tilemap[1]->set_scroll_rows(1024);
- otheroffs = state->m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
+ otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
for (i = 0; i < 256; i++)
- state->m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, state->m_scroll2x + state->m_other[(i + otheroffs) & 0x3ff]);
+ m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, m_scroll2x + m_other[(i + otheroffs) & 0x3ff]);
}
else
{
- state->m_bg_tilemap[1]->set_scroll_rows(1);
- state->m_bg_tilemap[1]->set_scrollx(0, state->m_scroll2x);
+ m_bg_tilemap[1]->set_scroll_rows(1);
+ m_bg_tilemap[1]->set_scrollx(0, m_scroll2x);
}
- state->m_bg_tilemap[1]->set_scrolly(0, state->m_scroll2y);
- state->m_bg_tilemap[2]->set_scrollx(0, state->m_scroll3x);
- state->m_bg_tilemap[2]->set_scrolly(0, state->m_scroll3y);
+ m_bg_tilemap[1]->set_scrolly(0, m_scroll2y);
+ m_bg_tilemap[2]->set_scrollx(0, m_scroll3x);
+ m_bg_tilemap[2]->set_scrolly(0, m_scroll3y);
/* turn all tilemaps on regardless of settings in get_video_base() */
/* write a custom get_video_base for this bootleg hardware? */
- state->m_bg_tilemap[0]->enable(1);
- state->m_bg_tilemap[1]->enable(1);
- state->m_bg_tilemap[2]->enable(1);
+ m_bg_tilemap[0]->enable(1);
+ m_bg_tilemap[1]->enable(1);
+ m_bg_tilemap[2]->enable(1);
/* Blank screen */
bitmap.fill(0xbff, cliprect);
@@ -742,8 +740,8 @@ static MACHINE_CONFIG_START( fcrash, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(fcrash)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(4096)
@@ -792,8 +790,8 @@ static MACHINE_CONFIG_START( kodb, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(kodb)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_kodb)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -948,8 +946,8 @@ static MACHINE_CONFIG_START( sgyxz, cps_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(kodb)
- MCFG_SCREEN_VBLANK_STATIC(cps1)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_kodb)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
diff --git a/src/mame/drivers/feversoc.c b/src/mame/drivers/feversoc.c
index e9b93ed2035..3d8d2768d6d 100644
--- a/src/mame/drivers/feversoc.c
+++ b/src/mame/drivers/feversoc.c
@@ -78,6 +78,7 @@ public:
DECLARE_WRITE32_MEMBER(output_w);
DECLARE_DRIVER_INIT(feversoc);
virtual void video_start();
+ UINT32 screen_update_feversoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -88,10 +89,9 @@ void feversoc_state::video_start()
}
-static SCREEN_UPDATE_IND16( feversoc )
+UINT32 feversoc_state::screen_update_feversoc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- feversoc_state *state = screen.machine().driver_data<feversoc_state>();
- UINT32 *spriteram32 = state->m_spriteram;
+ UINT32 *spriteram32 = m_spriteram;
int offs,spr_offs,colour,sx,sy,h,w,dx,dy;
bitmap.fill(screen.machine().pens[0], cliprect); //black pen
@@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( feversoc, feversoc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) //dynamic resolution?
- MCFG_SCREEN_UPDATE_STATIC(feversoc)
+ MCFG_SCREEN_UPDATE_DRIVER(feversoc_state, screen_update_feversoc)
MCFG_GFXDECODE(feversoc)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/fgoal.c b/src/mame/drivers/fgoal.c
index 0b9373adfa4..0be93b869a7 100644
--- a/src/mame/drivers/fgoal.c
+++ b/src/mame/drivers/fgoal.c
@@ -372,7 +372,7 @@ static MACHINE_CONFIG_START( fgoal, fgoal_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255)
- MCFG_SCREEN_UPDATE_STATIC(fgoal)
+ MCFG_SCREEN_UPDATE_DRIVER(fgoal_state, screen_update_fgoal)
MCFG_GFXDECODE(fgoal)
MCFG_PALETTE_LENGTH(128 + 16 + 1)
diff --git a/src/mame/drivers/finalizr.c b/src/mame/drivers/finalizr.c
index 5de9bdb2ceb..edb1c4f7693 100644
--- a/src/mame/drivers/finalizr.c
+++ b/src/mame/drivers/finalizr.c
@@ -292,7 +292,7 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(finalizr)
+ MCFG_SCREEN_UPDATE_DRIVER(finalizr_state, screen_update_finalizr)
MCFG_GFXDECODE(finalizr)
MCFG_PALETTE_LENGTH(2*16*16)
diff --git a/src/mame/drivers/firebeat.c b/src/mame/drivers/firebeat.c
index ae6378af0a3..709c9dd77a6 100644
--- a/src/mame/drivers/firebeat.c
+++ b/src/mame/drivers/firebeat.c
@@ -183,6 +183,8 @@ public:
DECLARE_MACHINE_START(firebeat);
DECLARE_MACHINE_RESET(firebeat);
DECLARE_VIDEO_START(firebeat);
+ UINT32 screen_update_firebeat_0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_firebeat_1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -598,8 +600,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const r
return 0;
}
-static SCREEN_UPDATE_IND16( firebeat_0 ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE_IND16( firebeat_1 ) { return update_screen(screen, bitmap, cliprect, 1); }
+UINT32 firebeat_state::screen_update_firebeat_0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 0); }
+UINT32 firebeat_state::screen_update_firebeat_1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 1); }
static UINT32 GCU_r(running_machine &machine, int chip, UINT32 offset, UINT32 mem_mask)
{
@@ -1994,7 +1996,7 @@ static MACHINE_CONFIG_START( firebeat, firebeat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(firebeat_0)
+ MCFG_SCREEN_UPDATE_DRIVER(firebeat_state, screen_update_firebeat_0)
MCFG_VIDEO_START_OVERRIDE(firebeat_state,firebeat)
@@ -2040,14 +2042,14 @@ static MACHINE_CONFIG_START( firebeat2, firebeat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(firebeat_0)
+ MCFG_SCREEN_UPDATE_DRIVER(firebeat_state, screen_update_firebeat_0)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(firebeat_1)
+ MCFG_SCREEN_UPDATE_DRIVER(firebeat_state, screen_update_firebeat_1)
MCFG_VIDEO_START_OVERRIDE(firebeat_state,firebeat)
diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c
index 0f9a29efcdc..603d9632268 100644
--- a/src/mame/drivers/firefox.c
+++ b/src/mame/drivers/firefox.c
@@ -98,6 +98,7 @@ public:
TILE_GET_INFO_MEMBER(bgtile_get_info);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_firefox(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -214,9 +215,8 @@ void firefox_state::video_start()
}
-static SCREEN_UPDATE_RGB32( firefox )
+UINT32 firefox_state::screen_update_firefox(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- firefox_state *state = screen.machine().driver_data<firefox_state>();
int sprite;
int gfxtop = screen.visible_area().min_y;
@@ -224,7 +224,7 @@ static SCREEN_UPDATE_RGB32( firefox )
for( sprite = 0; sprite < 32; sprite++ )
{
- UINT8 *sprite_data = state->m_spriteram + ( 0x200 * state->m_sprite_bank ) + ( sprite * 16 );
+ UINT8 *sprite_data = m_spriteram + ( 0x200 * m_sprite_bank ) + ( sprite * 16 );
int flags = sprite_data[ 0 ];
int y = sprite_data[ 1 ] + ( 256 * ( ( flags >> 0 ) & 1 ) );
int x = sprite_data[ 2 ] + ( 256 * ( ( flags >> 1 ) & 1 ) );
@@ -245,7 +245,7 @@ static SCREEN_UPDATE_RGB32( firefox )
}
}
- state->m_bgtiles->draw(bitmap, cliprect, 0, 0 );
+ m_bgtiles->draw(bitmap, cliprect, 0, 0 );
return 0;
}
@@ -716,7 +716,7 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
MCFG_LASERDISC_22VP931_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(64*8, 525, firefox)
+ MCFG_LASERDISC_OVERLAY_DRIVER(64*8, 525, firefox_state, screen_update_firefox)
MCFG_LASERDISC_OVERLAY_CLIP(7*8, 53*8-1, 44, 480+44)
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/firetrap.c b/src/mame/drivers/firetrap.c
index 74fe287930a..30b54082786 100644
--- a/src/mame/drivers/firetrap.c
+++ b/src/mame/drivers/firetrap.c
@@ -657,7 +657,7 @@ static MACHINE_CONFIG_START( firetrap, firetrap_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(firetrap)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
MCFG_GFXDECODE(firetrap)
MCFG_PALETTE_LENGTH(256)
@@ -697,7 +697,7 @@ static MACHINE_CONFIG_START( firetrapbl, firetrap_state )
MCFG_GFXDECODE(firetrap)
MCFG_PALETTE_LENGTH(256)
- MCFG_SCREEN_UPDATE_STATIC(firetrap)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/firetrk.c b/src/mame/drivers/firetrk.c
index 9c14c2e2fae..baa91dd8e4c 100644
--- a/src/mame/drivers/firetrk.c
+++ b/src/mame/drivers/firetrk.c
@@ -887,7 +887,7 @@ static MACHINE_CONFIG_START( firetrk, firetrk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(320, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(firetrk)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_firetrk)
MCFG_PALETTE_LENGTH(28)
MCFG_GFXDECODE(firetrk)
@@ -909,7 +909,7 @@ static MACHINE_CONFIG_DERIVED( superbug, firetrk )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(superbug)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_superbug)
MCFG_VIDEO_START_OVERRIDE(firetrk_state,superbug)
MCFG_GFXDECODE(superbug)
@@ -930,7 +930,7 @@ static MACHINE_CONFIG_DERIVED( montecar, firetrk )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(montecar)
+ MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_montecar)
MCFG_VIDEO_START_OVERRIDE(firetrk_state,montecar)
MCFG_GFXDECODE(montecar)
diff --git a/src/mame/drivers/fitfight.c b/src/mame/drivers/fitfight.c
index afa8f1a930a..233eaa4521b 100644
--- a/src/mame/drivers/fitfight.c
+++ b/src/mame/drivers/fitfight.c
@@ -751,7 +751,7 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fitfight)
+ MCFG_SCREEN_UPDATE_DRIVER(fitfight_state, screen_update_fitfight)
MCFG_PALETTE_LENGTH(0x800)
@@ -776,7 +776,7 @@ static MACHINE_CONFIG_START( bbprot, fitfight_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fitfight)
+ MCFG_SCREEN_UPDATE_DRIVER(fitfight_state, screen_update_fitfight)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/flipjack.c b/src/mame/drivers/flipjack.c
index 5f2cbd92664..8a6ce406bed 100644
--- a/src/mame/drivers/flipjack.c
+++ b/src/mame/drivers/flipjack.c
@@ -122,6 +122,7 @@ public:
DECLARE_WRITE8_MEMBER(flipjack_portc_w);
virtual void machine_start();
virtual void palette_init();
+ UINT32 screen_update_flipjack(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -147,17 +148,16 @@ void flipjack_state::palette_init()
}
-static SCREEN_UPDATE_RGB32( flipjack )
+UINT32 flipjack_state::screen_update_flipjack(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- flipjack_state *state = screen.machine().driver_data<flipjack_state>();
int x,y,count;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
// draw playfield
- if (state->m_layer & 2)
+ if (m_layer & 2)
{
- const UINT8 *blit_data = state->memregion("gfx2")->base();
+ const UINT8 *blit_data = memregion("gfx2")->base();
count = 0;
@@ -194,15 +194,15 @@ static SCREEN_UPDATE_RGB32( flipjack )
for (x=0;x<32;x++)
{
gfx_element *gfx = screen.machine().gfx[0];
- int tile = state->m_bank << 8 | state->m_vram[x+y*0x100];
- int color = state->m_cram[x+y*0x100] & 0x3f;
+ int tile = m_bank << 8 | m_vram[x+y*0x100];
+ int color = m_cram[x+y*0x100] & 0x3f;
drawgfx_transpen(bitmap, cliprect, gfx, tile, color, 0, 0, x*8, y*8, 0);
}
}
// draw framebuffer
- if (state->m_layer & 4)
+ if (m_layer & 4)
{
count = 0;
@@ -213,7 +213,7 @@ static SCREEN_UPDATE_RGB32( flipjack )
UINT32 pen,color;
int xi;
- pen = (state->m_fbram[count] & 0xff)>>0;
+ pen = (m_fbram[count] & 0xff)>>0;
for(xi=0;xi<8;xi++)
{
@@ -491,7 +491,7 @@ static MACHINE_CONFIG_START( flipjack, flipjack_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 0x188, 0, 0x100, 0x100, 0, 0xc0) // from crtc
- MCFG_SCREEN_UPDATE_STATIC(flipjack)
+ MCFG_SCREEN_UPDATE_DRIVER(flipjack_state, screen_update_flipjack)
MCFG_MC6845_ADD("crtc", HD6845, VIDEO_CLOCK/8, mc6845_intf)
diff --git a/src/mame/drivers/flkatck.c b/src/mame/drivers/flkatck.c
index 323b46472a5..7b4f052cd88 100644
--- a/src/mame/drivers/flkatck.c
+++ b/src/mame/drivers/flkatck.c
@@ -236,7 +236,7 @@ static MACHINE_CONFIG_START( flkatck, flkatck_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(flkatck)
+ MCFG_SCREEN_UPDATE_DRIVER(flkatck_state, screen_update_flkatck)
MCFG_GFXDECODE(flkatck)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/flower.c b/src/mame/drivers/flower.c
index ef360f0b1a2..bc54b918a6f 100644
--- a/src/mame/drivers/flower.c
+++ b/src/mame/drivers/flower.c
@@ -270,7 +270,7 @@ static MACHINE_CONFIG_START( flower, flower_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(34*8, 33*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(flower)
+ MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update_flower)
MCFG_GFXDECODE(flower)
diff --git a/src/mame/drivers/flstory.c b/src/mame/drivers/flstory.c
index 4975c8d99a3..0e166f2a1f0 100644
--- a/src/mame/drivers/flstory.c
+++ b/src/mame/drivers/flstory.c
@@ -1102,7 +1102,7 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(flstory)
+ MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_flstory)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1159,7 +1159,7 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(flstory)
+ MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_flstory)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1216,7 +1216,7 @@ static MACHINE_CONFIG_START( victnine, flstory_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(victnine)
+ MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_victnine)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1279,7 +1279,7 @@ static MACHINE_CONFIG_START( rumba, flstory_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rumba)
+ MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_rumba)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c
index 75d9fb43925..fdf99db5666 100644
--- a/src/mame/drivers/flyball.c
+++ b/src/mame/drivers/flyball.c
@@ -60,6 +60,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_flyball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -99,25 +100,24 @@ void flyball_state::video_start()
}
-static SCREEN_UPDATE_IND16( flyball )
+UINT32 flyball_state::screen_update_flyball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- flyball_state *state = screen.machine().driver_data<flyball_state>();
- int pitcherx = state->m_pitcher_horz;
- int pitchery = state->m_pitcher_vert - 31;
+ int pitcherx = m_pitcher_horz;
+ int pitchery = m_pitcher_vert - 31;
- int ballx = state->m_ball_horz - 1;
- int bally = state->m_ball_vert - 17;
+ int ballx = m_ball_horz - 1;
+ int bally = m_ball_vert - 17;
int x;
int y;
- state->m_tmap->mark_all_dirty();
+ m_tmap->mark_all_dirty();
/* draw playfield */
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
/* draw pitcher */
- drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1], state->m_pitcher_pic ^ 0xf, 0, 1, 0, pitcherx, pitchery, 1);
+ drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1], m_pitcher_pic ^ 0xf, 0, 1, 0, pitcherx, pitchery, 1);
/* draw ball */
@@ -423,7 +423,7 @@ static MACHINE_CONFIG_START( flyball, flyball_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(flyball)
+ MCFG_SCREEN_UPDATE_DRIVER(flyball_state, screen_update_flyball)
MCFG_GFXDECODE(flyball)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/foodf.c b/src/mame/drivers/foodf.c
index 4afeb21835e..eb4fbc6fa6d 100644
--- a/src/mame/drivers/foodf.c
+++ b/src/mame/drivers/foodf.c
@@ -371,7 +371,7 @@ static MACHINE_CONFIG_START( foodf, foodf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 256, 259, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(foodf)
+ MCFG_SCREEN_UPDATE_DRIVER(foodf_state, screen_update_foodf)
MCFG_VIDEO_START_OVERRIDE(foodf_state,foodf)
diff --git a/src/mame/drivers/fortecar.c b/src/mame/drivers/fortecar.c
index 259a63d05bf..5c7826f69e4 100644
--- a/src/mame/drivers/fortecar.c
+++ b/src/mame/drivers/fortecar.c
@@ -343,6 +343,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_fortecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -350,9 +351,8 @@ void fortecar_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(fortecar)
+UINT32 fortecar_state::screen_update_fortecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- fortecar_state *state = screen.machine().driver_data<fortecar_state>();
int x,y,count;
count = 0;
@@ -362,9 +362,9 @@ static SCREEN_UPDATE_IND16(fortecar)
{
int tile,color,bpp;
- tile = (state->m_vram[(count*4)+1] | (state->m_vram[(count*4)+2]<<8)) & 0xfff;
- color = state->m_vram[(count*4)+3] & 0x1f;
- bpp = (state->m_vram[(count*4)+3] & 0x20) >> 5;
+ tile = (m_vram[(count*4)+1] | (m_vram[(count*4)+2]<<8)) & 0xfff;
+ color = m_vram[(count*4)+3] & 0x1f;
+ bpp = (m_vram[(count*4)+3] & 0x20) >> 5;
if(bpp)
color&=0x3;
@@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( fortecar, fortecar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 600-1, 0, 240-1) /* driven by CRTC */
- MCFG_SCREEN_UPDATE_STATIC(fortecar)
+ MCFG_SCREEN_UPDATE_DRIVER(fortecar_state, screen_update_fortecar)
MCFG_EEPROM_ADD("eeprom", forte_eeprom_intf)
diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c
index 592d8697410..d69780e18d9 100644
--- a/src/mame/drivers/freekick.c
+++ b/src/mame/drivers/freekick.c
@@ -642,7 +642,7 @@ static MACHINE_CONFIG_START( base, freekick_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pbillrd)
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_pbillrd)
MCFG_PALETTE_LENGTH(0x200)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
@@ -687,7 +687,7 @@ static MACHINE_CONFIG_DERIVED( freekickb, base )
MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(freekick)
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_freekick)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gigas, base )
@@ -700,7 +700,7 @@ static MACHINE_CONFIG_DERIVED( gigas, base )
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(gigas)
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( oigas, gigas )
diff --git a/src/mame/drivers/fromanc2.c b/src/mame/drivers/fromanc2.c
index 6b26d9af908..40c9b0d98ba 100644
--- a/src/mame/drivers/fromanc2.c
+++ b/src/mame/drivers/fromanc2.c
@@ -570,14 +570,14 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc2)
@@ -620,14 +620,14 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromancr)
@@ -667,14 +667,14 @@ static MACHINE_CONFIG_START( fromanc4, fromanc2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(2048, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
+ MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc4)
diff --git a/src/mame/drivers/fromance.c b/src/mame/drivers/fromance.c
index 442bda25619..41256814adf 100644
--- a/src/mame/drivers/fromance.c
+++ b/src/mame/drivers/fromance.c
@@ -1018,7 +1018,7 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromance)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(1024)
@@ -1056,7 +1056,7 @@ static MACHINE_CONFIG_START( idolmj, fromance_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromance)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(2048)
@@ -1094,7 +1094,7 @@ static MACHINE_CONFIG_START( fromance, fromance_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(fromance)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c
index 592a40f011f..0ff86a5c21c 100644
--- a/src/mame/drivers/funkball.c
+++ b/src/mame/drivers/funkball.c
@@ -164,6 +164,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(funkball_pic8259_1_set_int_line);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_funkball(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
void funkball_state::video_start()
@@ -1134,7 +1135,7 @@ void funkball_state::machine_reset()
m_voodoo_pci_regs.base_addr = 0xff000000;
}
-SCREEN_UPDATE_RGB32( funkball )
+UINT32 funkball_state::screen_update_funkball(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
voodoo_update(screen.machine().device("voodoo_0"), bitmap, cliprect);
return 0;
diff --git a/src/mame/drivers/funkybee.c b/src/mame/drivers/funkybee.c
index ddc30a1fcd8..cef93cbe6a2 100644
--- a/src/mame/drivers/funkybee.c
+++ b/src/mame/drivers/funkybee.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( funkybee, funkybee_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12, 32*8-8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(funkybee)
+ MCFG_SCREEN_UPDATE_DRIVER(funkybee_state, screen_update_funkybee)
MCFG_GFXDECODE(funkybee)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/funkyjet.c b/src/mame/drivers/funkyjet.c
index a022ab19d53..b48686451d1 100644
--- a/src/mame/drivers/funkyjet.c
+++ b/src/mame/drivers/funkyjet.c
@@ -324,7 +324,7 @@ static MACHINE_CONFIG_START( funkyjet, funkyjet_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(funkyjet)
+ MCFG_SCREEN_UPDATE_DRIVER(funkyjet_state, screen_update_funkyjet)
MCFG_GFXDECODE(funkyjet)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index 5175865d59c..3208b7740db 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -2366,7 +2366,7 @@ static MACHINE_CONFIG_START( fw1stpal, funworld_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((124+1)*4, (30+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06 */
- MCFG_SCREEN_UPDATE_STATIC(funworld)
+ MCFG_SCREEN_UPDATE_DRIVER(funworld_state, screen_update_funworld)
MCFG_GFXDECODE(fw1stpal)
diff --git a/src/mame/drivers/funybubl.c b/src/mame/drivers/funybubl.c
index 5823b292229..58acb3889cf 100644
--- a/src/mame/drivers/funybubl.c
+++ b/src/mame/drivers/funybubl.c
@@ -234,7 +234,7 @@ static MACHINE_CONFIG_START( funybubl, funybubl_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(12*8, 512-12*8-1, 16, 256-16-1)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(funybubl)
+ MCFG_SCREEN_UPDATE_DRIVER(funybubl_state, screen_update_funybubl)
MCFG_GFXDECODE(funybubl)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/fuukifg2.c b/src/mame/drivers/fuukifg2.c
index dcf7fdc7e2d..e8c1ea4dd45 100644
--- a/src/mame/drivers/fuukifg2.c
+++ b/src/mame/drivers/fuukifg2.c
@@ -478,7 +478,7 @@ static MACHINE_CONFIG_START( fuuki16, fuuki16_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(fuuki16)
+ MCFG_SCREEN_UPDATE_DRIVER(fuuki16_state, screen_update_fuuki16)
MCFG_GFXDECODE(fuuki16)
MCFG_PALETTE_LENGTH(0x800*4)
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index 539eabff04c..ac076081065 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -605,8 +605,8 @@ static MACHINE_CONFIG_START( fuuki32, fuuki32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fuuki32)
- MCFG_SCREEN_VBLANK_STATIC(fuuki32)
+ MCFG_SCREEN_UPDATE_DRIVER(fuuki32_state, screen_update_fuuki32)
+ MCFG_SCREEN_VBLANK_DRIVER(fuuki32_state, screen_eof_fuuki32)
MCFG_GFXDECODE(fuuki32)
MCFG_PALETTE_LENGTH(0x4000/2)
diff --git a/src/mame/drivers/gaelco.c b/src/mame/drivers/gaelco.c
index 93f4e4172a0..ea4aafeb7bf 100644
--- a/src/mame/drivers/gaelco.c
+++ b/src/mame/drivers/gaelco.c
@@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( bigkarnk, gaelco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(bigkarnk)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_bigkarnk)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -551,7 +551,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(maniacsq)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -581,7 +581,7 @@ static MACHINE_CONFIG_START( squash, gaelco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(maniacsq)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -611,7 +611,7 @@ static MACHINE_CONFIG_START( thoop, gaelco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(maniacsq)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c
index 80a2c7aaec0..7d2e5c4be17 100644
--- a/src/mame/drivers/gaelco2.c
+++ b/src/mame/drivers/gaelco2.c
@@ -167,7 +167,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(0x0080000)
@@ -300,7 +300,7 @@ static MACHINE_CONFIG_START( bang, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(0x0200000)
@@ -541,7 +541,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(0x0400000)
@@ -786,14 +786,14 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2_left)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_right)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2_dual)
@@ -977,7 +977,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(0x0400000)
@@ -1221,14 +1221,14 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(384, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2_left)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(384, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_right)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c
index e78d6e3c68c..c05073ff279 100644
--- a/src/mame/drivers/gaelco3d.c
+++ b/src/mame/drivers/gaelco3d.c
@@ -1019,7 +1019,7 @@ static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(576, 432)
MCFG_SCREEN_VISIBLE_AREA(0, 575, 0, 431)
- MCFG_SCREEN_UPDATE_STATIC(gaelco3d)
+ MCFG_SCREEN_UPDATE_DRIVER(gaelco3d_state, screen_update_gaelco3d)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/gaiden.c b/src/mame/drivers/gaiden.c
index 051e4a55872..dc43a5d3f1d 100644
--- a/src/mame/drivers/gaiden.c
+++ b/src/mame/drivers/gaiden.c
@@ -779,7 +779,7 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gaiden)
+ MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden)
MCFG_GFXDECODE(gaiden)
MCFG_PALETTE_LENGTH(4096)
@@ -809,7 +809,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( raiga, shadoww )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(raiga)
+ MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_raiga)
MCFG_VIDEO_START_OVERRIDE(gaiden_state,raiga)
MCFG_GFXDECODE(raiga)
@@ -835,7 +835,7 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(drgnbowl)
+ MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_drgnbowl)
MCFG_GFXDECODE(drgnbowl)
MCFG_PALETTE_LENGTH(4096)
@@ -951,7 +951,7 @@ static MACHINE_CONFIG_START( mastninj, gaiden_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gaiden)
+ MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden)
MCFG_GFXDECODE(mastninj)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c
index 06a3d947a89..550dc0c3152 100644
--- a/src/mame/drivers/gal3.c
+++ b/src/mame/drivers/gal3.c
@@ -159,6 +159,7 @@ public:
DECLARE_READ32_MEMBER(rso_r);
DECLARE_WRITE32_MEMBER(rso_w);
DECLARE_VIDEO_START(gal3);
+ UINT32 screen_update_gal3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -193,9 +194,8 @@ static void update_palette( running_machine &machine )
}
} /* update_palette */
-static SCREEN_UPDATE_RGB32(gal3)
+UINT32 gal3_state::screen_update_gal3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- gal3_state *state = screen.machine().driver_data<gal3_state>();
int i;
char mst[18], slv[18];
static int pivot = 15;
@@ -208,19 +208,19 @@ static SCREEN_UPDATE_RGB32(gal3)
for( pri=0; pri<pivot; pri++ )
{
- state->c355_obj_draw(bitmap, cliprect, pri);
+ c355_obj_draw(bitmap, cliprect, pri);
}
/* CopyVisiblePolyFrameBuffer( bitmap, cliprect,0,0x7fbf );
for( pri=pivot; pri<15; pri++ )
{
- state->c355_obj_draw(bitmap, cliprect, pri);
+ c355_obj_draw(bitmap, cliprect, pri);
}*/
// CPU Diag LEDs
mst[17]='\0', slv[17]='\0';
-/// printf("mst=0x%x\tslv=0x%x\n", state->m_led_mst, state->m_led_slv);
+/// printf("mst=0x%x\tslv=0x%x\n", m_led_mst, m_led_slv);
for(i=16;i<32;i++)
{
int t;
@@ -230,12 +230,12 @@ static SCREEN_UPDATE_RGB32(gal3)
t=i+1;
mst[8]=' '; slv[8]=' ';
- if(state->m_led_mst&(1<<i))
+ if(m_led_mst&(1<<i))
mst[t-16]='*';
else
mst[t-16]='O';
- if(state->m_led_slv&(1<<i))
+ if(m_led_slv&(1<<i))
slv[t-16]='*';
else
slv[t-16]='O';
@@ -658,14 +658,14 @@ static MACHINE_CONFIG_START( gal3, gal3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE_STATIC(gal3)
+ MCFG_SCREEN_UPDATE_DRIVER(gal3_state, screen_update_gal3)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE_STATIC(gal3)
+ MCFG_SCREEN_UPDATE_DRIVER(gal3_state, screen_update_gal3)
MCFG_GFXDECODE(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
diff --git a/src/mame/drivers/galaga.c b/src/mame/drivers/galaga.c
index fb749f8c19c..13c4d545aa3 100644
--- a/src/mame/drivers/galaga.c
+++ b/src/mame/drivers/galaga.c
@@ -1700,8 +1700,8 @@ static MACHINE_CONFIG_START( bosco, bosco_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE_STATIC(bosco)
- MCFG_SCREEN_VBLANK_STATIC(bosco)
+ MCFG_SCREEN_UPDATE_DRIVER(bosco_state, screen_update_bosco)
+ MCFG_SCREEN_VBLANK_DRIVER(bosco_state, screen_eof_bosco)
MCFG_GFXDECODE(bosco)
MCFG_PALETTE_LENGTH(64*4+64*4+4+64)
@@ -1756,8 +1756,8 @@ static MACHINE_CONFIG_START( galaga, galaga_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(galaga)
- MCFG_SCREEN_VBLANK_STATIC(galaga)
+ MCFG_SCREEN_UPDATE_DRIVER(bosco_state, screen_update_galaga)
+ MCFG_SCREEN_VBLANK_DRIVER(bosco_state, screen_eof_galaga)
MCFG_GFXDECODE(galaga)
MCFG_PALETTE_LENGTH(64*4+64*4+64)
@@ -1834,7 +1834,7 @@ static MACHINE_CONFIG_START( xevious, xevious_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(xevious)
+ MCFG_SCREEN_UPDATE_DRIVER(xevious_state, screen_update_xevious)
MCFG_GFXDECODE(xevious)
MCFG_PALETTE_LENGTH(128*4+64*8+64*2)
@@ -1923,7 +1923,7 @@ static MACHINE_CONFIG_START( digdug, digdug_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(digdug)
+ MCFG_SCREEN_UPDATE_DRIVER(digdug_state, screen_update_digdug)
MCFG_GFXDECODE(digdug)
MCFG_PALETTE_LENGTH(16*2+64*4+64*4)
diff --git a/src/mame/drivers/galastrm.c b/src/mame/drivers/galastrm.c
index c07f45a3d05..1a73a00ba52 100644
--- a/src/mame/drivers/galastrm.c
+++ b/src/mame/drivers/galastrm.c
@@ -320,7 +320,7 @@ static MACHINE_CONFIG_START( galastrm, galastrm_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 50*8)
MCFG_SCREEN_VISIBLE_AREA(0+96, 40*8-1+96, 3*8+60, 32*8-1+60)
- MCFG_SCREEN_UPDATE_STATIC(galastrm)
+ MCFG_SCREEN_UPDATE_DRIVER(galastrm_state, screen_update_galastrm)
MCFG_GFXDECODE(galastrm)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c
index 2bb6f855a6d..839e4fcba25 100644
--- a/src/mame/drivers/galaxi.c
+++ b/src/mame/drivers/galaxi.c
@@ -94,6 +94,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_galaxi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -181,9 +182,8 @@ void galaxi_state::video_start()
m_bg3_tmap->set_scrolldx(-8, 0);
}
-static SCREEN_UPDATE_IND16(galaxi)
+UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- galaxi_state *state = screen.machine().driver_data<galaxi_state>();
int layers_ctrl = -1;
#ifdef MAME_DEBUG
@@ -199,13 +199,13 @@ static SCREEN_UPDATE_IND16(galaxi)
}
#endif
- if (layers_ctrl & 1) state->m_bg1_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_bg1_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
else bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (layers_ctrl & 2) state->m_bg2_tmap->draw(bitmap, cliprect, 0, 0);
- if (layers_ctrl & 4) state->m_bg3_tmap->draw(bitmap, cliprect, 0, 0);
- if (layers_ctrl & 8) state->m_bg4_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_bg2_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 4) m_bg3_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 8) m_bg4_tmap->draw(bitmap, cliprect, 0, 0);
- if (layers_ctrl & 16) state->m_fg_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 16) m_fg_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -416,7 +416,7 @@ static MACHINE_CONFIG_START( galaxi, galaxi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(16*5, 512-16*2-1, 16*1, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxi)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxi_state, screen_update_galaxi)
MCFG_GFXDECODE(galaxi)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c
index bf2b446251f..c7ac0ad5d20 100644
--- a/src/mame/drivers/galaxia.c
+++ b/src/mame/drivers/galaxia.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxia)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_galaxia)
MCFG_GFXDECODE(galaxia)
MCFG_PALETTE_LENGTH(0x18+2)
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( astrowar, galaxia_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(astrowar)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_astrowar)
MCFG_GFXDECODE(astrowar)
MCFG_PALETTE_LENGTH(0x18+2)
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index 39aa3c537f5..6ff3b7e1dea 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -2094,7 +2094,7 @@ static MACHINE_CONFIG_START( galaxian_base, galaxian_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(galaxian)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxian_state, screen_update_galaxian)
/* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c
index ecb7aca6dcf..3e09b97c883 100644
--- a/src/mame/drivers/galaxold.c
+++ b/src/mame/drivers/galaxold.c
@@ -2187,7 +2187,7 @@ static MACHINE_CONFIG_START( galaxold_base, galaxold_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,galaxold)
@@ -2340,7 +2340,7 @@ static MACHINE_CONFIG_START( drivfrcg, galaxold_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
MCFG_PALETTE_LENGTH(64)
MCFG_GFXDECODE(gmgalax)
@@ -2364,7 +2364,7 @@ static MACHINE_CONFIG_DERIVED( bongo, galaxold_base )
MCFG_VIDEO_START_OVERRIDE(galaxold_state,bongo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
MCFG_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4)
MCFG_SOUND_CONFIG(bongo_ay8910_interface)
@@ -2440,7 +2440,7 @@ static MACHINE_CONFIG_START( racknrol, galaxold_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
@@ -2498,7 +2498,7 @@ static MACHINE_CONFIG_START( hexpoola, galaxold_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c
index 482d275a4bb..b96d28d7012 100644
--- a/src/mame/drivers/galgame.c
+++ b/src/mame/drivers/galgame.c
@@ -47,6 +47,7 @@ public:
DECLARE_DRIVER_INIT(galaxygame);
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/*************************************
@@ -168,13 +169,12 @@ WRITE16_MEMBER(galaxygame_state::ke_w)
*
*************************************/
-static SCREEN_UPDATE_IND16( galaxygame )
+UINT32 galaxygame_state::screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- galaxygame_state *state = screen.machine().driver_data<galaxygame_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- for (int i = 0; i < state->m_point_display_list_index; i++ )
+ for (int i = 0; i < m_point_display_list_index; i++ )
{
- bitmap.pix16(state->m_point_display_list[i].x >> 7, state->m_point_display_list[i].y >> 7) = 1;
+ bitmap.pix16(m_point_display_list[i].x >> 7, m_point_display_list[i].y >> 7) = 1;
}
return 0;
}
@@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( galaxygame, galaxygame_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 511)
- MCFG_SCREEN_UPDATE_STATIC(galaxygame)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxygame_state, screen_update_galaxygame)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/galivan.c b/src/mame/drivers/galivan.c
index aa185cfe993..67905f3d460 100644
--- a/src/mame/drivers/galivan.c
+++ b/src/mame/drivers/galivan.c
@@ -452,7 +452,7 @@ static MACHINE_CONFIG_START( galivan, galivan_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galivan)
+ MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_galivan)
MCFG_GFXDECODE(galivan)
MCFG_PALETTE_LENGTH(8*16+16*16+256*16)
@@ -494,7 +494,7 @@ static MACHINE_CONFIG_START( ninjemak, galivan_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjemak)
+ MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_ninjemak)
MCFG_GFXDECODE(ninjemak)
MCFG_PALETTE_LENGTH(8*16+16*16+256*16)
diff --git a/src/mame/drivers/galpani2.c b/src/mame/drivers/galpani2.c
index 57c1f99e7d5..1d182dfc28f 100644
--- a/src/mame/drivers/galpani2.c
+++ b/src/mame/drivers/galpani2.c
@@ -597,7 +597,7 @@ static MACHINE_CONFIG_START( galpani2, galpani2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(galpani2)
+ MCFG_SCREEN_UPDATE_DRIVER(galpani2_state, screen_update_galpani2)
MCFG_GFXDECODE(galpani2)
MCFG_PALETTE_LENGTH(0x4000 + 0x200 + 0x8000) // sprites, bg8, bg15
diff --git a/src/mame/drivers/galpani3.c b/src/mame/drivers/galpani3.c
index 7702ee97741..aeb2d7d4dae 100644
--- a/src/mame/drivers/galpani3.c
+++ b/src/mame/drivers/galpani3.c
@@ -112,6 +112,7 @@ public:
{
}
virtual void video_start();
+ UINT32 screen_update_galpani3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -188,9 +189,8 @@ static int gp3_is_alpha_pen(running_machine &machine, int pen)
}
-static SCREEN_UPDATE_RGB32(galpani3)
+UINT32 galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- galpani3_state *state = screen.machine().driver_data<galpani3_state>();
int x,y;
UINT16* src1;
UINT32* dst;
@@ -199,7 +199,7 @@ static SCREEN_UPDATE_RGB32(galpani3)
bitmap.fill(0x0000, cliprect);
-// popmessage("%02x %02x", state->m_grap2_0->m_framebuffer_bright2, state->m_grap2_1->m_framebuffer_bright2);
+// popmessage("%02x %02x", m_grap2_0->m_framebuffer_bright2, m_grap2_1->m_framebuffer_bright2);
@@ -207,19 +207,19 @@ static SCREEN_UPDATE_RGB32(galpani3)
int drawy, drawx;
for (drawy=0;drawy<512;drawy++)
{
- UINT16* srcline1 = state->m_grap2_0->m_framebuffer + ((drawy+state->m_grap2_0->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
- UINT16* srcline2 = state->m_grap2_1->m_framebuffer + ((drawy+state->m_grap2_1->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
- UINT16* srcline3 = state->m_grap2_2->m_framebuffer + ((drawy+state->m_grap2_2->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline1 = m_grap2_0->m_framebuffer + ((drawy+m_grap2_0->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline2 = m_grap2_1->m_framebuffer + ((drawy+m_grap2_1->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline3 = m_grap2_2->m_framebuffer + ((drawy+m_grap2_2->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
- UINT16* priline = state->m_priority_buffer + ((drawy+state->m_priority_buffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* priline = m_priority_buffer + ((drawy+m_priority_buffer_scrolly+11)&0x1ff) * 0x200;
for (drawx=0;drawx<512;drawx++)
{
- int srcoffs1 = (drawx+state->m_grap2_0->m_framebuffer_scrollx+67)&0x1ff;
- int srcoffs2 = (drawx+state->m_grap2_1->m_framebuffer_scrollx+67)&0x1ff;
- int srcoffs3 = (drawx+state->m_grap2_2->m_framebuffer_scrollx+67)&0x1ff;
+ int srcoffs1 = (drawx+m_grap2_0->m_framebuffer_scrollx+67)&0x1ff;
+ int srcoffs2 = (drawx+m_grap2_1->m_framebuffer_scrollx+67)&0x1ff;
+ int srcoffs3 = (drawx+m_grap2_2->m_framebuffer_scrollx+67)&0x1ff;
- int prioffs = (drawx+state->m_priority_buffer_scrollx+66)&0x1ff;
+ int prioffs = (drawx+m_priority_buffer_scrollx+66)&0x1ff;
UINT8 dat1 = srcline1[srcoffs1];
UINT8 dat2 = srcline2[srcoffs2];
@@ -234,12 +234,12 @@ static SCREEN_UPDATE_RGB32(galpani3)
// this is all wrong
if (pridat==0x0f) // relates to the area you've drawn over
{
- if (dat1 && state->m_grap2_0->m_framebuffer_enable)
+ if (dat1 && m_grap2_0->m_framebuffer_enable)
{
dst[0] = paldata[dat1+0x4000];
}
- if (dat2 && state->m_grap2_1->m_framebuffer_enable)
+ if (dat2 && m_grap2_1->m_framebuffer_enable)
{
dst[0] = paldata[dat2+0x4100];
}
@@ -254,7 +254,7 @@ static SCREEN_UPDATE_RGB32(galpani3)
/* this isn't right, but the registers have something to do with
alpha / mixing, and bit 0x8000 of the palette is DEFINITELY alpha
enable -- see fading in intro */
- if (dat1 && state->m_grap2_0->m_framebuffer_enable)
+ if (dat1 && m_grap2_0->m_framebuffer_enable)
{
UINT16 pen = dat1+0x4000;
UINT32 pal = paldata[pen];
@@ -266,9 +266,9 @@ static SCREEN_UPDATE_RGB32(galpani3)
g = (pal & 0x0000ff00)>>8;
b = (pal & 0x000000ff)>>0;
- r = (r * state->m_grap2_0->m_framebuffer_bright2) / 0xff;
- g = (g * state->m_grap2_0->m_framebuffer_bright2) / 0xff;
- b = (b * state->m_grap2_0->m_framebuffer_bright2) / 0xff;
+ r = (r * m_grap2_0->m_framebuffer_bright2) / 0xff;
+ g = (g * m_grap2_0->m_framebuffer_bright2) / 0xff;
+ b = (b * m_grap2_0->m_framebuffer_bright2) / 0xff;
pal = (r & 0x000000ff)<<16;
pal |=(g & 0x000000ff)<<8;
@@ -282,7 +282,7 @@ static SCREEN_UPDATE_RGB32(galpani3)
}
}
- if (dat2 && state->m_grap2_1->m_framebuffer_enable)
+ if (dat2 && m_grap2_1->m_framebuffer_enable)
{
UINT16 pen = dat2+0x4100;
UINT32 pal = paldata[pen];
@@ -294,9 +294,9 @@ static SCREEN_UPDATE_RGB32(galpani3)
g = (pal & 0x0000ff00)>>8;
b = (pal & 0x000000ff)>>0;
- r = (r * state->m_grap2_1->m_framebuffer_bright2) / 0xff;
- g = (g * state->m_grap2_1->m_framebuffer_bright2) / 0xff;
- b = (b * state->m_grap2_1->m_framebuffer_bright2) / 0xff;
+ r = (r * m_grap2_1->m_framebuffer_bright2) / 0xff;
+ g = (g * m_grap2_1->m_framebuffer_bright2) / 0xff;
+ b = (b * m_grap2_1->m_framebuffer_bright2) / 0xff;
pal = (r & 0x000000ff)<<16;
pal |=(g & 0x000000ff)<<8;
@@ -310,7 +310,7 @@ static SCREEN_UPDATE_RGB32(galpani3)
}
}
- if (dat3 && state->m_grap2_2->m_framebuffer_enable)
+ if (dat3 && m_grap2_2->m_framebuffer_enable)
{
dst[0] = paldata[dat3+0x4200];
}
@@ -344,14 +344,14 @@ static SCREEN_UPDATE_RGB32(galpani3)
}
- state->m_sprite_bitmap_1.fill(0x0000, cliprect);
+ m_sprite_bitmap_1.fill(0x0000, cliprect);
- state->m_spritegen->skns_draw_sprites(screen.machine(), state->m_sprite_bitmap_1, cliprect, &state->m_spriteram32[0], 0x4000, screen.machine().root_device().memregion("gfx1")->base(), screen.machine().root_device().memregion ("gfx1")->bytes(), state->m_spc_regs );
+ m_spritegen->skns_draw_sprites(screen.machine(), m_sprite_bitmap_1, cliprect, &m_spriteram32[0], 0x4000, screen.machine().root_device().memregion("gfx1")->base(), screen.machine().root_device().memregion ("gfx1")->bytes(), m_spc_regs );
// ignoring priority bits for now..
for (y=0;y<240;y++)
{
- src1 = &state->m_sprite_bitmap_1.pix16(y);
+ src1 = &m_sprite_bitmap_1.pix16(y);
dst = &bitmap.pix32(y);
for (x=0;x<320;x++)
@@ -518,7 +518,7 @@ static MACHINE_CONFIG_START( galpani3, galpani3_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
//MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galpani3)
+ MCFG_SCREEN_UPDATE_DRIVER(galpani3_state, screen_update_galpani3)
MCFG_EEPROM_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/galpanic.c b/src/mame/drivers/galpanic.c
index 48905e69e4f..d1770986414 100644
--- a/src/mame/drivers/galpanic.c
+++ b/src/mame/drivers/galpanic.c
@@ -124,10 +124,10 @@ The current set of Super Model is an example of type C
#include "includes/galpanic.h"
#include "includes/galpnipt.h"
-static SCREEN_VBLANK( galpanic )
+void galpanic_state::screen_eof_galpanic(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
device_t *pandora = screen.machine().device("pandora");
pandora_eof(pandora);
@@ -567,8 +567,8 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(galpanic)
- MCFG_SCREEN_VBLANK_STATIC( galpanic )
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_galpanic)
+ MCFG_SCREEN_VBLANK_DRIVER(galpanic_state, screen_eof_galpanic)
MCFG_GFXDECODE(galpanic)
MCFG_PALETTE_LENGTH(1024 + 32768)
@@ -611,7 +611,7 @@ static MACHINE_CONFIG_DERIVED( comad, galpanic )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(comad)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_comad)
MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
@@ -625,7 +625,7 @@ static MACHINE_CONFIG_DERIVED( supmodel, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(comad)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_comad)
MCFG_SCREEN_VBLANK_NONE()
/* sound hardware */
@@ -643,7 +643,7 @@ static MACHINE_CONFIG_DERIVED( fantsia2, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(comad)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_comad)
MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
@@ -658,7 +658,7 @@ static MACHINE_CONFIG_DERIVED( galhustl, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(comad)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_comad)
MCFG_SCREEN_VBLANK_NONE()
/* sound hardware */
@@ -677,7 +677,7 @@ static MACHINE_CONFIG_DERIVED( zipzap, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(comad)
+ MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update_comad)
/* sound hardware */
MCFG_OKIM6295_REPLACE("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
diff --git a/src/mame/drivers/galspnbl.c b/src/mame/drivers/galspnbl.c
index 2ef75dc56ec..7289a278b23 100644
--- a/src/mame/drivers/galspnbl.c
+++ b/src/mame/drivers/galspnbl.c
@@ -242,7 +242,7 @@ static MACHINE_CONFIG_START( galspnbl, galspnbl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(galspnbl)
+ MCFG_SCREEN_UPDATE_DRIVER(galspnbl_state, screen_update_galspnbl)
MCFG_GFXDECODE(galspnbl)
MCFG_PALETTE_LENGTH(1024 + 32768)
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index 01d1c80019d..650ab9d7e0a 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -119,6 +119,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_gamecstl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -162,12 +163,11 @@ static void draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_eleme
}
}
-static SCREEN_UPDATE_IND16(gamecstl)
+UINT32 gamecstl_state::screen_update_gamecstl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- gamecstl_state *state = screen.machine().driver_data<gamecstl_state>();
int i, j;
gfx_element *gfx = screen.machine().gfx[0];
- UINT32 *cga = state->m_cga_ram;
+ UINT32 *cga = m_cga_ram;
int index = 0;
bitmap.fill(0, cliprect);
@@ -726,7 +726,7 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199)
- MCFG_SCREEN_UPDATE_STATIC(gamecstl)
+ MCFG_SCREEN_UPDATE_DRIVER(gamecstl_state, screen_update_gamecstl)
MCFG_GFXDECODE(CGA)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/gaplus.c b/src/mame/drivers/gaplus.c
index 452e720b5eb..ee659ca7e8a 100644
--- a/src/mame/drivers/gaplus.c
+++ b/src/mame/drivers/gaplus.c
@@ -583,8 +583,8 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gaplus)
- MCFG_SCREEN_VBLANK_STATIC(gaplus)
+ MCFG_SCREEN_UPDATE_DRIVER(gaplus_state, screen_update_gaplus)
+ MCFG_SCREEN_VBLANK_DRIVER(gaplus_state, screen_eof_gaplus)
MCFG_GFXDECODE(gaplus)
MCFG_PALETTE_LENGTH(64*4+64*8)
diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c
index 9dbd59111b6..721da7c69b7 100644
--- a/src/mame/drivers/gatron.c
+++ b/src/mame/drivers/gatron.c
@@ -460,7 +460,7 @@ static MACHINE_CONFIG_START( gat, gatron_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(48*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1)
- MCFG_SCREEN_UPDATE_STATIC(gat)
+ MCFG_SCREEN_UPDATE_DRIVER(gatron_state, screen_update_gat)
MCFG_GFXDECODE(gat)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/gauntlet.c b/src/mame/drivers/gauntlet.c
index 6bfb7d601d8..d8eca53275a 100644
--- a/src/mame/drivers/gauntlet.c
+++ b/src/mame/drivers/gauntlet.c
@@ -532,7 +532,7 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(gauntlet)
+ MCFG_SCREEN_UPDATE_DRIVER(gauntlet_state, screen_update_gauntlet)
MCFG_VIDEO_START_OVERRIDE(gauntlet_state,gauntlet)
diff --git a/src/mame/drivers/gberet.c b/src/mame/drivers/gberet.c
index f6ae1b37649..32fb2b515fd 100644
--- a/src/mame/drivers/gberet.c
+++ b/src/mame/drivers/gberet.c
@@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( gberet, gberet_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gberet)
+ MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberet)
MCFG_GFXDECODE(gberet)
MCFG_PALETTE_LENGTH(2*16*16)
@@ -474,7 +474,7 @@ static MACHINE_CONFIG_START( gberetb, gberet_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gberetb)
+ MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberetb)
MCFG_GFXDECODE(gberetb)
MCFG_PALETTE_LENGTH(2*16*16)
diff --git a/src/mame/drivers/gbusters.c b/src/mame/drivers/gbusters.c
index 6a53934fbfe..2e3f039a41c 100644
--- a/src/mame/drivers/gbusters.c
+++ b/src/mame/drivers/gbusters.c
@@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( gbusters, gbusters_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(gbusters)
+ MCFG_SCREEN_UPDATE_DRIVER(gbusters_state, screen_update_gbusters)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gcpinbal.c b/src/mame/drivers/gcpinbal.c
index a2202f1ff8d..4a569b4cdf5 100644
--- a/src/mame/drivers/gcpinbal.c
+++ b/src/mame/drivers/gcpinbal.c
@@ -447,7 +447,7 @@ static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gcpinbal)
+ MCFG_SCREEN_UPDATE_DRIVER(gcpinbal_state, screen_update_gcpinbal)
MCFG_GFXDECODE(gcpinbal)
diff --git a/src/mame/drivers/gijoe.c b/src/mame/drivers/gijoe.c
index ebf34277de9..f142369a499 100644
--- a/src/mame/drivers/gijoe.c
+++ b/src/mame/drivers/gijoe.c
@@ -312,7 +312,7 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(gijoe)
+ MCFG_SCREEN_UPDATE_DRIVER(gijoe_state, screen_update_gijoe)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ginganin.c b/src/mame/drivers/ginganin.c
index bb4aa11bae6..c83dd57e444 100644
--- a/src/mame/drivers/ginganin.c
+++ b/src/mame/drivers/ginganin.c
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( ginganin, ginganin_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0 + 16 , 255 - 16)
- MCFG_SCREEN_UPDATE_STATIC(ginganin)
+ MCFG_SCREEN_UPDATE_DRIVER(ginganin_state, screen_update_ginganin)
MCFG_GFXDECODE(ginganin)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c
index 079b2eb697d..abf1671bd78 100644
--- a/src/mame/drivers/gladiatr.c
+++ b/src/mame/drivers/gladiatr.c
@@ -687,7 +687,7 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ppking)
+ MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_ppking)
MCFG_GFXDECODE(ppking)
MCFG_PALETTE_LENGTH(1024)
@@ -735,7 +735,7 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gladiatr)
+ MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_gladiatr)
MCFG_GFXDECODE(gladiatr)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/glass.c b/src/mame/drivers/glass.c
index 6b90ff4905b..54a4168d9dd 100644
--- a/src/mame/drivers/glass.c
+++ b/src/mame/drivers/glass.c
@@ -205,7 +205,7 @@ static MACHINE_CONFIG_START( glass, glass_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 368-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(glass)
+ MCFG_SCREEN_UPDATE_DRIVER(glass_state, screen_update_glass)
MCFG_GFXDECODE(glass)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c
index d0735bad045..4e06e40b883 100644
--- a/src/mame/drivers/gng.c
+++ b/src/mame/drivers/gng.c
@@ -358,7 +358,7 @@ static MACHINE_CONFIG_START( gng, gng_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gng)
+ MCFG_SCREEN_UPDATE_DRIVER(gng_state, screen_update_gng)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(gng)
diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c
index 1f0b5d90a6c..890ae0747c4 100644
--- a/src/mame/drivers/go2000.c
+++ b/src/mame/drivers/go2000.c
@@ -53,6 +53,7 @@ public:
DECLARE_WRITE8_MEMBER(go2000_pcm_1_bankswitch_w);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_go2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -174,9 +175,8 @@ void go2000_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(go2000)
+UINT32 go2000_state::screen_update_go2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- go2000_state *state = screen.machine().driver_data<go2000_state>();
int x,y;
int count = 0;
@@ -185,8 +185,8 @@ static SCREEN_UPDATE_IND16(go2000)
{
for (y = 0; y < 32; y++)
{
- int tile = state->m_videoram[count];
- int attr = state->m_videoram2[count];
+ int tile = m_videoram[count];
+ int attr = m_videoram2[count];
drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[0], tile, attr, 0, 0, x * 8, y * 8);
count++;
}
@@ -197,8 +197,8 @@ static SCREEN_UPDATE_IND16(go2000)
{
for (y = 0; y < 32; y++)
{
- int tile = state->m_videoram[count];
- int attr = state->m_videoram2[count];
+ int tile = m_videoram[count];
+ int attr = m_videoram2[count];
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0], tile, attr, 0, 0, x * 8, y * 8, 0xf);
count++;
}
@@ -219,9 +219,9 @@ static SCREEN_UPDATE_IND16(go2000)
int dx, dy;
int flipx, y0;
- int y = state->m_videoram[offs + 0 + 0x00000 / 2];
- int x = state->m_videoram[offs + 1 + 0x00000 / 2];
- int dim = state->m_videoram2[offs + 0 + 0x00000 / 2];
+ int y = m_videoram[offs + 0 + 0x00000 / 2];
+ int x = m_videoram[offs + 1 + 0x00000 / 2];
+ int dim = m_videoram2[offs + 0 + 0x00000 / 2];
int bank = (x >> 12) & 0xf;
@@ -270,8 +270,8 @@ static SCREEN_UPDATE_IND16(go2000)
for (dx = 0; dx < dimx * 8; dx += 8)
{
int addr = (srcpg * 0x20 * 0x20) + ((srcx + tile_x) & 0x1f) * 0x20 + ((srcy + tile_y) & 0x1f);
- int tile = state->m_videoram[addr + 0x00000 / 2];
- int attr = state->m_videoram2[addr + 0x00000 / 2];
+ int tile = m_videoram[addr + 0x00000 / 2];
+ int attr = m_videoram2[addr + 0x00000 / 2];
int sx = x + dx;
int sy = (y + dy) & 0xff;
@@ -282,7 +282,7 @@ static SCREEN_UPDATE_IND16(go2000)
if (flipx)
tile_flipx = !tile_flipx;
- if (state->flip_screen())
+ if (flip_screen())
{
sx = max_x - sx;
sy = max_y - sy;
@@ -340,7 +340,7 @@ static MACHINE_CONFIG_START( go2000, go2000_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(go2000)
+ MCFG_SCREEN_UPDATE_DRIVER(go2000_state, screen_update_go2000)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/goal92.c b/src/mame/drivers/goal92.c
index 00df6b85e32..d3b7afeaab6 100644
--- a/src/mame/drivers/goal92.c
+++ b/src/mame/drivers/goal92.c
@@ -328,8 +328,8 @@ static MACHINE_CONFIG_START( goal92, goal92_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) // black border at bottom is a game bug...
- MCFG_SCREEN_UPDATE_STATIC(goal92)
- MCFG_SCREEN_VBLANK_STATIC(goal92)
+ MCFG_SCREEN_UPDATE_DRIVER(goal92_state, screen_update_goal92)
+ MCFG_SCREEN_VBLANK_DRIVER(goal92_state, screen_eof_goal92)
MCFG_GFXDECODE(goal92)
MCFG_PALETTE_LENGTH(128*16)
diff --git a/src/mame/drivers/goindol.c b/src/mame/drivers/goindol.c
index 1304f849920..5adb6525ff3 100644
--- a/src/mame/drivers/goindol.c
+++ b/src/mame/drivers/goindol.c
@@ -252,7 +252,7 @@ static MACHINE_CONFIG_START( goindol, goindol_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goindol)
+ MCFG_SCREEN_UPDATE_DRIVER(goindol_state, screen_update_goindol)
MCFG_GFXDECODE(goindol)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c
index 7d8c1c4c041..d8edff9974e 100644
--- a/src/mame/drivers/goldngam.c
+++ b/src/mame/drivers/goldngam.c
@@ -248,6 +248,7 @@ public:
DECLARE_READ16_MEMBER(unk_r);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_goldngam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -260,14 +261,13 @@ void goldngam_state::video_start()
}
-static SCREEN_UPDATE_IND16( goldngam )
+UINT32 goldngam_state::screen_update_goldngam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- goldngam_state *state = screen.machine().driver_data<goldngam_state>();
int x, y;
// ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
- UINT8 *tmp = reinterpret_cast<UINT8 *>(state->m_videoram.target());
+ UINT8 *tmp = reinterpret_cast<UINT8 *>(m_videoram.target());
int index = 0;
for(y = 0; y < 512; ++y)
@@ -568,7 +568,7 @@ static MACHINE_CONFIG_START( swisspkr, goldngam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 43*8-1, 1*8, 37*8-1) // 312x288
- MCFG_SCREEN_UPDATE_STATIC(goldngam)
+ MCFG_SCREEN_UPDATE_DRIVER(goldngam_state, screen_update_goldngam)
MCFG_GFXDECODE(goldngam)
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 660119a410c..3273f937740 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -1004,6 +1004,7 @@ public:
DECLARE_PALETTE_INIT(witchcrd);
DECLARE_VIDEO_START(wcrdxtnd);
DECLARE_PALETTE_INIT(wcrdxtnd);
+ UINT32 screen_update_goldnpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -1070,10 +1071,9 @@ VIDEO_START_MEMBER(goldnpkr_state,wcrdxtnd)
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(goldnpkr_state::wcrdxtnd_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( goldnpkr )
+UINT32 goldnpkr_state::screen_update_goldnpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- goldnpkr_state *state = screen.machine().driver_data<goldnpkr_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -3587,7 +3587,7 @@ static MACHINE_CONFIG_START( goldnpkr_base, goldnpkr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8) /* From MC6845 init, registers 00 & 04 (programmed with value-1). */
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 29*8-1) /* From MC6845 init, registers 01 & 06. */
- MCFG_SCREEN_UPDATE_STATIC(goldnpkr)
+ MCFG_SCREEN_UPDATE_DRIVER(goldnpkr_state, screen_update_goldnpkr)
MCFG_MC6845_ADD("crtc", MC6845, CPU_CLOCK, mc6845_intf) /* 68B45 or 6845s @ CPU clock */
diff --git a/src/mame/drivers/goldstar.c b/src/mame/drivers/goldstar.c
index 89e01b4cf49..4fbdb1b23c5 100644
--- a/src/mame/drivers/goldstar.c
+++ b/src/mame/drivers/goldstar.c
@@ -5865,7 +5865,7 @@ static MACHINE_CONFIG_START( goldstar, goldstar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(goldstar)
MCFG_PALETTE_LENGTH(256)
@@ -5899,7 +5899,7 @@ static MACHINE_CONFIG_START( goldstbl, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(bl)
MCFG_PALETTE_LENGTH(256)
@@ -5932,7 +5932,7 @@ static MACHINE_CONFIG_START( moonlght, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(ml)
MCFG_PALETTE_LENGTH(256)
@@ -6031,7 +6031,7 @@ static MACHINE_CONFIG_START( chrygld, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(chry10)
MCFG_PALETTE_LENGTH(256)
@@ -6073,7 +6073,7 @@ static MACHINE_CONFIG_START( cb3c, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(cb3c)
MCFG_PALETTE_LENGTH(256)
@@ -6114,7 +6114,7 @@ static MACHINE_CONFIG_START( ncb3, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6155,7 +6155,7 @@ static MACHINE_CONFIG_START( cm, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(cmbitmap)
MCFG_PALETTE_LENGTH(256)
@@ -6195,7 +6195,7 @@ static MACHINE_CONFIG_START( cmnobmp, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6230,7 +6230,7 @@ static MACHINE_CONFIG_START( cmast91, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cmast91)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_cmast91)
MCFG_GFXDECODE(cmast91)
MCFG_PALETTE_LENGTH(256)
@@ -6274,7 +6274,7 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6314,7 +6314,7 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
- MCFG_SCREEN_UPDATE_STATIC(bingowng)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6354,7 +6354,7 @@ static MACHINE_CONFIG_START( bingownga, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
- MCFG_SCREEN_UPDATE_STATIC(bingowng)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_GFXDECODE(bingownga) /* GFX Decode is the only difference with the parent machine */
MCFG_PALETTE_LENGTH(256)
@@ -6410,7 +6410,7 @@ static MACHINE_CONFIG_START( magodds, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(magical)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_magical)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,magodds)
MCFG_GFXDECODE(magodds)
@@ -6452,7 +6452,7 @@ static MACHINE_CONFIG_START( kkotnoli, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6488,7 +6488,7 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6529,7 +6529,7 @@ static MACHINE_CONFIG_START( wcat3, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6571,7 +6571,7 @@ static MACHINE_CONFIG_START( amcoe1, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6610,7 +6610,7 @@ static MACHINE_CONFIG_START( amcoe1a, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(amcoe1a)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_amcoe1a)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6649,7 +6649,7 @@ static MACHINE_CONFIG_START( amcoe2, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6683,7 +6683,7 @@ static MACHINE_CONFIG_START( nfm, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(nfm)
MCFG_PALETTE_LENGTH(256)
@@ -6714,7 +6714,7 @@ static MACHINE_CONFIG_START( unkch, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(unkch)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_unkch)
MCFG_GFXDECODE(unkch)
MCFG_PALETTE_LENGTH(512)
@@ -6762,7 +6762,7 @@ static MACHINE_CONFIG_START( pkrmast, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(goldstar)
+ MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE(pkrmast)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/gomoku.c b/src/mame/drivers/gomoku.c
index 06dd3fe148a..3e71131b95a 100644
--- a/src/mame/drivers/gomoku.c
+++ b/src/mame/drivers/gomoku.c
@@ -129,7 +129,7 @@ static MACHINE_CONFIG_START( gomoku, gomoku_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(gomoku)
+ MCFG_SCREEN_UPDATE_DRIVER(gomoku_state, screen_update_gomoku)
MCFG_GFXDECODE(gomoku)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/good.c b/src/mame/drivers/good.c
index b82548d2b27..3f2280b1de2 100644
--- a/src/mame/drivers/good.c
+++ b/src/mame/drivers/good.c
@@ -57,6 +57,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
+ UINT32 screen_update_good(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -95,11 +96,10 @@ void good_state::video_start()
m_fg_tilemap->set_transparent_pen(0xf);
}
-static SCREEN_UPDATE_IND16( good )
+UINT32 good_state::screen_update_good(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- good_state *state = screen.machine().driver_data<good_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( good, good_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 23*16-1, 0*16, 14*16-1)
- MCFG_SCREEN_UPDATE_STATIC(good)
+ MCFG_SCREEN_UPDATE_DRIVER(good_state, screen_update_good)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/gotcha.c b/src/mame/drivers/gotcha.c
index 9cf864b9987..054893a57e2 100644
--- a/src/mame/drivers/gotcha.c
+++ b/src/mame/drivers/gotcha.c
@@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gotcha)
+ MCFG_SCREEN_UPDATE_DRIVER(gotcha_state, screen_update_gotcha)
MCFG_GFXDECODE(gotcha)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c
index a5c9fbae0d2..942f5d81831 100644
--- a/src/mame/drivers/gottlieb.c
+++ b/src/mame/drivers/gottlieb.c
@@ -1719,7 +1719,7 @@ static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
- MCFG_SCREEN_UPDATE_STATIC(gottlieb)
+ MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
MCFG_GFXDECODE(gfxdecode)
MCFG_PALETTE_LENGTH(16)
@@ -1748,7 +1748,7 @@ static MACHINE_CONFIG_DERIVED( g2laser, gottlieb_core )
MCFG_LASERDISC_PR8210_ADD("laserdisc")
MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(laserdisc_audio_process), device))
- MCFG_LASERDISC_OVERLAY_STATIC(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb)
+ MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb)
MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
MCFG_SOUND_ROUTE(0, "mono", 1.0)
/* right channel is processed as data */
@@ -1829,7 +1829,7 @@ static MACHINE_CONFIG_DERIVED( cobram3, gottlieb_core )
MCFG_LASERDISC_PR8210_ADD("laserdisc")
MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(laserdisc_audio_process), device))
- MCFG_LASERDISC_OVERLAY_STATIC(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb)
+ MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb)
MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
MCFG_SOUND_ROUTE(0, "mono", 1.0)
/* right channel is processed as data */
diff --git a/src/mame/drivers/gotya.c b/src/mame/drivers/gotya.c
index aeba686389f..fdcfaf2f869 100644
--- a/src/mame/drivers/gotya.c
+++ b/src/mame/drivers/gotya.c
@@ -204,7 +204,7 @@ static MACHINE_CONFIG_START( gotya, gotya_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gotya)
+ MCFG_SCREEN_UPDATE_DRIVER(gotya_state, screen_update_gotya)
MCFG_GFXDECODE(gotya)
MCFG_PALETTE_LENGTH(16*4)
diff --git a/src/mame/drivers/gpworld.c b/src/mame/drivers/gpworld.c
index bff4fc68c52..1603b2eef0a 100644
--- a/src/mame/drivers/gpworld.c
+++ b/src/mame/drivers/gpworld.c
@@ -71,6 +71,7 @@ public:
DECLARE_WRITE8_MEMBER(palette_write);
DECLARE_DRIVER_INIT(gpworld);
virtual void machine_start();
+ UINT32 screen_update_gpworld(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -223,7 +224,7 @@ static void gpworld_draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap,
}
-static SCREEN_UPDATE_RGB32( gpworld )
+UINT32 gpworld_state::screen_update_gpworld(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -470,7 +471,7 @@ static MACHINE_CONFIG_START( gpworld, gpworld_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(512, 256, gpworld)
+ MCFG_LASERDISC_OVERLAY_DRIVER(512, 256, gpworld_state, screen_update_gpworld)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/gradius3.c b/src/mame/drivers/gradius3.c
index 3e6180540cd..61d8e5a641d 100644
--- a/src/mame/drivers/gradius3.c
+++ b/src/mame/drivers/gradius3.c
@@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(gradius3)
+ MCFG_SCREEN_UPDATE_DRIVER(gradius3_state, screen_update_gradius3)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/grchamp.c b/src/mame/drivers/grchamp.c
index f63cde578fa..f4b672db7ab 100644
--- a/src/mame/drivers/grchamp.c
+++ b/src/mame/drivers/grchamp.c
@@ -693,7 +693,7 @@ static MACHINE_CONFIG_START( grchamp, grchamp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(grchamp)
+ MCFG_SCREEN_UPDATE_DRIVER(grchamp_state, screen_update_grchamp)
/* sound hardware */
diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c
index 92ed64372b2..ac9116ed1eb 100644
--- a/src/mame/drivers/gridlee.c
+++ b/src/mame/drivers/gridlee.c
@@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( gridlee, gridlee_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(GRIDLEE_PIXEL_CLOCK, GRIDLEE_HTOTAL, GRIDLEE_HBEND, GRIDLEE_HBSTART, GRIDLEE_VTOTAL, GRIDLEE_VBEND, GRIDLEE_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(gridlee)
+ MCFG_SCREEN_UPDATE_DRIVER(gridlee_state, screen_update_gridlee)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c
index 3c997649dfc..45046dd2bdf 100644
--- a/src/mame/drivers/groundfx.c
+++ b/src/mame/drivers/groundfx.c
@@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(groundfx)
+ MCFG_SCREEN_UPDATE_DRIVER(groundfx_state, screen_update_groundfx)
MCFG_GFXDECODE(groundfx)
MCFG_PALETTE_LENGTH(16384)
diff --git a/src/mame/drivers/gstream.c b/src/mame/drivers/gstream.c
index 56c3fa60f2a..cb6bc28e2cb 100644
--- a/src/mame/drivers/gstream.c
+++ b/src/mame/drivers/gstream.c
@@ -183,6 +183,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_gstream(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -480,7 +481,7 @@ void gstream_state::video_start()
m_tilemap2->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(gstream)
+UINT32 gstream_state::screen_update_gstream(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* The tilemaps and sprite are interleaved together.
Even Words are tilemap tiles
@@ -496,31 +497,30 @@ static SCREEN_UPDATE_IND16(gstream)
are being set ?!
*/
- gstream_state *state = screen.machine().driver_data<gstream_state>();
int i;
- //popmessage("(1) %08x %08x (2) %08x %08x (3) %08x %08x", state->m_tmap1_scrollx, state->m_tmap1_scrolly, state->m_tmap2_scrollx, state->m_tmap2_scrolly, state->m_tmap3_scrollx, state->m_tmap3_scrolly );
+ //popmessage("(1) %08x %08x (2) %08x %08x (3) %08x %08x", m_tmap1_scrollx, m_tmap1_scrolly, m_tmap2_scrollx, m_tmap2_scrolly, m_tmap3_scrollx, m_tmap3_scrolly );
- state->m_tilemap3->set_scrollx(0, state->m_tmap3_scrollx >> 16);
- state->m_tilemap3->set_scrolly(0, state->m_tmap3_scrolly >> 16);
+ m_tilemap3->set_scrollx(0, m_tmap3_scrollx >> 16);
+ m_tilemap3->set_scrolly(0, m_tmap3_scrolly >> 16);
- state->m_tilemap1->set_scrollx(0, state->m_tmap1_scrollx >> 16);
- state->m_tilemap1->set_scrolly(0, state->m_tmap1_scrolly >> 16);
+ m_tilemap1->set_scrollx(0, m_tmap1_scrollx >> 16);
+ m_tilemap1->set_scrolly(0, m_tmap1_scrolly >> 16);
- state->m_tilemap2->set_scrollx(0, state->m_tmap2_scrollx >> 16);
- state->m_tilemap2->set_scrolly(0, state->m_tmap2_scrolly >> 16);
+ m_tilemap2->set_scrollx(0, m_tmap2_scrollx >> 16);
+ m_tilemap2->set_scrolly(0, m_tmap2_scrolly >> 16);
- state->m_tilemap3->draw(bitmap, cliprect, 0, 0);
- state->m_tilemap2->draw(bitmap, cliprect, 0, 0);
- state->m_tilemap1->draw(bitmap, cliprect, 0, 0);
+ m_tilemap3->draw(bitmap, cliprect, 0, 0);
+ m_tilemap2->draw(bitmap, cliprect, 0, 0);
+ m_tilemap1->draw(bitmap, cliprect, 0, 0);
for (i = 0x0000 / 4; i < 0x4000 / 4; i += 4)
{
/* Upper bits are used by the tilemaps */
- int code = state->m_vram[i + 0] & 0xffff;
- int x = state->m_vram[i + 1] & 0xffff;
- int y = state->m_vram[i + 2] & 0xffff;
- int col = state->m_vram[i + 3] & 0x1f;
+ int code = m_vram[i + 0] & 0xffff;
+ int x = m_vram[i + 1] & 0xffff;
+ int y = m_vram[i + 2] & 0xffff;
+ int col = m_vram[i + 3] & 0x1f;
/* co-ordinates are signed */
if (x & 0x8000) x -= 0x10000;
@@ -576,7 +576,7 @@ static MACHINE_CONFIG_START( gstream, gstream_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(gstream)
+ MCFG_SCREEN_UPDATE_DRIVER(gstream_state, screen_update_gstream)
MCFG_PALETTE_LENGTH(0x1000 + 0x400 + 0x400 + 0x400) // sprites + 3 bg layers
MCFG_GFXDECODE(gstream)
diff --git a/src/mame/drivers/gstriker.c b/src/mame/drivers/gstriker.c
index 27156a429fd..745111bd3ac 100644
--- a/src/mame/drivers/gstriker.c
+++ b/src/mame/drivers/gstriker.c
@@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* hand-tuned, it needs a bit */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gstriker)
+ MCFG_SCREEN_UPDATE_DRIVER(gstriker_state, screen_update_gstriker)
MCFG_GFXDECODE(gstriker)
MCFG_PALETTE_LENGTH(0x800)
@@ -593,7 +593,7 @@ static MACHINE_CONFIG_START( vgoal, gstriker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* hand-tuned, it needs a bit */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gstriker)
+ MCFG_SCREEN_UPDATE_DRIVER(gstriker_state, screen_update_gstriker)
MCFG_GFXDECODE(gstriker)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c
index 6aa47103f60..4552dcaa7bf 100644
--- a/src/mame/drivers/gsword.c
+++ b/src/mame/drivers/gsword.c
@@ -686,7 +686,7 @@ static MACHINE_CONFIG_START( gsword, gsword_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gsword)
+ MCFG_SCREEN_UPDATE_DRIVER(gsword_state, screen_update_gsword)
MCFG_GFXDECODE(gsword)
MCFG_PALETTE_LENGTH(64*4+64*4)
@@ -729,7 +729,7 @@ static MACHINE_CONFIG_START( josvolly, gsword_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gsword)
+ MCFG_SCREEN_UPDATE_DRIVER(gsword_state, screen_update_gsword)
MCFG_GFXDECODE(gsword)
MCFG_PALETTE_LENGTH(64*4+64*4)
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index 8471ab4a51c..224f6b753ed 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -98,6 +98,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_guab(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -258,7 +259,7 @@ void guab_state::video_start()
}
-static SCREEN_UPDATE_IND16( guab )
+UINT32 guab_state::screen_update_guab(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x, y;
struct tms34061_display state;
@@ -824,7 +825,7 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(guab)
+ MCFG_SCREEN_UPDATE_DRIVER(guab_state, screen_update_guab)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/gumbo.c b/src/mame/drivers/gumbo.c
index c6fed404be9..8029f277444 100644
--- a/src/mame/drivers/gumbo.c
+++ b/src/mame/drivers/gumbo.c
@@ -240,7 +240,7 @@ static MACHINE_CONFIG_START( gumbo, gumbo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gumbo)
+ MCFG_SCREEN_UPDATE_DRIVER(gumbo_state, screen_update_gumbo)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c
index b90ebcff0d8..d87e9ee07d5 100644
--- a/src/mame/drivers/gunbustr.c
+++ b/src/mame/drivers/gunbustr.c
@@ -315,7 +315,7 @@ static MACHINE_CONFIG_START( gunbustr, gunbustr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gunbustr)
+ MCFG_SCREEN_UPDATE_DRIVER(gunbustr_state, screen_update_gunbustr)
MCFG_GFXDECODE(gunbustr)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/gundealr.c b/src/mame/drivers/gundealr.c
index 760554e6be9..b5042efbf00 100644
--- a/src/mame/drivers/gundealr.c
+++ b/src/mame/drivers/gundealr.c
@@ -419,7 +419,7 @@ static MACHINE_CONFIG_START( gundealr, gundealr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gundealr)
+ MCFG_SCREEN_UPDATE_DRIVER(gundealr_state, screen_update_gundealr)
MCFG_GFXDECODE(gundealr)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/gunpey.c b/src/mame/drivers/gunpey.c
index 51ba42a9e88..5b75f37fdf9 100644
--- a/src/mame/drivers/gunpey.c
+++ b/src/mame/drivers/gunpey.c
@@ -94,6 +94,7 @@ public:
DECLARE_DRIVER_INIT(gunpey);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_gunpey(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -102,10 +103,9 @@ void gunpey_state::video_start()
m_blit_buffer = auto_alloc_array(machine(), UINT16, 512*512);
}
-static SCREEN_UPDATE_RGB32( gunpey )
+UINT32 gunpey_state::screen_update_gunpey(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- gunpey_state *state = screen.machine().driver_data<gunpey_state>();
- UINT16 *blit_buffer = state->m_blit_buffer;
+ UINT16 *blit_buffer = m_blit_buffer;
int x,y;
int count;
@@ -375,7 +375,7 @@ static MACHINE_CONFIG_START( gunpey, gunpey_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE_STATIC(gunpey)
+ MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update_gunpey)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/gunsmoke.c b/src/mame/drivers/gunsmoke.c
index 241d3ac3854..9f5ebe4b74c 100644
--- a/src/mame/drivers/gunsmoke.c
+++ b/src/mame/drivers/gunsmoke.c
@@ -314,7 +314,7 @@ static MACHINE_CONFIG_START( gunsmoke, gunsmoke_state )
MCFG_GFXDECODE(gunsmoke)
MCFG_PALETTE_LENGTH(32*4+16*16+16*16)
- MCFG_SCREEN_UPDATE_STATIC(gunsmoke)
+ MCFG_SCREEN_UPDATE_DRIVER(gunsmoke_state, screen_update_gunsmoke)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gyruss.c b/src/mame/drivers/gyruss.c
index 89bb0d6df9f..4ba46a28843 100644
--- a/src/mame/drivers/gyruss.c
+++ b/src/mame/drivers/gyruss.c
@@ -537,7 +537,7 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(gyruss)
+ MCFG_SCREEN_UPDATE_DRIVER(gyruss_state, screen_update_gyruss)
MCFG_GFXDECODE(gyruss)
MCFG_PALETTE_LENGTH(16*4+16*16)
diff --git a/src/mame/drivers/halleys.c b/src/mame/drivers/halleys.c
index 41789bfefff..3f5ee2466c8 100644
--- a/src/mame/drivers/halleys.c
+++ b/src/mame/drivers/halleys.c
@@ -264,6 +264,8 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_halleys(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_benberob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -1479,45 +1481,43 @@ static void filter_bitmap(running_machine &machine, bitmap_ind16 &bitmap, int ma
}
-static SCREEN_UPDATE_IND16( halleys )
+UINT32 halleys_state::screen_update_halleys(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- halleys_state *state = screen.machine().driver_data<halleys_state>();
int i, j;
- if (state->m_stars_enabled)
+ if (m_stars_enabled)
{
- copy_scroll_op(bitmap, state->m_render_layer[5], *state->m_scrollx0, *state->m_scrolly0);
- copy_scroll_xp(bitmap, state->m_render_layer[4], *state->m_scrollx1, *state->m_scrolly1);
+ copy_scroll_op(bitmap, m_render_layer[5], *m_scrollx0, *m_scrolly0);
+ copy_scroll_xp(bitmap, m_render_layer[4], *m_scrollx1, *m_scrolly1);
}
else
- bitmap.fill(state->m_bgcolor, cliprect);
+ bitmap.fill(m_bgcolor, cliprect);
#ifdef MAME_DEBUG
- if (screen.machine().root_device().ioport("DEBUG")->read()) copy_scroll_xp(bitmap, state->m_render_layer[3], *state->m_scrollx0, *state->m_scrolly0); // not used???
+ if (screen.machine().root_device().ioport("DEBUG")->read()) copy_scroll_xp(bitmap, m_render_layer[3], *m_scrollx0, *m_scrolly0); // not used???
#endif
- copy_scroll_xp(bitmap, state->m_render_layer[2], *state->m_scrollx1, *state->m_scrolly1);
- copy_fixed_2b (bitmap, state->m_render_layer[1]);
- copy_fixed_xp (bitmap, state->m_render_layer[0]);
+ copy_scroll_xp(bitmap, m_render_layer[2], *m_scrollx1, *m_scrolly1);
+ copy_fixed_2b (bitmap, m_render_layer[1]);
+ copy_fixed_xp (bitmap, m_render_layer[0]);
// HALF-HACK: apply RGB filter when the following conditions are met
- i = state->m_io_ram[0xa0];
- j = state->m_io_ram[0xa1];
- if (state->m_io_ram[0x2b] && (i>0xc6 && i<0xfe) && (j==0xc0 || j==0xed)) filter_bitmap(screen.machine(), bitmap, i);
+ i = m_io_ram[0xa0];
+ j = m_io_ram[0xa1];
+ if (m_io_ram[0x2b] && (i>0xc6 && i<0xfe) && (j==0xc0 || j==0xed)) filter_bitmap(screen.machine(), bitmap, i);
return 0;
}
-static SCREEN_UPDATE_IND16( benberob )
+UINT32 halleys_state::screen_update_benberob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- halleys_state *state = screen.machine().driver_data<halleys_state>();
- if (state->m_io_ram[0xa0] & 0x80)
- copy_scroll_op(bitmap, state->m_render_layer[2], *state->m_scrollx1, *state->m_scrolly1);
+ if (m_io_ram[0xa0] & 0x80)
+ copy_scroll_op(bitmap, m_render_layer[2], *m_scrollx1, *m_scrolly1);
else
- bitmap.fill(state->m_bgcolor, cliprect);
+ bitmap.fill(m_bgcolor, cliprect);
- copy_fixed_xp (bitmap, state->m_render_layer[1]);
- copy_fixed_xp (bitmap, state->m_render_layer[0]);
+ copy_fixed_xp (bitmap, m_render_layer[1]);
+ copy_fixed_xp (bitmap, m_render_layer[0]);
return 0;
}
@@ -1973,7 +1973,7 @@ static MACHINE_CONFIG_START( halleys, halleys_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(VIS_MINX, VIS_MAXX, VIS_MINY, VIS_MAXY)
- MCFG_SCREEN_UPDATE_STATIC(halleys)
+ MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_halleys)
MCFG_PALETTE_LENGTH(PALETTE_SIZE)
@@ -2003,7 +2003,7 @@ static MACHINE_CONFIG_DERIVED( benberob, halleys )
MCFG_TIMER_CALLBACK(benberob_scanline)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(benberob)
+ MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_benberob)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hanaawas.c b/src/mame/drivers/hanaawas.c
index 75646bab95b..3fd20b34a8a 100644
--- a/src/mame/drivers/hanaawas.c
+++ b/src/mame/drivers/hanaawas.c
@@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( hanaawas, hanaawas_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hanaawas)
+ MCFG_SCREEN_UPDATE_DRIVER(hanaawas_state, screen_update_hanaawas)
MCFG_GFXDECODE(hanaawas)
MCFG_PALETTE_LENGTH(32*8)
diff --git a/src/mame/drivers/hcastle.c b/src/mame/drivers/hcastle.c
index 6d5ae01a0ad..4bff70ca392 100644
--- a/src/mame/drivers/hcastle.c
+++ b/src/mame/drivers/hcastle.c
@@ -224,7 +224,7 @@ static MACHINE_CONFIG_START( hcastle, hcastle_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second verified by comparison with real board */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hcastle)
+ MCFG_SCREEN_UPDATE_DRIVER(hcastle_state, screen_update_hcastle)
MCFG_GFXDECODE(hcastle)
MCFG_PALETTE_LENGTH(2*8*16*16)
diff --git a/src/mame/drivers/hexion.c b/src/mame/drivers/hexion.c
index 68a9ed92a10..0d267f614b4 100644
--- a/src/mame/drivers/hexion.c
+++ b/src/mame/drivers/hexion.c
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( hexion, hexion_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hexion)
+ MCFG_SCREEN_UPDATE_DRIVER(hexion_state, screen_update_hexion)
MCFG_GFXDECODE(hexion)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/higemaru.c b/src/mame/drivers/higemaru.c
index 5a6402102b0..ac45f1412eb 100644
--- a/src/mame/drivers/higemaru.c
+++ b/src/mame/drivers/higemaru.c
@@ -170,7 +170,7 @@ static MACHINE_CONFIG_START( higemaru, higemaru_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(higemaru)
+ MCFG_SCREEN_UPDATE_DRIVER(higemaru_state, screen_update_higemaru)
MCFG_GFXDECODE(higemaru)
MCFG_PALETTE_LENGTH(32*4+16*16)
diff --git a/src/mame/drivers/highvdeo.c b/src/mame/drivers/highvdeo.c
index 5cd7d0cf8e7..b18c728ea8d 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -125,6 +125,8 @@ public:
DECLARE_DRIVER_INIT(fashion);
DECLARE_DRIVER_INIT(ciclone);
DECLARE_VIDEO_START(tourvisn);
+ UINT32 screen_update_tourvisn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_brasil(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -135,9 +137,8 @@ VIDEO_START_MEMBER(highvdeo_state,tourvisn)
}
-static SCREEN_UPDATE_RGB32(tourvisn)
+UINT32 highvdeo_state::screen_update_tourvisn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- highvdeo_state *state = screen.machine().driver_data<highvdeo_state>();
int x,y,count;
count = (0/2);
@@ -148,12 +149,12 @@ static SCREEN_UPDATE_RGB32(tourvisn)
{
UINT32 color;
- color = ((state->m_blit_ram[count]) & 0x00ff)>>0;
+ color = ((m_blit_ram[count]) & 0x00ff)>>0;
if(cliprect.contains((x*2)+0, y))
bitmap.pix32(y, (x*2)+0) = screen.machine().pens[color];
- color = ((state->m_blit_ram[count]) & 0xff00)>>8;
+ color = ((m_blit_ram[count]) & 0xff00)>>8;
if(cliprect.contains((x*2)+1, y))
bitmap.pix32(y, (x*2)+1) = screen.machine().pens[color];
@@ -166,9 +167,8 @@ static SCREEN_UPDATE_RGB32(tourvisn)
}
/*Later HW, RGB565 instead of RAM-based pens (+ ramdac).*/
-static SCREEN_UPDATE_RGB32(brasil)
+UINT32 highvdeo_state::screen_update_brasil(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- highvdeo_state *state = screen.machine().driver_data<highvdeo_state>();
int x,y,count;
count = (0/2);
@@ -182,7 +182,7 @@ static SCREEN_UPDATE_RGB32(brasil)
UINT32 g;
UINT32 r;
- color = (state->m_blit_ram[count]) & 0xffff;
+ color = (m_blit_ram[count]) & 0xffff;
b = (color & 0x001f) << 3;
g = (color & 0x07e0) >> 3;
@@ -938,7 +938,7 @@ static MACHINE_CONFIG_START( tv_vcf, highvdeo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(tourvisn)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_tourvisn)
MCFG_PALETTE_LENGTH(0x100)
@@ -1004,7 +1004,7 @@ static MACHINE_CONFIG_START( brasil, highvdeo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
- MCFG_SCREEN_UPDATE_STATIC(brasil)
+ MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/hikaru.c b/src/mame/drivers/hikaru.c
index ed7121ded5d..e39240d6afd 100644
--- a/src/mame/drivers/hikaru.c
+++ b/src/mame/drivers/hikaru.c
@@ -394,6 +394,7 @@ public:
: driver_device(mconfig, type, tag)
{ }
virtual void video_start();
+ UINT32 screen_update_hikaru(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
void hikaru_state::video_start()
@@ -401,7 +402,7 @@ void hikaru_state::video_start()
}
-static SCREEN_UPDATE_RGB32(hikaru)
+UINT32 hikaru_state::screen_update_hikaru(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -500,7 +501,7 @@ static MACHINE_CONFIG_START( hikaru, hikaru_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_STATIC(hikaru)
+ MCFG_SCREEN_UPDATE_DRIVER(hikaru_state, screen_update_hikaru)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/himesiki.c b/src/mame/drivers/himesiki.c
index 1151536f79c..d162b50d451 100644
--- a/src/mame/drivers/himesiki.c
+++ b/src/mame/drivers/himesiki.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( himesiki, himesiki_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(himesiki)
+ MCFG_SCREEN_UPDATE_DRIVER(himesiki_state, screen_update_himesiki)
MCFG_GFXDECODE(himesiki)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c
index 05afa1f7f1b..f9873c740d5 100644
--- a/src/mame/drivers/hitme.c
+++ b/src/mame/drivers/hitme.c
@@ -65,9 +65,8 @@ VIDEO_START_MEMBER(hitme_state,barricad)
}
-static SCREEN_UPDATE_IND16( hitme )
+UINT32 hitme_state::screen_update_hitme(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- hitme_state *state = screen.machine().driver_data<hitme_state>();
/* the card width resistor comes from an input port, scaled to the range 0-25 kOhms */
double width_resist = screen.machine().root_device().ioport("WIDTH")->read() * 25000 / 100;
/* this triggers a oneshot for the following length of time */
@@ -80,7 +79,7 @@ static SCREEN_UPDATE_IND16( hitme )
offs_t offs = 0;
/* start by drawing the tilemap */
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
/* now loop over and invert anything */
for (y = 0; y < 19; y++)
@@ -89,7 +88,7 @@ static SCREEN_UPDATE_IND16( hitme )
for (inv = x = 0; x < 40; x++, offs++)
{
/* if the high bit is set, reset the oneshot */
- if (state->m_videoram[y * 40 + x] & 0x80)
+ if (m_videoram[y * 40 + x] & 0x80)
inv = width_pixels;
/* invert pixels until we run out */
@@ -113,10 +112,9 @@ static SCREEN_UPDATE_IND16( hitme )
}
-static SCREEN_UPDATE_IND16( barricad )
+UINT32 hitme_state::screen_update_barricad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- hitme_state *state = screen.machine().driver_data<hitme_state>();
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -326,7 +324,7 @@ static MACHINE_CONFIG_START( hitme, hitme_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 19*10)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 19*10-1)
- MCFG_SCREEN_UPDATE_STATIC(hitme)
+ MCFG_SCREEN_UPDATE_DRIVER(hitme_state, screen_update_hitme)
MCFG_GFXDECODE(hitme)
MCFG_PALETTE_LENGTH(2)
@@ -355,7 +353,7 @@ static MACHINE_CONFIG_DERIVED( barricad, hitme )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(32*8, 24*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(barricad)
+ MCFG_SCREEN_UPDATE_DRIVER(hitme_state, screen_update_barricad)
MCFG_GFXDECODE(barricad)
diff --git a/src/mame/drivers/hitpoker.c b/src/mame/drivers/hitpoker.c
index 37f43670589..9aadb4c5555 100644
--- a/src/mame/drivers/hitpoker.c
+++ b/src/mame/drivers/hitpoker.c
@@ -81,6 +81,7 @@ public:
DECLARE_READ8_MEMBER(test_r);
DECLARE_DRIVER_INIT(hitpoker);
virtual void video_start();
+ UINT32 screen_update_hitpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -93,9 +94,8 @@ void hitpoker_state::video_start()
m_colorram = auto_alloc_array(machine(), UINT8, 0x2000);
}
-static SCREEN_UPDATE_IND16(hitpoker)
+UINT32 hitpoker_state::screen_update_hitpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- hitpoker_state *state = screen.machine().driver_data<hitpoker_state>();
int count = 0;
int y,x;
@@ -107,9 +107,9 @@ static SCREEN_UPDATE_IND16(hitpoker)
{
int tile,color,gfx_bpp;
- tile = (((state->m_videoram[count]<<8)|(state->m_videoram[count+1])) & 0x3fff);
- gfx_bpp = (state->m_colorram[count] & 0x80)>>7; //flag between 4 and 8 bpp
- color = gfx_bpp ? ((state->m_colorram[count] & 0x70)>>4) : (state->m_colorram[count] & 0xf);
+ tile = (((m_videoram[count]<<8)|(m_videoram[count+1])) & 0x3fff);
+ gfx_bpp = (m_colorram[count] & 0x80)>>7; //flag between 4 and 8 bpp
+ color = gfx_bpp ? ((m_colorram[count] & 0x70)>>4) : (m_colorram[count] & 0xf);
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[gfx_bpp],tile,color,0,0,x*8,y*8);
@@ -505,7 +505,7 @@ static MACHINE_CONFIG_START( hitpoker, hitpoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
MCFG_SCREEN_SIZE(648, 480) //setted by the CRTC
MCFG_SCREEN_VISIBLE_AREA(0, 648-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(hitpoker)
+ MCFG_SCREEN_UPDATE_DRIVER(hitpoker_state, screen_update_hitpoker)
MCFG_MC6845_ADD("crtc", H46505, CRTC_CLOCK/2, mc6845_intf) /* hand tuned to get ~60 fps */
diff --git a/src/mame/drivers/hnayayoi.c b/src/mame/drivers/hnayayoi.c
index b85d0a85bf0..0ec82a3e174 100644
--- a/src/mame/drivers/hnayayoi.c
+++ b/src/mame/drivers/hnayayoi.c
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(hnayayoi)
+ MCFG_SCREEN_UPDATE_DRIVER(hnayayoi_state, screen_update_hnayayoi)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 558b3297c30..35cb805c3a4 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -1849,11 +1849,11 @@ static MACHINE_CONFIG_START( hng64, hng64_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(hng64)
+ MCFG_SCREEN_UPDATE_DRIVER(hng64_state, screen_update_hng64)
MCFG_PALETTE_LENGTH(0x1000)
- MCFG_SCREEN_VBLANK_STATIC(hng64)
+ MCFG_SCREEN_VBLANK_DRIVER(hng64_state, screen_eof_hng64)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/holeland.c b/src/mame/drivers/holeland.c
index 417c9539dd7..e78d3d98dad 100644
--- a/src/mame/drivers/holeland.c
+++ b/src/mame/drivers/holeland.c
@@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( holeland, holeland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(holeland)
+ MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_holeland)
MCFG_GFXDECODE(holeland)
MCFG_PALETTE_LENGTH(256)
@@ -358,7 +358,7 @@ static MACHINE_CONFIG_START( crzrally, holeland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(crzrally)
+ MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_crzrally)
MCFG_GFXDECODE(crzrally)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c
index eeb0c492420..5e937c69dd3 100644
--- a/src/mame/drivers/homedata.c
+++ b/src/mame/drivers/homedata.c
@@ -1262,8 +1262,8 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
// visible area can be changed at runtime
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mrokumei)
- MCFG_SCREEN_VBLANK_STATIC(homedata)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mrokumei)
+ MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE(mrokumei)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1331,8 +1331,8 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(reikaids)
- MCFG_SCREEN_VBLANK_STATIC(homedata)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_reikaids)
+ MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE(reikaids)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1382,8 +1382,8 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
// visible area can be changed at runtime
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pteacher)
- MCFG_SCREEN_VBLANK_STATIC(homedata)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_pteacher)
+ MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE(pteacher)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1546,7 +1546,7 @@ static MACHINE_CONFIG_START( mirderby, homedata_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mirderby)
+ MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mirderby)
MCFG_GFXDECODE(mirderby)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/homerun.c b/src/mame/drivers/homerun.c
index 2d4b2494700..e6f079e50d6 100644
--- a/src/mame/drivers/homerun.c
+++ b/src/mame/drivers/homerun.c
@@ -397,7 +397,7 @@ static MACHINE_CONFIG_START( dynashot, homerun_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(homerun)
+ MCFG_SCREEN_UPDATE_DRIVER(homerun_state, screen_update_homerun)
MCFG_GFXDECODE(homerun)
MCFG_PALETTE_LENGTH(16*4)
diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c
index 2cde6e9a97e..e14628617f3 100644
--- a/src/mame/drivers/hornet.c
+++ b/src/mame/drivers/hornet.c
@@ -369,6 +369,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
DECLARE_MACHINE_RESET(hornet_2board);
+ UINT32 screen_update_hornet(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_hornet_2board(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -420,9 +422,8 @@ static void voodoo_vblank_1(device_t *device, int param)
{
}
-static SCREEN_UPDATE_RGB32( hornet )
+UINT32 hornet_state::screen_update_hornet(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- hornet_state *state = screen.machine().driver_data<hornet_state>();
device_t *voodoo = screen.machine().device("voodoo0");
device_t *k037122 = screen.machine().device("k037122_1");
@@ -430,14 +431,13 @@ static SCREEN_UPDATE_RGB32( hornet )
k037122_tile_draw(k037122, bitmap, cliprect);
- draw_7segment_led(bitmap, 3, 3, state->m_led_reg0);
- draw_7segment_led(bitmap, 9, 3, state->m_led_reg1);
+ draw_7segment_led(bitmap, 3, 3, m_led_reg0);
+ draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
-static SCREEN_UPDATE_RGB32( hornet_2board )
+UINT32 hornet_state::screen_update_hornet_2board(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- hornet_state *state = screen.machine().driver_data<hornet_state>();
if (strcmp(screen.tag(), ":lscreen") == 0)
{
device_t *k037122 = screen.machine().device("k037122_1");
@@ -457,8 +457,8 @@ static SCREEN_UPDATE_RGB32( hornet_2board )
k037122_tile_draw(k037122, bitmap, cliprect);
}
- draw_7segment_led(bitmap, 3, 3, state->m_led_reg0);
- draw_7segment_led(bitmap, 9, 3, state->m_led_reg1);
+ draw_7segment_led(bitmap, 3, 3, m_led_reg0);
+ draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
@@ -1016,7 +1016,7 @@ static MACHINE_CONFIG_START( hornet, hornet_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hornet)
+ MCFG_SCREEN_UPDATE_DRIVER(hornet_state, screen_update_hornet)
MCFG_PALETTE_LENGTH(65536)
@@ -1106,13 +1106,13 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(hornet_2board)
+ MCFG_SCREEN_UPDATE_DRIVER(hornet_state, screen_update_hornet_2board)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(hornet_2board)
+ MCFG_SCREEN_UPDATE_DRIVER(hornet_state, screen_update_hornet_2board)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( terabrst, hornet_2board )
diff --git a/src/mame/drivers/hotblock.c b/src/mame/drivers/hotblock.c
index b3bf31f11b0..4fc858e183d 100644
--- a/src/mame/drivers/hotblock.c
+++ b/src/mame/drivers/hotblock.c
@@ -67,6 +67,7 @@ public:
DECLARE_WRITE8_MEMBER(hotblock_port0_w);
DECLARE_WRITE8_MEMBER(hotblock_video_write);
virtual void video_start();
+ UINT32 screen_update_hotblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -142,9 +143,8 @@ void hotblock_state::video_start()
save_item(NAME(m_pal));
}
-static SCREEN_UPDATE_IND16(hotblock)
+UINT32 hotblock_state::screen_update_hotblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- hotblock_state *state = screen.machine().driver_data<hotblock_state>();
int y, x, count;
int i;
static const int xxx = 320, yyy = 204;
@@ -153,7 +153,7 @@ static SCREEN_UPDATE_IND16(hotblock)
for (i = 0; i < 256; i++)
{
- int dat = (state->m_pal[i * 2 + 1] << 8) | state->m_pal[i * 2];
+ int dat = (m_pal[i * 2 + 1] << 8) | m_pal[i * 2];
palette_set_color_rgb(screen.machine(), i, pal5bit(dat >> 0), pal5bit(dat >> 5), pal5bit(dat >> 10));
}
@@ -162,8 +162,8 @@ static SCREEN_UPDATE_IND16(hotblock)
{
for(x = 0; x < xxx; x++)
{
- if (state->m_port0 & 0x40)
- bitmap.pix16(y, x) = state->m_vram[count];
+ if (m_port0 & 0x40)
+ bitmap.pix16(y, x) = m_vram[count];
count++;
}
}
@@ -225,7 +225,7 @@ static MACHINE_CONFIG_START( hotblock, hotblock_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(hotblock)
+ MCFG_SCREEN_UPDATE_DRIVER(hotblock_state, screen_update_hotblock)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/hotstuff.c b/src/mame/drivers/hotstuff.c
index d98328384f5..6870de270d4 100644
--- a/src/mame/drivers/hotstuff.c
+++ b/src/mame/drivers/hotstuff.c
@@ -21,6 +21,7 @@ public:
DECLARE_WRITE8_MEMBER(ioboard_data_w);
DECLARE_WRITE8_MEMBER(ioboard_reg_w);
virtual void video_start();
+ UINT32 screen_update_hotstuff(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -30,9 +31,8 @@ void hotstuff_state::video_start()
/* the first 0x20 bytes in every 0x200 (each line) of video ram are the colour data, providing a palette of 16 RGB444 colours for that line */
-SCREEN_UPDATE_RGB32( hotstuff )
+UINT32 hotstuff_state::screen_update_hotstuff(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- hotstuff_state *state = screen.machine().driver_data<hotstuff_state>();
int count, y,yyy,x,xxx;
UINT16 row_palette_data[0x10];
rgb_t row_palette_data_as_rgb32_pen_data[0x10];
@@ -47,7 +47,7 @@ SCREEN_UPDATE_RGB32( hotstuff )
for (p=0;p<0x10;p++)
{
- row_palette_data[p] = state->m_bitmapram[count+p];
+ row_palette_data[p] = m_bitmapram[count+p];
row_palette_data_as_rgb32_pen_data[p] = MAKE_RGB( (row_palette_data[p] & 0x0f00)>>4, (row_palette_data[p] & 0x00f0)>>0, (row_palette_data[p] & 0x000f)<<4 );
@@ -56,13 +56,13 @@ SCREEN_UPDATE_RGB32( hotstuff )
for(x = 0; x < xxx; x++)
{
{
- bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(state->m_bitmapram[count] &0xf000)>>12];
+ bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0xf000)>>12];
x++;
- bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(state->m_bitmapram[count] &0x0f00)>>8];
+ bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x0f00)>>8];
x++;
- bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(state->m_bitmapram[count] &0x00f0)>>4];
+ bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x00f0)>>4];
x++;
- bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(state->m_bitmapram[count] &0x000f)>>0];
+ bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x000f)>>0];
}
count++;
@@ -133,7 +133,7 @@ static MACHINE_CONFIG_START( hotstuff, hotstuff_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA((0x10*4)+8, 101*8-1, 0*8, 33*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hotstuff)
+ MCFG_SCREEN_UPDATE_DRIVER(hotstuff_state, screen_update_hotstuff)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c
index 3fc29a92769..b81e50c4345 100644
--- a/src/mame/drivers/hvyunit.c
+++ b/src/mame/drivers/hvyunit.c
@@ -126,6 +126,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_hvyunit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_hvyunit(screen_device &screen, bool state);
};
@@ -177,28 +179,26 @@ void hvyunit_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(hvyunit_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
}
-static SCREEN_UPDATE_IND16( hvyunit )
+UINT32 hvyunit_state::screen_update_hvyunit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
#define SX_POS 96
#define SY_POS 0
- hvyunit_state *state = screen.machine().driver_data<hvyunit_state>();
- state->m_bg_tilemap->set_scrollx(0, ((state->m_port0_data & 0x40) << 2) + state->m_scrollx + SX_POS); // TODO
- state->m_bg_tilemap->set_scrolly(0, ((state->m_port0_data & 0x80) << 1) + state->m_scrolly + SY_POS); // TODO
+ m_bg_tilemap->set_scrollx(0, ((m_port0_data & 0x40) << 2) + m_scrollx + SX_POS); // TODO
+ m_bg_tilemap->set_scrolly(0, ((m_port0_data & 0x80) << 1) + m_scrolly + SY_POS); // TODO
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- pandora_update(state->m_pandora, bitmap, cliprect);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ pandora_update(m_pandora, bitmap, cliprect);
return 0;
}
-static SCREEN_VBLANK( hvyunit )
+void hvyunit_state::screen_eof_hvyunit(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- hvyunit_state *state = screen.machine().driver_data<hvyunit_state>();
- pandora_eof(state->m_pandora);
+ pandora_eof(m_pandora);
}
}
@@ -679,8 +679,8 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(hvyunit)
- MCFG_SCREEN_VBLANK_STATIC(hvyunit)
+ MCFG_SCREEN_UPDATE_DRIVER(hvyunit_state, screen_update_hvyunit)
+ MCFG_SCREEN_VBLANK_DRIVER(hvyunit_state, screen_eof_hvyunit)
MCFG_GFXDECODE(hvyunit)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/hyhoo.c b/src/mame/drivers/hyhoo.c
index 5cfb2cc3897..bc43bd8bb0b 100644
--- a/src/mame/drivers/hyhoo.c
+++ b/src/mame/drivers/hyhoo.c
@@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( hyhoo, hyhoo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(hyhoo)
+ MCFG_SCREEN_UPDATE_DRIVER(hyhoo_state, screen_update_hyhoo)
/* sound hardware */
diff --git a/src/mame/drivers/hyperspt.c b/src/mame/drivers/hyperspt.c
index 85e14208586..4f9bf15602e 100644
--- a/src/mame/drivers/hyperspt.c
+++ b/src/mame/drivers/hyperspt.c
@@ -307,7 +307,7 @@ static MACHINE_CONFIG_START( hyperspt, hyperspt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hyperspt)
+ MCFG_SCREEN_UPDATE_DRIVER(hyperspt_state, screen_update_hyperspt)
MCFG_GFXDECODE(hyperspt)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/hyprduel.c b/src/mame/drivers/hyprduel.c
index 4647425ad8c..38a73db1980 100644
--- a/src/mame/drivers/hyprduel.c
+++ b/src/mame/drivers/hyprduel.c
@@ -687,7 +687,7 @@ static MACHINE_CONFIG_START( hyprduel, hyprduel_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE)
- MCFG_SCREEN_UPDATE_STATIC(hyprduel)
+ MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -728,7 +728,7 @@ static MACHINE_CONFIG_START( magerror, hyprduel_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE)
- MCFG_SCREEN_UPDATE_STATIC(hyprduel)
+ MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index 6180ad33491..5628d599733 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -89,6 +89,7 @@ public:
virtual void machine_reset();
virtual void video_start();
DECLARE_VIDEO_START(gp98);
+ UINT32 screen_update_jingbell(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -281,10 +282,9 @@ VIDEO_START_MEMBER(igs009_state,gp98)
}
-static SCREEN_UPDATE_IND16(jingbell)
+UINT32 igs009_state::screen_update_jingbell(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igs009_state *state = screen.machine().driver_data<igs009_state>();
- int layers_ctrl = state->m_video_enable ? -1 : 0;
+ int layers_ctrl = m_video_enable ? -1 : 0;
#ifdef MAME_DEBUG
if (screen.machine().input().code_pressed(KEYCODE_Z))
@@ -306,10 +306,10 @@ static SCREEN_UPDATE_IND16(jingbell)
for (i= 0;i < 0x80;i++)
{
- state->m_gp98_reel1_tilemap->set_scrolly(i, state->m_bg_scroll[i]*2);
- state->m_gp98_reel2_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x80]*2);
- state->m_gp98_reel3_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x100]*2);
- state->m_gp98_reel4_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x180]*2);
+ m_gp98_reel1_tilemap->set_scrolly(i, m_bg_scroll[i]*2);
+ m_gp98_reel2_tilemap->set_scrolly(i, m_bg_scroll[i+0x80]*2);
+ m_gp98_reel3_tilemap->set_scrolly(i, m_bg_scroll[i+0x100]*2);
+ m_gp98_reel4_tilemap->set_scrolly(i, m_bg_scroll[i+0x180]*2);
}
@@ -318,7 +318,7 @@ static SCREEN_UPDATE_IND16(jingbell)
for (zz=0;zz<0x80-8;zz++) // -8 because of visible area (2*8 = 16)
{
rectangle clip;
- int rowenable = state->m_bg_scroll2[zz];
+ int rowenable = m_bg_scroll2[zz];
/* draw top of screen */
clip.set(visarea.min_x, visarea.max_x, startclipmin, startclipmin+2);
@@ -327,19 +327,19 @@ static SCREEN_UPDATE_IND16(jingbell)
if (rowenable==0)
{ // 0 and 1 are the same? or is there a global switchoff?
- state->m_gp98_reel1_tilemap->draw(bitmap, clip, 0,0);
+ m_gp98_reel1_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==1)
{
- state->m_gp98_reel2_tilemap->draw(bitmap, clip, 0,0);
+ m_gp98_reel2_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==2)
{
- state->m_gp98_reel3_tilemap->draw(bitmap, clip, 0,0);
+ m_gp98_reel3_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==3)
{
- state->m_gp98_reel4_tilemap->draw(bitmap, clip, 0,0);
+ m_gp98_reel4_tilemap->draw(bitmap, clip, 0,0);
}
@@ -350,7 +350,7 @@ static SCREEN_UPDATE_IND16(jingbell)
else bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (layers_ctrl & 2) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -756,7 +756,7 @@ static MACHINE_CONFIG_START( jingbell, igs009_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(jingbell)
+ MCFG_SCREEN_UPDATE_DRIVER(igs009_state, screen_update_jingbell)
MCFG_GFXDECODE(jingbell)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index ae53cdb3aac..423e141d6a5 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -196,6 +196,8 @@ public:
DECLARE_DRIVER_INIT(vbowlj);
DECLARE_DRIVER_INIT(ryukobou);
virtual void video_start();
+ UINT32 screen_update_igs011(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_vbowl(screen_device &screen, bool state);
};
@@ -243,9 +245,8 @@ void igs011_state::video_start()
m_lhb2_pen_hi = 0;
}
-static SCREEN_UPDATE_IND16( igs011 )
+UINT32 igs011_state::screen_update_igs011(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igs011_state *state = screen.machine().driver_data<igs011_state>();
#ifdef MAME_DEBUG
int layer_enable = -1;
#endif
@@ -269,7 +270,7 @@ static SCREEN_UPDATE_IND16( igs011 )
}
#endif
- pri_ram = &state->m_priority_ram[(state->m_priority & 7) * 512/2];
+ pri_ram = &m_priority_ram[(m_priority & 7) * 512/2];
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
@@ -280,7 +281,7 @@ static SCREEN_UPDATE_IND16( igs011 )
for (l = 0; l < 8; l++)
{
- if ( (state->m_layer[l][scr_addr] != 0xff)
+ if ( (m_layer[l][scr_addr] != 0xff)
#ifdef MAME_DEBUG
&& (layer_enable & (1 << l))
#endif
@@ -296,7 +297,7 @@ static SCREEN_UPDATE_IND16( igs011 )
bitmap.pix16(y, x) = get_black_pen(screen.machine());
else
#endif
- bitmap.pix16(y, x) = state->m_layer[l][scr_addr] | (l << 8);
+ bitmap.pix16(y, x) = m_layer[l][scr_addr] | (l << 8);
}
}
return 0;
@@ -2488,14 +2489,13 @@ READ16_MEMBER(igs011_state::vbowl_unk_r)
return 0xffff;
}
-static SCREEN_VBLANK( vbowl )
+void igs011_state::screen_eof_vbowl(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- igs011_state *state = screen.machine().driver_data<igs011_state>();
- state->m_vbowl_trackball[0] = state->m_vbowl_trackball[1];
- state->m_vbowl_trackball[1] = (state->ioport("AN1")->read() << 8) | state->ioport("AN0")->read();
+ m_vbowl_trackball[0] = m_vbowl_trackball[1];
+ m_vbowl_trackball[1] = (ioport("AN1")->read() << 8) | ioport("AN0")->read();
}
}
@@ -3809,7 +3809,7 @@ static MACHINE_CONFIG_START( igs011_base, igs011_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC( igs011 )
+ MCFG_SCREEN_UPDATE_DRIVER(igs011_state, screen_update_igs011)
MCFG_PALETTE_LENGTH(0x800)
// MCFG_GFXDECODE(igs011)
@@ -3944,7 +3944,7 @@ static MACHINE_CONFIG_DERIVED( vbowl, igs011_base )
// irq 4 points to an apparently unneeded routine
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(vbowl) // trackball
+ MCFG_SCREEN_VBLANK_DRIVER(igs011_state, screen_eof_vbowl)
// MCFG_GFXDECODE(igs011_hi)
MCFG_DEVICE_REMOVE("oki")
diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c
index 87504342119..564cb448754 100644
--- a/src/mame/drivers/igs017.c
+++ b/src/mame/drivers/igs017.c
@@ -155,6 +155,7 @@ public:
DECLARE_MACHINE_RESET(iqblocka);
DECLARE_MACHINE_RESET(mgcs);
DECLARE_MACHINE_RESET(lhzb2a);
+ UINT32 screen_update_igs017(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -409,9 +410,8 @@ static int debug_viewer(running_machine &machine, bitmap_ind16 &bitmap,const rec
return 0;
}
-static SCREEN_UPDATE_IND16( igs017 )
+UINT32 igs017_state::screen_update_igs017(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igs017_state *state = screen.machine().driver_data<igs017_state>();
int layers_ctrl = -1;
#ifdef MAME_DEBUG
@@ -430,14 +430,14 @@ static SCREEN_UPDATE_IND16( igs017 )
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (state->m_video_disable)
+ if (m_video_disable)
return 0;
- if (layers_ctrl & 1) state->m_bg_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_bg_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
if (layers_ctrl & 4) draw_sprites(screen.machine(), bitmap, cliprect);
- if (layers_ctrl & 2) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -3269,7 +3269,7 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3334,7 +3334,7 @@ static MACHINE_CONFIG_START( mgcs, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017_flipped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3374,7 +3374,7 @@ static MACHINE_CONFIG_START( lhzb2, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017_swapped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3411,7 +3411,7 @@ static MACHINE_CONFIG_START( lhzb2a, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017_swapped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3442,7 +3442,7 @@ static MACHINE_CONFIG_START( slqz2, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3482,7 +3482,7 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3534,7 +3534,7 @@ static MACHINE_CONFIG_START( mgdha, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017_swapped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -3565,7 +3565,7 @@ static MACHINE_CONFIG_START( tjsb, igs017_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(igs017)
+ MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c
index eb19b0251b4..fb9e4d29a5f 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -58,6 +58,7 @@ public:
TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tilemap_tile_info);
virtual void video_start();
+ UINT32 screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -181,19 +182,18 @@ void igs_m027_state::video_start()
logerror("Video START OK!\n");
}
-static SCREEN_UPDATE_IND16(igs_majhong)
+UINT32 igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igs_m027_state *state = screen.machine().driver_data<igs_m027_state>();
//??????????
bitmap.fill(get_black_pen(screen.machine()), cliprect);
//??????
- state->m_igs_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_igs_bg_tilemap->draw(bitmap, cliprect, 0,0);
//CG??????
//??????
- state->m_igs_tx_tilemap->draw(bitmap, cliprect, 0,0);
+ m_igs_tx_tilemap->draw(bitmap, cliprect, 0,0);
//fprintf(stdout,"Video UPDATE OK!\n");
return 0;
}
@@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( igs_majhong, igs_m027_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC( igs_majhong )
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/igspoker.c b/src/mame/drivers/igspoker.c
index 6d2e6317973..73e4b056388 100644
--- a/src/mame/drivers/igspoker.c
+++ b/src/mame/drivers/igspoker.c
@@ -119,6 +119,8 @@ public:
virtual void machine_reset();
virtual void video_start();
DECLARE_VIDEO_START(cpokerpk);
+ UINT32 screen_update_igs_video(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_cpokerpk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -197,15 +199,14 @@ void igspoker_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(igs_video)
+UINT32 igspoker_state::screen_update_igs_video(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igspoker_state *state = screen.machine().driver_data<igspoker_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
// FIX: CSK227IT must have some way to disable background, or wrong gfx?
- if (state->m_bg_enable) state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ if (m_bg_enable) m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -215,10 +216,9 @@ VIDEO_START_MEMBER(igspoker_state,cpokerpk)
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(igspoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
-static SCREEN_UPDATE_IND16(cpokerpk)
+UINT32 igspoker_state::screen_update_cpokerpk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- igspoker_state *state = screen.machine().driver_data<igspoker_state>();
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -1780,7 +1780,7 @@ static MACHINE_CONFIG_START( igspoker, igspoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8) // TODO: wrong screen size!
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(igs_video)
+ MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_igs_video)
MCFG_GFXDECODE(igspoker)
MCFG_PALETTE_LENGTH(2048)
@@ -1810,7 +1810,7 @@ static MACHINE_CONFIG_DERIVED( number10, igspoker )
MCFG_CPU_IO_MAP(number10_io_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(cpokerpk)
+ MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_cpokerpk)
MCFG_VIDEO_START_OVERRIDE(igspoker_state,cpokerpk)
MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, OKIM6295_PIN7_HIGH)
diff --git a/src/mame/drivers/ikki.c b/src/mame/drivers/ikki.c
index 865839ddc93..f3628959fca 100644
--- a/src/mame/drivers/ikki.c
+++ b/src/mame/drivers/ikki.c
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( ikki, ikki_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8+3*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ikki)
+ MCFG_SCREEN_UPDATE_DRIVER(ikki_state, screen_update_ikki)
MCFG_GFXDECODE(ikki)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c
index 8cd1d39eb0f..1053a3aba7b 100644
--- a/src/mame/drivers/imolagp.c
+++ b/src/mame/drivers/imolagp.c
@@ -128,6 +128,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_imolagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -208,15 +209,14 @@ void imolagp_state::video_start()
}
-static SCREEN_UPDATE_IND16( imolagp )
+UINT32 imolagp_state::screen_update_imolagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- imolagp_state *state = screen.machine().driver_data<imolagp_state>();
- int scroll2 = state->m_scroll ^ 0x03;
+ int scroll2 = m_scroll ^ 0x03;
int pass;
for (pass = 0; pass < 2; pass++)
{
int i;
- const UINT8 *source = state->m_videoram[pass * 2];
+ const UINT8 *source = m_videoram[pass * 2];
for (i = 0; i < 0x4000; i++)
{
@@ -574,7 +574,7 @@ static MACHINE_CONFIG_START( imolagp, imolagp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256,256)
MCFG_SCREEN_VISIBLE_AREA(0+64-16,255,0+16,255)
- MCFG_SCREEN_UPDATE_STATIC(imolagp)
+ MCFG_SCREEN_UPDATE_DRIVER(imolagp_state, screen_update_imolagp)
MCFG_PALETTE_LENGTH(0x20)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/intrscti.c b/src/mame/drivers/intrscti.c
index 00923241d92..dfc588cd0bd 100644
--- a/src/mame/drivers/intrscti.c
+++ b/src/mame/drivers/intrscti.c
@@ -26,15 +26,15 @@ public:
// DECLARE_READ8_MEMBER(unk_r);
DECLARE_DRIVER_INIT(intrscti);
virtual void video_start();
+ UINT32 screen_update_intrscti(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
void intrscti_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(intrscti)
+UINT32 intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- intrscti_state *state = screen.machine().driver_data<intrscti_state>();
int y,x;
int count;
@@ -46,7 +46,7 @@ static SCREEN_UPDATE_IND16(intrscti)
for (x=0;x<32;x++)
{
int dat;
- dat = state->m_vram[count];
+ dat = m_vram[count];
drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[0],dat/*+0x100*/,0,0,0,x*8,y*8,0);
count++;
}
@@ -58,7 +58,7 @@ static SCREEN_UPDATE_IND16(intrscti)
for (x=0;x<32;x++)
{
int dat;
- dat = state->m_vram[count];
+ dat = m_vram[count];
drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[0],dat+0x100,0,0,0,x*8,y*8,0);
count++;
}
@@ -171,7 +171,7 @@ static MACHINE_CONFIG_START( intrscti, intrscti_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(intrscti)
+ MCFG_SCREEN_UPDATE_DRIVER(intrscti_state, screen_update_intrscti)
MCFG_GFXDECODE(intrscti)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/inufuku.c b/src/mame/drivers/inufuku.c
index ae33679ad05..dfac3b8a3ac 100644
--- a/src/mame/drivers/inufuku.c
+++ b/src/mame/drivers/inufuku.c
@@ -364,7 +364,7 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(2048, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319-1, 1, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(inufuku)
+ MCFG_SCREEN_UPDATE_DRIVER(inufuku_state, screen_update_inufuku)
MCFG_GFXDECODE(inufuku)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index 2cfda9d809e..425ee470ea5 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(iqblock)
+ MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update_iqblock)
MCFG_GFXDECODE(iqblock)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/irobot.c b/src/mame/drivers/irobot.c
index 278ef1fd71f..b0ce5c58038 100644
--- a/src/mame/drivers/irobot.c
+++ b/src/mame/drivers/irobot.c
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( irobot, irobot_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(irobot)
+ MCFG_SCREEN_UPDATE_DRIVER(irobot_state, screen_update_irobot)
MCFG_GFXDECODE(irobot)
MCFG_PALETTE_LENGTH(64 + 32) /* 64 for polygons, 32 for text */
diff --git a/src/mame/drivers/ironhors.c b/src/mame/drivers/ironhors.c
index 25378618c17..f766c85f76e 100644
--- a/src/mame/drivers/ironhors.c
+++ b/src/mame/drivers/ironhors.c
@@ -393,7 +393,7 @@ static MACHINE_CONFIG_START( ironhors, ironhors_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ironhors)
+ MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update_ironhors)
MCFG_GFXDECODE(ironhors)
MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
@@ -468,7 +468,7 @@ static MACHINE_CONFIG_DERIVED( farwest, ironhors )
MCFG_GFXDECODE(farwest)
MCFG_VIDEO_START_OVERRIDE(ironhors_state,farwest)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(farwest)
+ MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update_farwest)
MCFG_SOUND_MODIFY("ym2203")
MCFG_SOUND_CONFIG(farwest_ym2203_config)
diff --git a/src/mame/drivers/istellar.c b/src/mame/drivers/istellar.c
index 46e54890fdb..05f7e86ab06 100644
--- a/src/mame/drivers/istellar.c
+++ b/src/mame/drivers/istellar.c
@@ -53,6 +53,7 @@ public:
DECLARE_DRIVER_INIT(istellar);
virtual void machine_start();
virtual void palette_init();
+ UINT32 screen_update_istellar(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -61,9 +62,8 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE_RGB32( istellar )
+UINT32 istellar_state::screen_update_istellar(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- istellar_state *state = screen.machine().driver_data<istellar_state>();
int x, y;
/* clear */
@@ -74,8 +74,8 @@ static SCREEN_UPDATE_RGB32( istellar )
{
for (x = 0; x < 32; x++)
{
- int tile = state->m_tile_ram[x+y*32];
- int attr = state->m_tile_control_ram[x+y*32];
+ int tile = m_tile_ram[x+y*32];
+ int attr = m_tile_control_ram[x+y*32];
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0],tile,attr & 0x0f,0, 0, x*8, y*8, 0);
}
@@ -346,7 +346,7 @@ static MACHINE_CONFIG_START( istellar, istellar_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, istellar)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, istellar_state, screen_update_istellar)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c
index acac460ef62..ee35142bb6b 100644
--- a/src/mame/drivers/itech32.c
+++ b/src/mame/drivers/itech32.c
@@ -1686,7 +1686,7 @@ static MACHINE_CONFIG_START( timekill, itech32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 508, 0, 384, 262, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(itech32)
+ MCFG_SCREEN_UPDATE_DRIVER(itech32_state, screen_update_itech32)
/* sound hardware */
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index b378b31e429..793f5578830 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -1792,7 +1792,7 @@ static MACHINE_CONFIG_DERIVED( wfortune, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2layer)
MACHINE_CONFIG_END
@@ -1804,7 +1804,7 @@ static MACHINE_CONFIG_DERIVED( grmatch, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_grmatch)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_grmatch)
/* palette updater */
MCFG_TIMER_ADD_SCANLINE("palette", grmatch_palette_update, "screen", 0, 0)
@@ -1819,7 +1819,7 @@ static MACHINE_CONFIG_DERIVED( stratab_hi, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2layer)
MACHINE_CONFIG_END
@@ -1831,7 +1831,7 @@ static MACHINE_CONFIG_DERIVED( stratab_lo, itech8_core_lo )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2layer)
MACHINE_CONFIG_END
@@ -1847,7 +1847,7 @@ static MACHINE_CONFIG_DERIVED( slikshot_hi, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(slikshot)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_slikshot)
MCFG_VIDEO_START_OVERRIDE(itech8_state,slikshot)
MACHINE_CONFIG_END
@@ -1864,7 +1864,7 @@ static MACHINE_CONFIG_DERIVED( slikshot_lo, itech8_core_lo )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(slikshot)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_slikshot)
MCFG_VIDEO_START_OVERRIDE(itech8_state,slikshot)
MACHINE_CONFIG_END
@@ -1877,7 +1877,7 @@ static MACHINE_CONFIG_DERIVED( slikshot_lo_noz80, itech8_core_lo )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2page)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2page)
MACHINE_CONFIG_END
@@ -1897,7 +1897,7 @@ static MACHINE_CONFIG_DERIVED( hstennis_hi, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2page_large)
MACHINE_CONFIG_END
@@ -1909,7 +1909,7 @@ static MACHINE_CONFIG_DERIVED( hstennis_lo, itech8_core_lo )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2page_large)
MACHINE_CONFIG_END
@@ -1925,7 +1925,7 @@ static MACHINE_CONFIG_DERIVED( rimrockn, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(24, 375, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2page_large)
MACHINE_CONFIG_END
@@ -1941,7 +1941,7 @@ static MACHINE_CONFIG_DERIVED( ninclown, itech8_core_hi )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(64, 423, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2page_large)
MACHINE_CONFIG_END
@@ -1956,7 +1956,7 @@ static MACHINE_CONFIG_DERIVED( gtg2, itech8_core_lo )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
+ MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_2layer)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itgambl2.c b/src/mame/drivers/itgambl2.c
index 543484df33b..a3a053a5242 100644
--- a/src/mame/drivers/itgambl2.c
+++ b/src/mame/drivers/itgambl2.c
@@ -69,6 +69,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_itgambl2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -84,45 +85,44 @@ void itgambl2_state::video_start()
}
/* (dirty) debug code for looking 8bpps blitter-based gfxs */
-static SCREEN_UPDATE_RGB32( itgambl2 )
+UINT32 itgambl2_state::screen_update_itgambl2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- itgambl2_state *state = screen.machine().driver_data<itgambl2_state>();
int x,y,count;
- const UINT8 *blit_ram = state->memregion("gfx1")->base();
+ const UINT8 *blit_ram = memregion("gfx1")->base();
if(screen.machine().input().code_pressed(KEYCODE_Z))
- state->m_test_x++;
+ m_test_x++;
if(screen.machine().input().code_pressed(KEYCODE_X))
- state->m_test_x--;
+ m_test_x--;
if(screen.machine().input().code_pressed(KEYCODE_A))
- state->m_test_y++;
+ m_test_y++;
if(screen.machine().input().code_pressed(KEYCODE_S))
- state->m_test_y--;
+ m_test_y--;
if(screen.machine().input().code_pressed(KEYCODE_Q))
- state->m_start_offs+=0x200;
+ m_start_offs+=0x200;
if(screen.machine().input().code_pressed(KEYCODE_W))
- state->m_start_offs-=0x200;
+ m_start_offs-=0x200;
if(screen.machine().input().code_pressed(KEYCODE_E))
- state->m_start_offs++;
+ m_start_offs++;
if(screen.machine().input().code_pressed(KEYCODE_R))
- state->m_start_offs--;
+ m_start_offs--;
- popmessage("%d %d %04x",state->m_test_x,state->m_test_y,state->m_start_offs);
+ popmessage("%d %d %04x",m_test_x,m_test_y,m_start_offs);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- count = (state->m_start_offs);
+ count = (m_start_offs);
- for(y=0;y<state->m_test_y;y++)
+ for(y=0;y<m_test_y;y++)
{
- for(x=0;x<state->m_test_x;x++)
+ for(x=0;x<m_test_x;x++)
{
UINT32 color;
@@ -273,7 +273,7 @@ static MACHINE_CONFIG_START( itgambl2, itgambl2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC( itgambl2 )
+ MCFG_SCREEN_UPDATE_DRIVER(itgambl2_state, screen_update_itgambl2)
MCFG_GFXDECODE(itgambl2)
diff --git a/src/mame/drivers/itgambl3.c b/src/mame/drivers/itgambl3.c
index 9236a18b068..cfe00de541b 100644
--- a/src/mame/drivers/itgambl3.c
+++ b/src/mame/drivers/itgambl3.c
@@ -57,6 +57,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_itgambl3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -72,45 +73,44 @@ void itgambl3_state::video_start()
}
/* (dirty) debug code for looking 8bpps blitter-based gfxs */
-static SCREEN_UPDATE_RGB32( itgambl3 )
+UINT32 itgambl3_state::screen_update_itgambl3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- itgambl3_state *state = screen.machine().driver_data<itgambl3_state>();
int x,y,count;
- const UINT8 *blit_ram = state->memregion("gfx1")->base();
+ const UINT8 *blit_ram = memregion("gfx1")->base();
if(screen.machine().input().code_pressed(KEYCODE_Z))
- state->m_test_x++;
+ m_test_x++;
if(screen.machine().input().code_pressed(KEYCODE_X))
- state->m_test_x--;
+ m_test_x--;
if(screen.machine().input().code_pressed(KEYCODE_A))
- state->m_test_y++;
+ m_test_y++;
if(screen.machine().input().code_pressed(KEYCODE_S))
- state->m_test_y--;
+ m_test_y--;
if(screen.machine().input().code_pressed(KEYCODE_Q))
- state->m_start_offs+=0x200;
+ m_start_offs+=0x200;
if(screen.machine().input().code_pressed(KEYCODE_W))
- state->m_start_offs-=0x200;
+ m_start_offs-=0x200;
if(screen.machine().input().code_pressed(KEYCODE_E))
- state->m_start_offs++;
+ m_start_offs++;
if(screen.machine().input().code_pressed(KEYCODE_R))
- state->m_start_offs--;
+ m_start_offs--;
- popmessage("%d %d %04x",state->m_test_x,state->m_test_y,state->m_start_offs);
+ popmessage("%d %d %04x",m_test_x,m_test_y,m_start_offs);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- count = (state->m_start_offs);
+ count = (m_start_offs);
- for(y=0;y<state->m_test_y;y++)
+ for(y=0;y<m_test_y;y++)
{
- for(x=0;x<state->m_test_x;x++)
+ for(x=0;x<m_test_x;x++)
{
UINT32 color;
@@ -262,7 +262,7 @@ static MACHINE_CONFIG_START( itgambl3, itgambl3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC( itgambl3 )
+ MCFG_SCREEN_UPDATE_DRIVER(itgambl3_state, screen_update_itgambl3)
MCFG_GFXDECODE(itgambl3)
diff --git a/src/mame/drivers/jack.c b/src/mame/drivers/jack.c
index 21fcba48d82..457bf186d18 100644
--- a/src/mame/drivers/jack.c
+++ b/src/mame/drivers/jack.c
@@ -826,7 +826,7 @@ static MACHINE_CONFIG_START( jack, jack_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jack)
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_jack)
MCFG_GFXDECODE(jack)
MCFG_PALETTE_LENGTH(32)
@@ -867,7 +867,7 @@ static MACHINE_CONFIG_DERIVED( joinem, jack )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(joinem)
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_joinem)
MCFG_PALETTE_INIT_OVERRIDE(jack_state,joinem)
MCFG_VIDEO_START_OVERRIDE(jack_state,joinem)
@@ -886,7 +886,7 @@ static MACHINE_CONFIG_DERIVED( loverboy, jack )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(joinem)
+ MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_joinem)
MCFG_PALETTE_INIT_OVERRIDE(jack_state,joinem)
MCFG_VIDEO_START_OVERRIDE(jack_state,joinem)
diff --git a/src/mame/drivers/jackal.c b/src/mame/drivers/jackal.c
index d176ff9891a..8c7d94b3eff 100644
--- a/src/mame/drivers/jackal.c
+++ b/src/mame/drivers/jackal.c
@@ -372,7 +372,7 @@ static MACHINE_CONFIG_START( jackal, jackal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jackal)
+ MCFG_SCREEN_UPDATE_DRIVER(jackal_state, screen_update_jackal)
MCFG_GFXDECODE(jackal)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/jackie.c b/src/mame/drivers/jackie.c
index 53f61b67080..b8fb36ad8c5 100644
--- a/src/mame/drivers/jackie.c
+++ b/src/mame/drivers/jackie.c
@@ -110,6 +110,7 @@ public:
TILE_GET_INFO_MEMBER(get_jackie_reel3_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -197,9 +198,8 @@ void jackie_state::video_start()
}
-static SCREEN_UPDATE_IND16(jackie)
+UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jackie_state *state = screen.machine().driver_data<jackie_state>();
int i,j;
int startclipmin = 0;
const rectangle &visarea = screen.visible_area();
@@ -208,30 +208,30 @@ static SCREEN_UPDATE_IND16(jackie)
for (i=0;i < 0x40;i++)
{
- state->m_reel1_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x000]);
- state->m_reel2_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x040]);
- state->m_reel3_tilemap->set_scrolly(i, state->m_bg_scroll[i+0x080]);
+ m_reel1_tilemap->set_scrolly(i, m_bg_scroll[i+0x000]);
+ m_reel2_tilemap->set_scrolly(i, m_bg_scroll[i+0x040]);
+ m_reel3_tilemap->set_scrolly(i, m_bg_scroll[i+0x080]);
}
for (j=0; j < 0x100-1; j++)
{
rectangle clip;
- int rowenable = state->m_bg_scroll2[j];
+ int rowenable = m_bg_scroll2[j];
/* draw top of screen */
clip.set(visarea.min_x, visarea.max_x, startclipmin, startclipmin+1);
if (rowenable==0)
{
- state->m_reel1_tilemap->draw(bitmap, clip, 0,0);
+ m_reel1_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==1)
{
- state->m_reel2_tilemap->draw(bitmap, clip, 0,0);
+ m_reel2_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==2)
{
- state->m_reel3_tilemap->draw(bitmap, clip, 0,0);
+ m_reel3_tilemap->draw(bitmap, clip, 0,0);
}
else if (rowenable==3)
{
@@ -240,7 +240,7 @@ static SCREEN_UPDATE_IND16(jackie)
startclipmin+=1;
}
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -586,7 +586,7 @@ static MACHINE_CONFIG_START( jackie, jackie_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jackie)
+ MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update_jackie)
MCFG_GFXDECODE(jackie)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/jackpool.c b/src/mame/drivers/jackpool.c
index dbc21efdedc..1ff5fde79ce 100644
--- a/src/mame/drivers/jackpool.c
+++ b/src/mame/drivers/jackpool.c
@@ -37,6 +37,7 @@ public:
DECLARE_WRITE16_MEMBER(jackpool_io_w);
DECLARE_DRIVER_INIT(jackpool);
virtual void video_start();
+ UINT32 screen_update_jackpool(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -44,39 +45,38 @@ void jackpool_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(jackpool)
+UINT32 jackpool_state::screen_update_jackpool(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jackpool_state *state = screen.machine().driver_data<jackpool_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count;// = 0x00000/2;
int y,x;
{
- count = state->m_map_vreg*(0x4000/2);
+ count = m_map_vreg*(0x4000/2);
for (y=0;y<32;y++)
{
for (x=0;x<64;x++)
{
- int tile = (state->m_vram[count+(0x2000/2)] & 0x7fff);
- int attr = (state->m_vram[count+(0x2000/2)+0x800] & 0x1f00)>>8;
+ int tile = (m_vram[count+(0x2000/2)] & 0x7fff);
+ int attr = (m_vram[count+(0x2000/2)+0x800] & 0x1f00)>>8;
drawgfx_opaque(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8);
count++;
}
}
- count = state->m_map_vreg*(0x4000/2);
+ count = m_map_vreg*(0x4000/2);
for (y=0;y<32;y++)
{
for (x=0;x<64;x++)
{
- int tile = (state->m_vram[count] & 0x7fff);
+ int tile = (m_vram[count] & 0x7fff);
if(tile != 0)
{
- int attr = (state->m_vram[count+0x800] & 0x1f00)>>8;
- int t_pen = (state->m_vram[count+0x800] & 0x1000);
+ int attr = (m_vram[count+0x800] & 0x1f00)>>8;
+ int t_pen = (m_vram[count+0x800] & 0x1000);
drawgfx_transpen(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8,(t_pen) ? 0 : -1);
}
@@ -266,7 +266,7 @@ static MACHINE_CONFIG_START( jackpool, jackpool_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jackpool)
+ MCFG_SCREEN_UPDATE_DRIVER(jackpool_state, screen_update_jackpool)
MCFG_EEPROM_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/jailbrek.c b/src/mame/drivers/jailbrek.c
index 3f19cc32b17..d83ee8626e4 100644
--- a/src/mame/drivers/jailbrek.c
+++ b/src/mame/drivers/jailbrek.c
@@ -281,7 +281,7 @@ static MACHINE_CONFIG_START( jailbrek, jailbrek_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 396, 8, 248, 256, 16, 240)
- MCFG_SCREEN_UPDATE_STATIC(jailbrek)
+ MCFG_SCREEN_UPDATE_DRIVER(jailbrek_state, screen_update_jailbrek)
/* sound hardware */
diff --git a/src/mame/drivers/jalmah.c b/src/mame/drivers/jalmah.c
index 0eb92c796d2..254728bfd61 100644
--- a/src/mame/drivers/jalmah.c
+++ b/src/mame/drivers/jalmah.c
@@ -204,6 +204,8 @@ public:
virtual void machine_reset();
virtual void video_start();
DECLARE_VIDEO_START(urashima);
+ UINT32 screen_update_jalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_urashima(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -436,80 +438,78 @@ static void draw_sc3_layer(running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16( jalmah )
+UINT32 jalmah_state::screen_update_jalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jalmah_state *state = screen.machine().driver_data<jalmah_state>();
- UINT16 *jm_scrollram = state->m_jm_scrollram;
+ UINT16 *jm_scrollram = m_jm_scrollram;
UINT8 cur_prin;
jalmah_priority_system(screen.machine());
- state->m_sc0_tilemap_0->set_scrollx(0, jm_scrollram[0] & 0xfff);
- state->m_sc0_tilemap_1->set_scrollx(0, jm_scrollram[0] & 0x7ff);
- state->m_sc0_tilemap_2->set_scrollx(0, jm_scrollram[0] & 0x3ff);
- state->m_sc0_tilemap_3->set_scrollx(0, jm_scrollram[0] & 0x1ff);
+ m_sc0_tilemap_0->set_scrollx(0, jm_scrollram[0] & 0xfff);
+ m_sc0_tilemap_1->set_scrollx(0, jm_scrollram[0] & 0x7ff);
+ m_sc0_tilemap_2->set_scrollx(0, jm_scrollram[0] & 0x3ff);
+ m_sc0_tilemap_3->set_scrollx(0, jm_scrollram[0] & 0x1ff);
- state->m_sc1_tilemap_0->set_scrollx(0, jm_scrollram[1] & 0xfff);
- state->m_sc1_tilemap_1->set_scrollx(0, jm_scrollram[1] & 0x7ff);
- state->m_sc1_tilemap_2->set_scrollx(0, jm_scrollram[1] & 0x3ff);
- state->m_sc1_tilemap_3->set_scrollx(0, jm_scrollram[1] & 0x1ff);
+ m_sc1_tilemap_0->set_scrollx(0, jm_scrollram[1] & 0xfff);
+ m_sc1_tilemap_1->set_scrollx(0, jm_scrollram[1] & 0x7ff);
+ m_sc1_tilemap_2->set_scrollx(0, jm_scrollram[1] & 0x3ff);
+ m_sc1_tilemap_3->set_scrollx(0, jm_scrollram[1] & 0x1ff);
- state->m_sc2_tilemap_0->set_scrollx(0, jm_scrollram[2] & 0xfff);
- state->m_sc2_tilemap_1->set_scrollx(0, jm_scrollram[2] & 0x7ff);
- state->m_sc2_tilemap_2->set_scrollx(0, jm_scrollram[2] & 0x3ff);
- state->m_sc2_tilemap_3->set_scrollx(0, jm_scrollram[2] & 0x1ff);
+ m_sc2_tilemap_0->set_scrollx(0, jm_scrollram[2] & 0xfff);
+ m_sc2_tilemap_1->set_scrollx(0, jm_scrollram[2] & 0x7ff);
+ m_sc2_tilemap_2->set_scrollx(0, jm_scrollram[2] & 0x3ff);
+ m_sc2_tilemap_3->set_scrollx(0, jm_scrollram[2] & 0x1ff);
- state->m_sc3_tilemap_0->set_scrollx(0, jm_scrollram[3] & 0x7ff);
+ m_sc3_tilemap_0->set_scrollx(0, jm_scrollram[3] & 0x7ff);
// empty
- state->m_sc3_tilemap_2->set_scrollx(0, jm_scrollram[3] & 0x3ff);
- state->m_sc3_tilemap_3->set_scrollx(0, jm_scrollram[3] & 0x1ff);
+ m_sc3_tilemap_2->set_scrollx(0, jm_scrollram[3] & 0x3ff);
+ m_sc3_tilemap_3->set_scrollx(0, jm_scrollram[3] & 0x1ff);
- state->m_sc0_tilemap_0->set_scrolly(0, jm_scrollram[4] & 0x1ff);
- state->m_sc0_tilemap_1->set_scrolly(0, jm_scrollram[4] & 0x3ff);
- state->m_sc0_tilemap_2->set_scrolly(0, jm_scrollram[4] & 0x7ff);
- state->m_sc0_tilemap_3->set_scrolly(0, jm_scrollram[4] & 0xfff);
+ m_sc0_tilemap_0->set_scrolly(0, jm_scrollram[4] & 0x1ff);
+ m_sc0_tilemap_1->set_scrolly(0, jm_scrollram[4] & 0x3ff);
+ m_sc0_tilemap_2->set_scrolly(0, jm_scrollram[4] & 0x7ff);
+ m_sc0_tilemap_3->set_scrolly(0, jm_scrollram[4] & 0xfff);
- state->m_sc1_tilemap_0->set_scrolly(0, jm_scrollram[5] & 0x1ff);
- state->m_sc1_tilemap_1->set_scrolly(0, jm_scrollram[5] & 0x3ff);
- state->m_sc1_tilemap_2->set_scrolly(0, jm_scrollram[5] & 0x7ff);
- state->m_sc1_tilemap_3->set_scrolly(0, jm_scrollram[5] & 0xfff);
+ m_sc1_tilemap_0->set_scrolly(0, jm_scrollram[5] & 0x1ff);
+ m_sc1_tilemap_1->set_scrolly(0, jm_scrollram[5] & 0x3ff);
+ m_sc1_tilemap_2->set_scrolly(0, jm_scrollram[5] & 0x7ff);
+ m_sc1_tilemap_3->set_scrolly(0, jm_scrollram[5] & 0xfff);
- state->m_sc2_tilemap_0->set_scrolly(0, jm_scrollram[6] & 0x1ff);
- state->m_sc2_tilemap_1->set_scrolly(0, jm_scrollram[6] & 0x3ff);
- state->m_sc2_tilemap_2->set_scrolly(0, jm_scrollram[6] & 0x7ff);
- state->m_sc2_tilemap_3->set_scrolly(0, jm_scrollram[6] & 0xfff);
+ m_sc2_tilemap_0->set_scrolly(0, jm_scrollram[6] & 0x1ff);
+ m_sc2_tilemap_1->set_scrolly(0, jm_scrollram[6] & 0x3ff);
+ m_sc2_tilemap_2->set_scrolly(0, jm_scrollram[6] & 0x7ff);
+ m_sc2_tilemap_3->set_scrolly(0, jm_scrollram[6] & 0xfff);
- state->m_sc3_tilemap_0->set_scrolly(0, jm_scrollram[7] & 0xff);
+ m_sc3_tilemap_0->set_scrolly(0, jm_scrollram[7] & 0xff);
// empty
- state->m_sc3_tilemap_2->set_scrolly(0, jm_scrollram[7] & 0x1ff);
- state->m_sc3_tilemap_3->set_scrolly(0, jm_scrollram[7] & 0x3ff);
+ m_sc3_tilemap_2->set_scrolly(0, jm_scrollram[7] & 0x1ff);
+ m_sc3_tilemap_3->set_scrolly(0, jm_scrollram[7] & 0x3ff);
bitmap.fill(screen.machine().pens[0xff], cliprect); //selectable by a ram address?
for(cur_prin=1;cur_prin<=0x8;cur_prin<<=1)
{
- if(cur_prin==state->m_sc0_prin) { draw_sc0_layer(screen.machine(),bitmap,cliprect); }
- if(cur_prin==state->m_sc1_prin) { draw_sc1_layer(screen.machine(),bitmap,cliprect); }
- if(cur_prin==state->m_sc2_prin) { draw_sc2_layer(screen.machine(),bitmap,cliprect); }
- if(cur_prin==state->m_sc3_prin) { draw_sc3_layer(screen.machine(),bitmap,cliprect); }
+ if(cur_prin==m_sc0_prin) { draw_sc0_layer(screen.machine(),bitmap,cliprect); }
+ if(cur_prin==m_sc1_prin) { draw_sc1_layer(screen.machine(),bitmap,cliprect); }
+ if(cur_prin==m_sc2_prin) { draw_sc2_layer(screen.machine(),bitmap,cliprect); }
+ if(cur_prin==m_sc3_prin) { draw_sc3_layer(screen.machine(),bitmap,cliprect); }
}
return 0;
}
-static SCREEN_UPDATE_IND16( urashima )
+UINT32 jalmah_state::screen_update_urashima(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jalmah_state *state = screen.machine().driver_data<jalmah_state>();
- UINT16 *jm_scrollram = state->m_jm_scrollram;
+ UINT16 *jm_scrollram = m_jm_scrollram;
/*this game doesn't use the RANGE register at all.*/
- state->m_sc0_tilemap_0->set_scrollx(0, jm_scrollram[0]);
- state->m_sc3_tilemap_0->set_scrollx(0, jm_scrollram[3]);
- state->m_sc0_tilemap_0->set_scrolly(0, jm_scrollram[4]);
- state->m_sc3_tilemap_0->set_scrolly(0, jm_scrollram[7]);
+ m_sc0_tilemap_0->set_scrollx(0, jm_scrollram[0]);
+ m_sc3_tilemap_0->set_scrollx(0, jm_scrollram[3]);
+ m_sc0_tilemap_0->set_scrolly(0, jm_scrollram[4]);
+ m_sc3_tilemap_0->set_scrolly(0, jm_scrollram[7]);
bitmap.fill(screen.machine().pens[0x1ff], cliprect);//selectable by a ram address?
- if(state->m_jm_vregs[0] & 1) { state->m_sc0_tilemap_0->draw(bitmap, cliprect, 0,0); }
- if(state->m_jm_vregs[3] & 1) { state->m_sc3_tilemap_0->draw(bitmap, cliprect, 0,0); }
+ if(m_jm_vregs[0] & 1) { m_sc0_tilemap_0->draw(bitmap, cliprect, 0,0); }
+ if(m_jm_vregs[3] & 1) { m_sc3_tilemap_0->draw(bitmap, cliprect, 0,0); }
return 0;
}
@@ -1417,7 +1417,7 @@ static MACHINE_CONFIG_START( jalmah, jalmah_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jalmah)
+ MCFG_SCREEN_UPDATE_DRIVER(jalmah_state, screen_update_jalmah)
MCFG_PALETTE_LENGTH(0x400)
@@ -1438,7 +1438,7 @@ static MACHINE_CONFIG_DERIVED( urashima, jalmah )
MCFG_VIDEO_START_OVERRIDE(jalmah_state,urashima)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(urashima)
+ MCFG_SCREEN_UPDATE_DRIVER(jalmah_state, screen_update_urashima)
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/jangou.c b/src/mame/drivers/jangou.c
index b43f84508ce..8fc02ceb217 100644
--- a/src/mame/drivers/jangou.c
+++ b/src/mame/drivers/jangou.c
@@ -89,6 +89,7 @@ public:
DECLARE_MACHINE_RESET(jngolady);
DECLARE_MACHINE_START(common);
DECLARE_MACHINE_RESET(common);
+ UINT32 screen_update_jangou(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -145,14 +146,13 @@ void jangou_state::video_start()
save_item(NAME(m_blit_buffer));
}
-static SCREEN_UPDATE_IND16( jangou )
+UINT32 jangou_state::screen_update_jangou(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jangou_state *state = screen.machine().driver_data<jangou_state>();
int x, y;
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- UINT8 *src = &state->m_blit_buffer[y * 512 / 2 + cliprect.min_x];
+ UINT8 *src = &m_blit_buffer[y * 512 / 2 + cliprect.min_x];
UINT16 *dst = &bitmap.pix16(y, cliprect.min_x);
for (x = cliprect.min_x; x <= cliprect.max_x; x += 2)
@@ -1005,7 +1005,7 @@ static MACHINE_CONFIG_START( jangou, jangou_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(jangou)
+ MCFG_SCREEN_UPDATE_DRIVER(jangou_state, screen_update_jangou)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/jantotsu.c b/src/mame/drivers/jantotsu.c
index 242831d192b..3309e783a04 100644
--- a/src/mame/drivers/jantotsu.c
+++ b/src/mame/drivers/jantotsu.c
@@ -130,6 +130,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jantotsu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -145,14 +146,13 @@ void jantotsu_state::video_start()
save_item(NAME(m_bitmap));
}
-static SCREEN_UPDATE_RGB32(jantotsu)
+UINT32 jantotsu_state::screen_update_jantotsu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- jantotsu_state *state = screen.machine().driver_data<jantotsu_state>();
int x, y, i;
int count = 0;
UINT8 pen_i;
- if(!state->m_display_on)
+ if(!m_display_on)
return 0;
for (y = 0; y < 256; y++)
@@ -163,10 +163,10 @@ static SCREEN_UPDATE_RGB32(jantotsu)
for (i = 0; i < 8; i++)
{
- color = state->m_col_bank;
+ color = m_col_bank;
for(pen_i = 0;pen_i<4;pen_i++)
- color |= (((state->m_bitmap[count + pen_i*0x2000]) >> (7 - i)) & 1) << pen_i;
+ color |= (((m_bitmap[count + pen_i*0x2000]) >> (7 - i)) & 1) << pen_i;
if (cliprect.contains(x + i, y))
bitmap.pix32(y, x + i) = screen.machine().pens[color];
@@ -528,7 +528,7 @@ static MACHINE_CONFIG_START( jantotsu, jantotsu_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(jantotsu)
+ MCFG_SCREEN_UPDATE_DRIVER(jantotsu_state, screen_update_jantotsu)
MCFG_PALETTE_LENGTH(0x20)
diff --git a/src/mame/drivers/jchan.c b/src/mame/drivers/jchan.c
index 327405acd8d..2560e721ae7 100644
--- a/src/mame/drivers/jchan.c
+++ b/src/mame/drivers/jchan.c
@@ -224,6 +224,7 @@ public:
DECLARE_DRIVER_INIT(jchan);
virtual void video_start();
+ UINT32 screen_update_jchan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -295,9 +296,8 @@ void jchan_state::video_start()
-static SCREEN_UPDATE_IND16(jchan)
+UINT32 jchan_state::screen_update_jchan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jchan_state *state = screen.machine().driver_data<jchan_state>();
int x,y;
UINT16* src1;
UINT16* src2;
@@ -309,24 +309,24 @@ static SCREEN_UPDATE_IND16(jchan)
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_view2_0->kaneko16_prepare(bitmap, cliprect);
+ m_view2_0->kaneko16_prepare(bitmap, cliprect);
for ( int i = 0; i < 8; i++ )
{
- state->m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
+ m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
}
- state->m_sprite_bitmap_1->fill(0x0000, cliprect);
- state->m_sprite_bitmap_2->fill(0x0000, cliprect);
+ m_sprite_bitmap_1->fill(0x0000, cliprect);
+ m_sprite_bitmap_2->fill(0x0000, cliprect);
- state->m_spritegen1->skns_draw_sprites(screen.machine(), *state->m_sprite_bitmap_1, cliprect, state->m_sprite_ram32_1, 0x4000, screen.machine().root_device().memregion("gfx1")->base(), screen.machine().root_device().memregion ("gfx1")->bytes(), state->m_sprite_regs32_1 );
- state->m_spritegen2->skns_draw_sprites(screen.machine(), *state->m_sprite_bitmap_2, cliprect, state->m_sprite_ram32_2, 0x4000, screen.machine().root_device().memregion("gfx2")->base(), state->memregion ("gfx2")->bytes(), state->m_sprite_regs32_2 );
+ m_spritegen1->skns_draw_sprites(screen.machine(), *m_sprite_bitmap_1, cliprect, m_sprite_ram32_1, 0x4000, screen.machine().root_device().memregion("gfx1")->base(), screen.machine().root_device().memregion ("gfx1")->bytes(), m_sprite_regs32_1 );
+ m_spritegen2->skns_draw_sprites(screen.machine(), *m_sprite_bitmap_2, cliprect, m_sprite_ram32_2, 0x4000, screen.machine().root_device().memregion("gfx2")->base(), memregion ("gfx2")->bytes(), m_sprite_regs32_2 );
// ignoring priority bits for now - might use alpha too, check 0x8000 of palette writes
for (y=0;y<240;y++)
{
- src1 = &state->m_sprite_bitmap_1->pix16(y);
- src2 = &state->m_sprite_bitmap_2->pix16(y);
+ src1 = &m_sprite_bitmap_1->pix16(y);
+ src2 = &m_sprite_bitmap_2->pix16(y);
dst = &bitmap.pix16(y);
for (x=0;x<320;x++)
@@ -612,7 +612,7 @@ static MACHINE_CONFIG_START( jchan, jchan_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jchan)
+ MCFG_SCREEN_UPDATE_DRIVER(jchan_state, screen_update_jchan)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/jclub2.c b/src/mame/drivers/jclub2.c
index 5029616c5f4..97e7134c85b 100644
--- a/src/mame/drivers/jclub2.c
+++ b/src/mame/drivers/jclub2.c
@@ -143,6 +143,9 @@ public:
DECLARE_VIDEO_START(darkhors);
DECLARE_VIDEO_START(jclub2);
DECLARE_VIDEO_START(jclub2o);
+ UINT32 screen_update_darkhors(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_jclub2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_jclub2o(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -157,7 +160,7 @@ public:
***************************************************************************/
-static SCREEN_UPDATE_IND16( darkhors );
+
TILE_GET_INFO_MEMBER(darkhors_state::get_tile_info_0)
@@ -230,9 +233,8 @@ VIDEO_START_MEMBER(darkhors_state,darkhors)
machine().gfx[0]->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */
}
-static SCREEN_UPDATE_IND16( darkhors )
+UINT32 darkhors_state::screen_update_darkhors(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- darkhors_state *state = screen.machine().driver_data<darkhors_state>();
int layers_ctrl = -1;
#if DARKHORS_DEBUG
@@ -248,25 +250,25 @@ static SCREEN_UPDATE_IND16( darkhors )
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_tmap->set_scrollx(0, (state->m_tmapscroll[0] >> 16) - 5);
- state->m_tmap->set_scrolly(0, (state->m_tmapscroll[0] & 0xffff) - 0xff );
- if (layers_ctrl & 1) state->m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ m_tmap->set_scrollx(0, (m_tmapscroll[0] >> 16) - 5);
+ m_tmap->set_scrolly(0, (m_tmapscroll[0] & 0xffff) - 0xff );
+ if (layers_ctrl & 1) m_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- state->m_tmap2->set_scrollx(0, (state->m_tmapscroll2[0] >> 16) - 5);
- state->m_tmap2->set_scrolly(0, (state->m_tmapscroll2[0] & 0xffff) - 0xff );
- if (layers_ctrl & 2) state->m_tmap2->draw(bitmap, cliprect, 0, 0);
+ m_tmap2->set_scrollx(0, (m_tmapscroll2[0] >> 16) - 5);
+ m_tmap2->set_scrolly(0, (m_tmapscroll2[0] & 0xffff) - 0xff );
+ if (layers_ctrl & 2) m_tmap2->draw(bitmap, cliprect, 0, 0);
if (layers_ctrl & 4) draw_sprites(screen.machine(),bitmap,cliprect);
#if DARKHORS_DEBUG
#if 0
popmessage("%04X-%04X %04X-%04X %04X-%04X %04X-%04X %04X-%04X %04X-%04X",
- state->m_tmapscroll[0] >> 16, state->m_tmapscroll[0] & 0xffff,
- state->m_tmapscroll[1] >> 16, state->m_tmapscroll[1] & 0xffff,
- state->m_tmapscroll[2] >> 16, state->m_tmapscroll[2] & 0xffff,
- state->m_tmapscroll[3] >> 16, state->m_tmapscroll[3] & 0xffff,
- state->m_tmapscroll[4] >> 16, state->m_tmapscroll[4] & 0xffff,
- state->m_tmapscroll[5] >> 16, state->m_tmapscroll[5] & 0xffff
+ m_tmapscroll[0] >> 16, m_tmapscroll[0] & 0xffff,
+ m_tmapscroll[1] >> 16, m_tmapscroll[1] & 0xffff,
+ m_tmapscroll[2] >> 16, m_tmapscroll[2] & 0xffff,
+ m_tmapscroll[3] >> 16, m_tmapscroll[3] & 0xffff,
+ m_tmapscroll[4] >> 16, m_tmapscroll[4] & 0xffff,
+ m_tmapscroll[5] >> 16, m_tmapscroll[5] & 0xffff
);
#endif
#endif
@@ -698,7 +700,7 @@ static MACHINE_CONFIG_START( darkhors, darkhors_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x190, 0x100+16)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE_STATIC(darkhors)
+ MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_darkhors)
MCFG_GFXDECODE(darkhors)
MCFG_PALETTE_LENGTH(0x10000)
@@ -719,12 +721,11 @@ VIDEO_START_MEMBER(darkhors_state,jclub2)
}
-static SCREEN_UPDATE_IND16(jclub2)
+UINT32 darkhors_state::screen_update_jclub2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- darkhors_state *state = screen.machine().driver_data<darkhors_state>();
// this isn't an st0020..
- state->m_gdfs_st0020->st0020_draw_all(screen.machine(), bitmap, cliprect);
+ m_gdfs_st0020->st0020_draw_all(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -742,7 +743,7 @@ static MACHINE_CONFIG_START( jclub2, darkhors_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x190, 0x100+16)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE_STATIC(jclub2)
+ MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_jclub2)
// NOT an ST0020 but instead ST0032, ram format isn't compatible at least
MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0)
@@ -785,10 +786,9 @@ VIDEO_START_MEMBER(darkhors_state,jclub2o)
}
-static SCREEN_UPDATE_IND16(jclub2o)
+UINT32 darkhors_state::screen_update_jclub2o(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- darkhors_state *state = screen.machine().driver_data<darkhors_state>();
- state->m_gdfs_st0020->st0020_draw_all(screen.machine(), bitmap, cliprect);
+ m_gdfs_st0020->st0020_draw_all(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -810,7 +810,7 @@ static MACHINE_CONFIG_START( jclub2o, darkhors_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x190, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE_STATIC(jclub2o)
+ MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_jclub2o)
MCFG_PALETTE_LENGTH(0x10000)
MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0)
diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c
index 20d8329c0f8..75d80b157c1 100644
--- a/src/mame/drivers/jokrwild.c
+++ b/src/mame/drivers/jokrwild.c
@@ -117,6 +117,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jokrwild(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -160,10 +161,9 @@ void jokrwild_state::video_start()
}
-static SCREEN_UPDATE_IND16( jokrwild )
+UINT32 jokrwild_state::screen_update_jokrwild(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jokrwild_state *state = screen.machine().driver_data<jokrwild_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -493,7 +493,7 @@ static MACHINE_CONFIG_START( jokrwild, jokrwild_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) /* From MC6845, registers 00 & 04. (value-1) */
MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 26*8-1) /* From MC6845, registers 01 & 06 */
- MCFG_SCREEN_UPDATE_STATIC(jokrwild)
+ MCFG_SCREEN_UPDATE_DRIVER(jokrwild_state, screen_update_jokrwild)
MCFG_GFXDECODE(jokrwild)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/jollyjgr.c b/src/mame/drivers/jollyjgr.c
index 1856db7ae6e..fdd105ed7dd 100644
--- a/src/mame/drivers/jollyjgr.c
+++ b/src/mame/drivers/jollyjgr.c
@@ -139,6 +139,8 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jollyjgr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_fspider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -492,26 +494,25 @@ static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap )
}
}
-static SCREEN_UPDATE_IND16( jollyjgr )
+UINT32 jollyjgr_state::screen_update_jollyjgr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jollyjgr_state *state = screen.machine().driver_data<jollyjgr_state>();
- UINT8 *spriteram = state->m_spriteram;
+ UINT8 *spriteram = m_spriteram;
int offs;
bitmap.fill(32, cliprect);
- if(state->m_pri) //used in Frog & Spiders level 3
+ if(m_pri) //used in Frog & Spiders level 3
{
- if(!(state->m_bitmap_disable))
+ if(!(m_bitmap_disable))
draw_bitmap(screen.machine(), bitmap);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
}
else
{
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- if(!(state->m_bitmap_disable))
+ if(!(m_bitmap_disable))
draw_bitmap(screen.machine(), bitmap);
}
@@ -525,13 +526,13 @@ static SCREEN_UPDATE_IND16( jollyjgr )
int code = spriteram[offs + 1] & 0x3f;
int color = spriteram[offs + 2] & 7;
- if (state->m_flip_x)
+ if (m_flip_x)
{
sx = 240 - sx;
flipx = !flipx;
}
- if (state->m_flip_y)
+ if (m_flip_y)
flipy = !flipy;
else
sy = 240 - sy;
@@ -548,26 +549,25 @@ static SCREEN_UPDATE_IND16( jollyjgr )
return 0;
}
-static SCREEN_UPDATE_IND16( fspider )
+UINT32 jollyjgr_state::screen_update_fspider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jollyjgr_state *state = screen.machine().driver_data<jollyjgr_state>();
// Draw bg and sprites
- SCREEN_UPDATE16_CALL(jollyjgr);
+ SCREEN_UPDATE16_CALL_MEMBER(jollyjgr);
/* Draw bullets
16 bytes, 2 bytes per bullet (y,x). 2 player bullets, 6 enemy bullets.
Assume bullets to look the same as on Galaxian hw,
that is, simply 4 pixels. Colours are unknown. */
for (int offs=0;offs<0x10;offs+=2) {
- UINT8 sy=~state->m_bulletram[offs];
- UINT8 sx=~state->m_bulletram[offs|1];
+ UINT8 sy=~m_bulletram[offs];
+ UINT8 sx=~m_bulletram[offs|1];
UINT16 bc=(offs<4)?
32+7: // player, white
32+3; // enemy, yellow
- if (state->m_flip_y) sy^=0xff;
- if (state->m_flip_x) sx+=8;
+ if (m_flip_y) sy^=0xff;
+ if (m_flip_x) sx+=8;
if (sy>=cliprect.min_y && sy<=cliprect.max_y)
for (int x=sx-4;x<sx;x++)
@@ -663,7 +663,7 @@ static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jollyjgr)
+ MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_jollyjgr)
MCFG_GFXDECODE(jollyjgr)
MCFG_PALETTE_LENGTH(32+8) /* 32 for tilemap and sprites + 8 for the bitmap */
@@ -682,7 +682,7 @@ static MACHINE_CONFIG_DERIVED( fspider, jollyjgr )
MCFG_CPU_PROGRAM_MAP(fspider_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(fspider)
+ MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_fspider)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jongkyo.c b/src/mame/drivers/jongkyo.c
index bc34064580d..4e4678b44ce 100644
--- a/src/mame/drivers/jongkyo.c
+++ b/src/mame/drivers/jongkyo.c
@@ -58,6 +58,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jongkyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -72,9 +73,8 @@ void jongkyo_state::video_start()
}
-static SCREEN_UPDATE_IND16( jongkyo )
+UINT32 jongkyo_state::screen_update_jongkyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jongkyo_state *state = screen.machine().driver_data<jongkyo_state>();
int y;
for (y = 0; y < 256; ++y)
@@ -88,7 +88,7 @@ static SCREEN_UPDATE_IND16( jongkyo )
UINT8 data2;
UINT8 data3;
- // data3 = state->m_videoram2[x/4 + y*64]; // wrong
+ // data3 = m_videoram2[x/4 + y*64]; // wrong
// good mahjong tiles
data3 = 0x0f; // we're missing 2 bits.. there must be another piece of video ram somewhere or we can't use all the colours (6bpp).. banked somehow?
@@ -97,8 +97,8 @@ static SCREEN_UPDATE_IND16( jongkyo )
- data1 = state->m_videoram[0x4000 + x / 4 + y * 64];
- data2 = state->m_videoram[x / 4 + y * 64];
+ data1 = m_videoram[0x4000 + x / 4 + y * 64];
+ data2 = m_videoram[x / 4 + y * 64];
for (b = 0; b < 4; ++b)
{
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( jongkyo, jongkyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 256-8-1)
- MCFG_SCREEN_UPDATE_STATIC(jongkyo)
+ MCFG_SCREEN_UPDATE_DRIVER(jongkyo_state, screen_update_jongkyo)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c
index a1035e1f1b6..9c91bce3a11 100644
--- a/src/mame/drivers/jpmsys5.c
+++ b/src/mame/drivers/jpmsys5.c
@@ -103,6 +103,7 @@ public:
DECLARE_VIDEO_START(jpmsys5v);
DECLARE_MACHINE_START(jpmsys5);
DECLARE_MACHINE_RESET(jpmsys5);
+ UINT32 screen_update_jpmsys5v(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -223,7 +224,7 @@ VIDEO_START_MEMBER(jpmsys5_state,jpmsys5v)
tms34061_start(machine(), &tms34061intf);
}
-static SCREEN_UPDATE_RGB32( jpmsys5v )
+UINT32 jpmsys5_state::screen_update_jpmsys5v(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x, y;
struct tms34061_display state;
@@ -723,7 +724,7 @@ static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz / 4, 676, 20*4, 147*4, 256, 0, 254)
- MCFG_SCREEN_UPDATE_STATIC(jpmsys5v)
+ MCFG_SCREEN_UPDATE_DRIVER(jpmsys5_state, screen_update_jpmsys5v)
MCFG_VIDEO_START_OVERRIDE(jpmsys5_state,jpmsys5v)
diff --git a/src/mame/drivers/jrpacman.c b/src/mame/drivers/jrpacman.c
index d99673fb3b9..9392bca9f3d 100644
--- a/src/mame/drivers/jrpacman.c
+++ b/src/mame/drivers/jrpacman.c
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( jrpacman, jrpacman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pacman)
+ MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman)
MCFG_GFXDECODE(jrpacman)
MCFG_PALETTE_LENGTH(128*4)
diff --git a/src/mame/drivers/jubilee.c b/src/mame/drivers/jubilee.c
index b4937a846b4..bba2fd6cc89 100644
--- a/src/mame/drivers/jubilee.c
+++ b/src/mame/drivers/jubilee.c
@@ -104,6 +104,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jubileep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -134,10 +135,9 @@ void jubilee_state::video_start()
}
-static SCREEN_UPDATE_IND16( jubileep )
+UINT32 jubilee_state::screen_update_jubileep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- jubilee_state *state = screen.machine().driver_data<jubilee_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -425,7 +425,7 @@ static MACHINE_CONFIG_START( jubileep, jubilee_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jubileep)
+ MCFG_SCREEN_UPDATE_DRIVER(jubilee_state, screen_update_jubileep)
MCFG_GFXDECODE(jubileep)
diff --git a/src/mame/drivers/junofrst.c b/src/mame/drivers/junofrst.c
index c9186294c1d..e7f5911355d 100644
--- a/src/mame/drivers/junofrst.c
+++ b/src/mame/drivers/junofrst.c
@@ -451,7 +451,7 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* not sure about the visible area */
- MCFG_SCREEN_UPDATE_STATIC(tutankhm)
+ MCFG_SCREEN_UPDATE_DRIVER(junofrst_state, screen_update_tutankhm)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/kaneko16.c b/src/mame/drivers/kaneko16.c
index 926942eb965..8011d2a6777 100644
--- a/src/mame/drivers/kaneko16.c
+++ b/src/mame/drivers/kaneko16.c
@@ -1654,7 +1654,7 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(berlwall)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_berlwall)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048 + 32768) /* 32768 static colors for the bg */
@@ -1708,7 +1708,7 @@ static MACHINE_CONFIG_START( bakubrkr, kaneko16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(kaneko16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -1777,7 +1777,7 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -8)
- MCFG_SCREEN_UPDATE_STATIC(kaneko16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -1837,7 +1837,7 @@ static MACHINE_CONFIG_START( gtmr, kaneko16_gtmr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(kaneko16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE(1x8bit_2x4bit)
MCFG_PALETTE_LENGTH(32768)
@@ -1955,7 +1955,7 @@ static MACHINE_CONFIG_START( mgcrystl, kaneko16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(kaneko16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -2079,7 +2079,7 @@ static MACHINE_CONFIG_START( shogwarr, kaneko16_shogwarr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(40, 296-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(kaneko16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
diff --git a/src/mame/drivers/kangaroo.c b/src/mame/drivers/kangaroo.c
index 6c769c715ab..3521ed42d1f 100644
--- a/src/mame/drivers/kangaroo.c
+++ b/src/mame/drivers/kangaroo.c
@@ -441,7 +441,7 @@ static MACHINE_CONFIG_START( nomcu, kangaroo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 320*2, 0*2, 256*2, 260, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(kangaroo)
+ MCFG_SCREEN_UPDATE_DRIVER(kangaroo_state, screen_update_kangaroo)
/* sound hardware */
diff --git a/src/mame/drivers/karnov.c b/src/mame/drivers/karnov.c
index f8940b50377..d30a73c4476 100644
--- a/src/mame/drivers/karnov.c
+++ b/src/mame/drivers/karnov.c
@@ -820,7 +820,7 @@ static MACHINE_CONFIG_START( karnov, karnov_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(karnov)
+ MCFG_SCREEN_UPDATE_DRIVER(karnov_state, screen_update_karnov)
MCFG_GFXDECODE(karnov)
MCFG_PALETTE_LENGTH(1024)
@@ -861,7 +861,7 @@ static MACHINE_CONFIG_START( wndrplnt, karnov_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(karnov)
+ MCFG_SCREEN_UPDATE_DRIVER(karnov_state, screen_update_karnov)
MCFG_GFXDECODE(karnov)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/kchamp.c b/src/mame/drivers/kchamp.c
index 8016d090e52..61392ce8b66 100644
--- a/src/mame/drivers/kchamp.c
+++ b/src/mame/drivers/kchamp.c
@@ -430,7 +430,7 @@ static MACHINE_CONFIG_START( kchampvs, kchamp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kchampvs)
+ MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchampvs)
MCFG_GFXDECODE(kchamp)
MCFG_PALETTE_LENGTH(256)
@@ -477,7 +477,7 @@ static MACHINE_CONFIG_START( kchamp, kchamp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kchamp)
+ MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchamp)
MCFG_GFXDECODE(kchamp)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/kickgoal.c b/src/mame/drivers/kickgoal.c
index a6b47fdfdec..5fa5bd621b6 100644
--- a/src/mame/drivers/kickgoal.c
+++ b/src/mame/drivers/kickgoal.c
@@ -666,7 +666,7 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(9*8, 55*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kickgoal)
+ MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
MCFG_GFXDECODE(kickgoal)
MCFG_PALETTE_LENGTH(1024)
@@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(10*8+2, 54*8-1+2, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kickgoal)
+ MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
MCFG_GFXDECODE(actionhw)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c
index 90b88b2b288..fea27bdddd2 100644
--- a/src/mame/drivers/kingdrby.c
+++ b/src/mame/drivers/kingdrby.c
@@ -110,6 +110,7 @@ public:
virtual void video_start();
DECLARE_PALETTE_INIT(kingdrby);
DECLARE_PALETTE_INIT(kingdrbb);
+ UINT32 screen_update_kingdrby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -227,25 +228,24 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
}
-static SCREEN_UPDATE_IND16(kingdrby)
+UINT32 kingdrby_state::screen_update_kingdrby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- kingdrby_state *state = screen.machine().driver_data<kingdrby_state>();
const rectangle &visarea = screen.visible_area();
rectangle clip;
- state->m_sc0_tilemap->set_scrollx(0, state->m_vram[0x342]);
- state->m_sc0_tilemap->set_scrolly(0, state->m_vram[0x341]);
- state->m_sc1_tilemap->set_scrollx(0, state->m_vram[0x342]);
- state->m_sc1_tilemap->set_scrolly(0, state->m_vram[0x341]);
- state->m_sc0w_tilemap->set_scrolly(0, 32);
+ m_sc0_tilemap->set_scrollx(0, m_vram[0x342]);
+ m_sc0_tilemap->set_scrolly(0, m_vram[0x341]);
+ m_sc1_tilemap->set_scrollx(0, m_vram[0x342]);
+ m_sc1_tilemap->set_scrolly(0, m_vram[0x341]);
+ m_sc0w_tilemap->set_scrolly(0, 32);
/* maybe it needs two window tilemaps? (one at the top, the other at the bottom)*/
clip.set(visarea.min_x, 256, 192, visarea.max_y);
/*TILEMAP_DRAW_CATEGORY + TILEMAP_DRAW_OPAQUE doesn't suit well?*/
- state->m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(),bitmap,cliprect);
- state->m_sc1_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1),0);
- state->m_sc0w_tilemap->draw(bitmap, clip, 0,0);
+ m_sc1_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1),0);
+ m_sc0w_tilemap->draw(bitmap, clip, 0,0);
return 0;
}
@@ -1044,7 +1044,7 @@ static MACHINE_CONFIG_START( kingdrby, kingdrby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1) /* controlled by CRTC */
- MCFG_SCREEN_UPDATE_STATIC(kingdrby)
+ MCFG_SCREEN_UPDATE_DRIVER(kingdrby_state, screen_update_kingdrby)
MCFG_MC6845_ADD("crtc", MC6845, CLK_1/32, mc6845_intf) /* 53.333 Hz. guess */
diff --git a/src/mame/drivers/kingobox.c b/src/mame/drivers/kingobox.c
index f9d2b8c499a..f75951f2001 100644
--- a/src/mame/drivers/kingobox.c
+++ b/src/mame/drivers/kingobox.c
@@ -497,7 +497,7 @@ static MACHINE_CONFIG_START( kingofb, kingofb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kingofb)
+ MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_kingofb)
MCFG_GFXDECODE(kingobox)
MCFG_PALETTE_LENGTH(256+8*2)
@@ -547,7 +547,7 @@ static MACHINE_CONFIG_START( ringking, kingofb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ringking)
+ MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_ringking)
MCFG_GFXDECODE(rk)
MCFG_PALETTE_LENGTH(256+8*2)
diff --git a/src/mame/drivers/kinst.c b/src/mame/drivers/kinst.c
index 363e0af6ea2..ca40e2bc767 100644
--- a/src/mame/drivers/kinst.c
+++ b/src/mame/drivers/kinst.c
@@ -162,6 +162,7 @@ public:
DECLARE_DRIVER_INIT(kinst2);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_kinst(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -242,15 +243,14 @@ void kinst_state::machine_reset()
*
*************************************/
-static SCREEN_UPDATE_IND16( kinst )
+UINT32 kinst_state::screen_update_kinst(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- kinst_state *state = screen.machine().driver_data<kinst_state>();
int y;
/* loop over rows and copy to the destination */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- UINT32 *src = &state->m_video_base[640/4 * y];
+ UINT32 *src = &m_video_base[640/4 * y];
UINT16 *dest = &bitmap.pix16(y, cliprect.min_x);
int x;
@@ -688,7 +688,7 @@ static MACHINE_CONFIG_START( kinst, kinst_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(kinst)
+ MCFG_SCREEN_UPDATE_DRIVER(kinst_state, screen_update_kinst)
MCFG_PALETTE_INIT(BBBBB_GGGGG_RRRRR)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/klax.c b/src/mame/drivers/klax.c
index c2761bcda8e..a4b15f8c01b 100644
--- a/src/mame/drivers/klax.c
+++ b/src/mame/drivers/klax.c
@@ -184,7 +184,7 @@ static MACHINE_CONFIG_START( klax, klax_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(klax)
+ MCFG_SCREEN_UPDATE_DRIVER(klax_state, screen_update_klax)
MCFG_VIDEO_START_OVERRIDE(klax_state,klax)
diff --git a/src/mame/drivers/kncljoe.c b/src/mame/drivers/kncljoe.c
index d00b7297739..75d3081668d 100644
--- a/src/mame/drivers/kncljoe.c
+++ b/src/mame/drivers/kncljoe.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( kncljoe, kncljoe_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1500))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kncljoe)
+ MCFG_SCREEN_UPDATE_DRIVER(kncljoe_state, screen_update_kncljoe)
MCFG_GFXDECODE(kncljoe)
MCFG_PALETTE_LENGTH(16*8+16*8)
diff --git a/src/mame/drivers/koftball.c b/src/mame/drivers/koftball.c
index 854c753defa..def63f857c0 100644
--- a/src/mame/drivers/koftball.c
+++ b/src/mame/drivers/koftball.c
@@ -65,6 +65,7 @@ public:
TILE_GET_INFO_MEMBER(get_t1_tile_info);
TILE_GET_INFO_MEMBER(get_t2_tile_info);
virtual void video_start();
+ UINT32 screen_update_koftball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -96,11 +97,10 @@ void koftball_state::video_start()
m_tilemap_1->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( koftball )
+UINT32 koftball_state::screen_update_koftball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- koftball_state *state = screen.machine().driver_data<koftball_state>();
- state->m_tilemap_2->draw(bitmap, cliprect, 0, 0);
- state->m_tilemap_1->draw(bitmap, cliprect, 0, 0);
+ m_tilemap_2->draw(bitmap, cliprect, 0, 0);
+ m_tilemap_1->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -248,7 +248,7 @@ static MACHINE_CONFIG_START( koftball, koftball_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_STATIC(koftball)
+ MCFG_SCREEN_UPDATE_DRIVER(koftball_state, screen_update_koftball)
MCFG_GFXDECODE(koftball)
diff --git a/src/mame/drivers/koikoi.c b/src/mame/drivers/koikoi.c
index e372735ed5c..4ccb6495ae1 100644
--- a/src/mame/drivers/koikoi.c
+++ b/src/mame/drivers/koikoi.c
@@ -73,6 +73,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_koikoi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -142,10 +143,9 @@ void koikoi_state::video_start()
m_tmap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(koikoi_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16(koikoi)
+UINT32 koikoi_state::screen_update_koikoi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- koikoi_state *state = screen.machine().driver_data<koikoi_state>();
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -374,7 +374,7 @@ static MACHINE_CONFIG_START( koikoi, koikoi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(koikoi)
+ MCFG_SCREEN_UPDATE_DRIVER(koikoi_state, screen_update_koikoi)
MCFG_GFXDECODE(koikoi)
MCFG_PALETTE_LENGTH(8*32)
diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c
index 805b337d1f0..a5a3af18506 100644
--- a/src/mame/drivers/konamigx.c
+++ b/src/mame/drivers/konamigx.c
@@ -1789,7 +1789,7 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(konamigx)
+ MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx)
MCFG_PALETTE_LENGTH(8192)
@@ -1869,13 +1869,13 @@ static MACHINE_CONFIG_DERIVED( gxtype3, konamigx )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(576, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_STATIC(konamigx_left)
+ MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_left)
MCFG_SCREEN_ADD("screen2", RASTER)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
MCFG_SCREEN_SIZE(576, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_STATIC(konamigx_right)
+ MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
MCFG_GFXDECODE(type34)
MACHINE_CONFIG_END
@@ -1894,13 +1894,13 @@ static MACHINE_CONFIG_DERIVED( gxtype4, konamigx )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(128*8, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_STATIC(konamigx_left)
+ MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_left)
MCFG_SCREEN_ADD("screen2", RASTER)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
MCFG_SCREEN_SIZE(128*8, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE_STATIC(konamigx_right)
+ MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
MCFG_PALETTE_LENGTH(8192)
MCFG_GFXDECODE(type4)
diff --git a/src/mame/drivers/konamim2.c b/src/mame/drivers/konamim2.c
index 2ac302ff76b..1ffb7b14f33 100644
--- a/src/mame/drivers/konamim2.c
+++ b/src/mame/drivers/konamim2.c
@@ -249,6 +249,7 @@ public:
DECLARE_READ64_MEMBER(cpu_r);
DECLARE_DRIVER_INIT(m2);
virtual void video_start();
+ UINT32 screen_update_m2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -256,20 +257,19 @@ void konamim2_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( m2 )
+UINT32 konamim2_state::screen_update_m2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- konamim2_state *state = screen.machine().driver_data<konamim2_state>();
int i, j;
UINT32 fb_start = 0xffffffff;
- if (state->m_vdl0_address != 0)
+ if (m_vdl0_address != 0)
{
- fb_start = *(UINT32*)&state->m_main_ram[(state->m_vdl0_address - 0x40000000) / 8] - 0x40000000;
+ fb_start = *(UINT32*)&m_main_ram[(m_vdl0_address - 0x40000000) / 8] - 0x40000000;
}
if (fb_start <= 0x800000)
{
- UINT16 *frame = (UINT16*)&state->m_main_ram[fb_start/8];
+ UINT16 *frame = (UINT16*)&m_main_ram[fb_start/8];
for (j=0; j < 384; j++)
{
UINT16 *fb = &frame[(j*512)];
@@ -1184,7 +1184,7 @@ static MACHINE_CONFIG_START( m2, konamim2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(m2)
+ MCFG_SCREEN_UPDATE_DRIVER(konamim2_state, screen_update_m2)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
diff --git a/src/mame/drivers/kopunch.c b/src/mame/drivers/kopunch.c
index 80236f41a7e..77d0406858d 100644
--- a/src/mame/drivers/kopunch.c
+++ b/src/mame/drivers/kopunch.c
@@ -198,7 +198,7 @@ static MACHINE_CONFIG_START( kopunch, kopunch_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kopunch)
+ MCFG_SCREEN_UPDATE_DRIVER(kopunch_state, screen_update_kopunch)
MCFG_GFXDECODE(kopunch)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/ksayakyu.c b/src/mame/drivers/ksayakyu.c
index 9cbf278c570..d81dc1f4b25 100644
--- a/src/mame/drivers/ksayakyu.c
+++ b/src/mame/drivers/ksayakyu.c
@@ -286,7 +286,7 @@ static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ksayakyu)
+ MCFG_SCREEN_UPDATE_DRIVER(ksayakyu_state, screen_update_ksayakyu)
MCFG_GFXDECODE(ksayakyu)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/kyugo.c b/src/mame/drivers/kyugo.c
index f48f01f1fb8..c8457607dac 100644
--- a/src/mame/drivers/kyugo.c
+++ b/src/mame/drivers/kyugo.c
@@ -554,7 +554,7 @@ static MACHINE_CONFIG_START( gyrodine, kyugo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kyugo)
+ MCFG_SCREEN_UPDATE_DRIVER(kyugo_state, screen_update_kyugo)
MCFG_GFXDECODE(kyugo)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/labyrunr.c b/src/mame/drivers/labyrunr.c
index a6d35b2b019..bc4e5c3f79b 100644
--- a/src/mame/drivers/labyrunr.c
+++ b/src/mame/drivers/labyrunr.c
@@ -207,7 +207,7 @@ static MACHINE_CONFIG_START( labyrunr, labyrunr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(labyrunr)
+ MCFG_SCREEN_UPDATE_DRIVER(labyrunr_state, screen_update_labyrunr)
MCFG_GFXDECODE(labyrunr)
MCFG_PALETTE_LENGTH(2*8*16*16)
diff --git a/src/mame/drivers/ladybug.c b/src/mame/drivers/ladybug.c
index a74202be6ef..ee008730c58 100644
--- a/src/mame/drivers/ladybug.c
+++ b/src/mame/drivers/ladybug.c
@@ -788,7 +788,7 @@ static MACHINE_CONFIG_START( ladybug, ladybug_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ladybug)
+ MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_ladybug)
MCFG_GFXDECODE(ladybug)
MCFG_PALETTE_LENGTH(4*8+4*16)
@@ -830,8 +830,8 @@ static MACHINE_CONFIG_START( sraider, ladybug_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sraider)
- MCFG_SCREEN_VBLANK_STATIC(sraider)
+ MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_sraider)
+ MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_sraider)
MCFG_GFXDECODE(sraider)
MCFG_PALETTE_LENGTH(4*8+4*16+32+2)
diff --git a/src/mame/drivers/ladyfrog.c b/src/mame/drivers/ladyfrog.c
index 6d461e670bb..ad8b1a209e8 100644
--- a/src/mame/drivers/ladyfrog.c
+++ b/src/mame/drivers/ladyfrog.c
@@ -321,7 +321,7 @@ static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 29*8-1) // black borders in ladyfrog gameplay are correct
- MCFG_SCREEN_UPDATE_STATIC(ladyfrog)
+ MCFG_SCREEN_UPDATE_DRIVER(ladyfrog_state, screen_update_ladyfrog)
MCFG_GFXDECODE(ladyfrog)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/laserbas.c b/src/mame/drivers/laserbas.c
index 8baf285bcb4..5b9fa6c248a 100644
--- a/src/mame/drivers/laserbas.c
+++ b/src/mame/drivers/laserbas.c
@@ -59,6 +59,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_laserbas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -69,23 +70,22 @@ void laserbas_state::video_start()
save_item(NAME(m_vram2));
}
-static SCREEN_UPDATE_IND16(laserbas)
+UINT32 laserbas_state::screen_update_laserbas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- laserbas_state *state = screen.machine().driver_data<laserbas_state>();
int x, y;
for (y = 0; y < 256; y++)
for(x = 0; x < 128; x++)
{
- if (state->m_vram2[y * 128 + x] & 0xf)
- bitmap.pix16(y, x * 2) = (state->m_vram2[y * 128 + x] & 0xf);
+ if (m_vram2[y * 128 + x] & 0xf)
+ bitmap.pix16(y, x * 2) = (m_vram2[y * 128 + x] & 0xf);
else
- bitmap.pix16(y, x * 2) = (state->m_vram1[y * 128 + x] & 0xf) + 16;
+ bitmap.pix16(y, x * 2) = (m_vram1[y * 128 + x] & 0xf) + 16;
- if (state->m_vram2[y * 128 + x] >> 4)
- bitmap.pix16(y, x * 2 + 1) = (state->m_vram2[y * 128 + x] >> 4);
+ if (m_vram2[y * 128 + x] >> 4)
+ bitmap.pix16(y, x * 2 + 1) = (m_vram2[y * 128 + x] >> 4);
else
- bitmap.pix16(y, x * 2 + 1) = (state->m_vram1[y * 128 + x] >> 4) + 16;
+ bitmap.pix16(y, x * 2 + 1) = (m_vram1[y * 128 + x] >> 4) + 16;
}
return 0;
}
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( laserbas, laserbas_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(laserbas)
+ MCFG_SCREEN_UPDATE_DRIVER(laserbas_state, screen_update_laserbas)
MCFG_MC6845_ADD("crtc", H46505, 3000000/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
diff --git a/src/mame/drivers/laserbat.c b/src/mame/drivers/laserbat.c
index 3fae707fc50..e06ef5b3b1b 100644
--- a/src/mame/drivers/laserbat.c
+++ b/src/mame/drivers/laserbat.c
@@ -494,17 +494,16 @@ void laserbat_state::video_start()
save_item(NAME(m_colorram));
}
-static SCREEN_UPDATE_IND16( laserbat )
+UINT32 laserbat_state::screen_update_laserbat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- laserbat_state *state = screen.machine().driver_data<laserbat_state>();
int y;
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
/* update the S2636 chips */
- bitmap_ind16 &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
- bitmap_ind16 &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
- bitmap_ind16 &s2636_3_bitmap = s2636_update(state->m_s2636_3, cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(m_s2636_1, cliprect);
+ bitmap_ind16 &s2636_2_bitmap = s2636_update(m_s2636_2, cliprect);
+ bitmap_ind16 &s2636_3_bitmap = s2636_update(m_s2636_3, cliprect);
/* copy the S2636 images into the main bitmap */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -528,12 +527,12 @@ static SCREEN_UPDATE_IND16( laserbat )
}
}
- if (state->m_sprite_enable)
+ if (m_sprite_enable)
drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[1],
- state->m_sprite_code,
- state->m_sprite_color,
+ m_sprite_code,
+ m_sprite_color,
0,0,
- state->m_sprite_x - 6,state->m_sprite_y,0);
+ m_sprite_x - 6,m_sprite_y,0);
return 0;
}
@@ -760,7 +759,7 @@ static MACHINE_CONFIG_START( laserbat, laserbat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(laserbat)
+ MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
MCFG_GFXDECODE(laserbat)
MCFG_PALETTE_LENGTH(1024)
@@ -804,7 +803,7 @@ static MACHINE_CONFIG_START( catnmous, laserbat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(laserbat)
+ MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
MCFG_GFXDECODE(laserbat)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lasso.c b/src/mame/drivers/lasso.c
index 802145af66e..34837f7ca58 100644
--- a/src/mame/drivers/lasso.c
+++ b/src/mame/drivers/lasso.c
@@ -525,7 +525,7 @@ static MACHINE_CONFIG_START( base, lasso_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lasso)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_lasso)
MCFG_GFXDECODE(lasso)
MCFG_PALETTE_LENGTH(0x40)
@@ -562,7 +562,7 @@ static MACHINE_CONFIG_DERIVED( chameleo, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(chameleo)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_chameleo)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wwjgtin, base )
@@ -580,7 +580,7 @@ static MACHINE_CONFIG_DERIVED( wwjgtin, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1) // Smaller visible area?
- MCFG_SCREEN_UPDATE_STATIC(wwjgtin)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_wwjgtin)
MCFG_GFXDECODE(wwjgtin) // Has 1 additional layer
MCFG_PALETTE_LENGTH(0x40 + 16*16)
@@ -609,7 +609,7 @@ static MACHINE_CONFIG_DERIVED( pinbo, base )
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
MCFG_VIDEO_START_OVERRIDE(lasso_state,pinbo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(chameleo)
+ MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_chameleo)
/* sound hardware */
MCFG_DEVICE_REMOVE("sn76489.1")
diff --git a/src/mame/drivers/lastduel.c b/src/mame/drivers/lastduel.c
index bd5d35aa1d2..012e3a25cdf 100644
--- a/src/mame/drivers/lastduel.c
+++ b/src/mame/drivers/lastduel.c
@@ -516,7 +516,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(lastduel)
+ MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_lastduel)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -559,7 +559,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(madgear)
+ MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_madgear)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c
index f8551b30612..37187ca34e2 100644
--- a/src/mame/drivers/lastfght.c
+++ b/src/mame/drivers/lastfght.c
@@ -124,6 +124,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_lastfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -143,9 +144,8 @@ void lastfght_state::video_start()
}
-static SCREEN_UPDATE_IND16( lastfght )
+UINT32 lastfght_state::screen_update_lastfght(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- lastfght_state *state = screen.machine().driver_data<lastfght_state>();
#ifdef MAME_DEBUG
#if 1
@@ -154,14 +154,14 @@ static SCREEN_UPDATE_IND16( lastfght )
UINT8 *gfxdata = screen.machine().root_device().memregion("gfx1")->base();
UINT8 data;
- if (screen.machine().input().code_pressed_once(KEYCODE_ENTER)) state->m_view_roms ^= 1;
- if (state->m_view_roms)
+ if (screen.machine().input().code_pressed_once(KEYCODE_ENTER)) m_view_roms ^= 1;
+ if (m_view_roms)
{
- if (screen.machine().input().code_pressed_once(KEYCODE_PGDN)) state->m_base += 512 * 256;
- if (screen.machine().input().code_pressed_once(KEYCODE_PGUP)) state->m_base -= 512 * 256;
- state->m_base %= state->memregion("gfx1")->bytes();
+ if (screen.machine().input().code_pressed_once(KEYCODE_PGDN)) m_base += 512 * 256;
+ if (screen.machine().input().code_pressed_once(KEYCODE_PGUP)) m_base -= 512 * 256;
+ m_base %= memregion("gfx1")->bytes();
- count = state->m_base;
+ count = m_base;
bitmap.fill(get_black_pen(screen.machine()), cliprect );
for (y = 0 ; y < 256; y++)
@@ -173,13 +173,13 @@ static SCREEN_UPDATE_IND16( lastfght )
count++;
}
}
- popmessage("%x", state->m_base);
+ popmessage("%x", m_base);
return 0;
}
#endif
#endif
- copybitmap(bitmap, state->m_bitmap[state->m_dest ^ 1], 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_bitmap[m_dest ^ 1], 0, 0, 0, 0, cliprect);
return 0;
}
@@ -594,7 +594,7 @@ static MACHINE_CONFIG_START( lastfght, lastfght_state )
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 60 )
- MCFG_SCREEN_UPDATE_STATIC( lastfght )
+ MCFG_SCREEN_UPDATE_DRIVER(lastfght_state, screen_update_lastfght)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lazercmd.c b/src/mame/drivers/lazercmd.c
index 7801f863e13..edd3f7a9a8e 100644
--- a/src/mame/drivers/lazercmd.c
+++ b/src/mame/drivers/lazercmd.c
@@ -645,7 +645,7 @@ static MACHINE_CONFIG_START( lazercmd, lazercmd_state )
MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR + 16)
MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1,
0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1)
- MCFG_SCREEN_UPDATE_STATIC(lazercmd)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
@@ -679,7 +679,7 @@ static MACHINE_CONFIG_START( medlanes, lazercmd_state )
MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR)
MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1,
0 * VERT_CHR, VERT_RES * VERT_CHR - 1)
- MCFG_SCREEN_UPDATE_STATIC(lazercmd)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
@@ -713,7 +713,7 @@ static MACHINE_CONFIG_START( bbonk, lazercmd_state )
MCFG_SCREEN_SIZE(HORZ_RES * HORZ_CHR, VERT_RES * VERT_CHR)
MCFG_SCREEN_VISIBLE_AREA(0 * HORZ_CHR, HORZ_RES * HORZ_CHR - 1,
0 * VERT_CHR, (VERT_RES - 1) * VERT_CHR - 1)
- MCFG_SCREEN_UPDATE_STATIC(lazercmd)
+ MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c
index c8e95a71ed6..ee6ac48a841 100644
--- a/src/mame/drivers/legionna.c
+++ b/src/mame/drivers/legionna.c
@@ -1064,7 +1064,7 @@ static MACHINE_CONFIG_START( legionna, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(36*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(legionna)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_legionna)
MCFG_GFXDECODE(legionna)
MCFG_PALETTE_LENGTH(128*16)
@@ -1094,7 +1094,7 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(36*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(legionna)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_legionna)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1123,7 +1123,7 @@ static MACHINE_CONFIG_START( godzilla, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(42*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(godzilla)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_godzilla)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1152,7 +1152,7 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state )
MCFG_SCREEN_REFRESH_RATE(61)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(godzilla)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_godzilla)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1181,7 +1181,7 @@ static MACHINE_CONFIG_START( grainbow, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(64*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(grainbow)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE(grainbow)
MCFG_PALETTE_LENGTH(128*16)
@@ -1211,7 +1211,7 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(42*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(grainbow)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE(cupsoc)
MCFG_PALETTE_LENGTH(128*16)
@@ -1249,7 +1249,7 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(42*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(grainbow)
+ MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE(heatbrl_csb)
MCFG_PALETTE_LENGTH(128*16)
diff --git a/src/mame/drivers/lemmings.c b/src/mame/drivers/lemmings.c
index 7e232c81851..726cec65fa2 100644
--- a/src/mame/drivers/lemmings.c
+++ b/src/mame/drivers/lemmings.c
@@ -278,8 +278,8 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lemmings)
- MCFG_SCREEN_VBLANK_STATIC(lemmings)
+ MCFG_SCREEN_UPDATE_DRIVER(lemmings_state, screen_update_lemmings)
+ MCFG_SCREEN_VBLANK_DRIVER(lemmings_state, screen_eof_lemmings)
MCFG_GFXDECODE(lemmings)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c
index 17b2dc83ee2..97ae7c16c1b 100644
--- a/src/mame/drivers/lethal.c
+++ b/src/mame/drivers/lethal.c
@@ -663,7 +663,7 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(216, 504-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(lethalen)
+ MCFG_SCREEN_UPDATE_DRIVER(lethal_state, screen_update_lethalen)
MCFG_PALETTE_LENGTH(7168+1)
diff --git a/src/mame/drivers/lgp.c b/src/mame/drivers/lgp.c
index 0038743c816..3120cc39e8d 100644
--- a/src/mame/drivers/lgp.c
+++ b/src/mame/drivers/lgp.c
@@ -86,6 +86,7 @@ public:
DECLARE_WRITE8_MEMBER(ldp_write);
DECLARE_DRIVER_INIT(lgp);
virtual void machine_start();
+ UINT32 screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -95,9 +96,8 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE_RGB32( lgp )
+UINT32 lgp_state::screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- lgp_state *state = screen.machine().driver_data<lgp_state>();
int charx, chary;
/* make color 0 transparent */
@@ -116,7 +116,7 @@ static SCREEN_UPDATE_RGB32( lgp )
/* Somewhere there's a flag that offsets the tilemap by 0x100*x */
/* Palette is likely set somewhere as well (tile_control_ram?) */
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0],
- state->m_tile_ram[current_screen_character],
+ m_tile_ram[current_screen_character],
0,
0, 0, charx*8, chary*8, 0);
}
@@ -369,7 +369,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, lgp)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, lgp_state, screen_update_lgp)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c
index a9de6e18a60..c06e73b6138 100644
--- a/src/mame/drivers/liberate.c
+++ b/src/mame/drivers/liberate.c
@@ -840,7 +840,7 @@ static MACHINE_CONFIG_START( liberate, liberate_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 529ms Vblank duration?? */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(liberate)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_liberate)
MCFG_GFXDECODE(liberate)
MCFG_PALETTE_LENGTH(33)
@@ -870,7 +870,7 @@ static MACHINE_CONFIG_DERIVED( boomrang, liberate )
MCFG_VIDEO_START_OVERRIDE(liberate_state,boomrang)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(boomrang)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_boomrang)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( prosoccr, liberate )
@@ -889,7 +889,7 @@ static MACHINE_CONFIG_DERIVED( prosoccr, liberate )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(prosoccr)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_prosoccr)
MCFG_GFXDECODE(prosoccr)
@@ -919,7 +919,7 @@ static MACHINE_CONFIG_START( prosport, liberate_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1529) /* 529ms Vblank duration?? */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(prosport)
+ MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_prosport)
MCFG_GFXDECODE(prosport)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/limenko.c b/src/mame/drivers/limenko.c
index b34c6ae5368..fe0450ed95e 100644
--- a/src/mame/drivers/limenko.c
+++ b/src/mame/drivers/limenko.c
@@ -87,6 +87,7 @@ public:
TILE_GET_INFO_MEMBER(get_md_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
+ UINT32 screen_update_limenko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -514,31 +515,30 @@ void limenko_state::video_start()
m_sprites_bitmap_pri.allocate(384,240);
}
-static SCREEN_UPDATE_IND16( limenko )
+UINT32 limenko_state::screen_update_limenko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- limenko_state *state = screen.machine().driver_data<limenko_state>();
- // state->m_videoreg[4] ???? It always has this value: 0xffeffff8 (2 signed bytes? values: -17 and -8 ?)
+ // m_videoreg[4] ???? It always has this value: 0xffeffff8 (2 signed bytes? values: -17 and -8 ?)
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_bg_tilemap->enable(state->m_videoreg[0] & 4);
- state->m_md_tilemap->enable(state->m_videoreg[0] & 2);
- state->m_fg_tilemap->enable(state->m_videoreg[0] & 1);
+ m_bg_tilemap->enable(m_videoreg[0] & 4);
+ m_md_tilemap->enable(m_videoreg[0] & 2);
+ m_fg_tilemap->enable(m_videoreg[0] & 1);
- state->m_bg_tilemap->set_scrolly(0, state->m_videoreg[3] & 0xffff);
- state->m_md_tilemap->set_scrolly(0, state->m_videoreg[2] & 0xffff);
- state->m_fg_tilemap->set_scrolly(0, state->m_videoreg[1] & 0xffff);
+ m_bg_tilemap->set_scrolly(0, m_videoreg[3] & 0xffff);
+ m_md_tilemap->set_scrolly(0, m_videoreg[2] & 0xffff);
+ m_fg_tilemap->set_scrolly(0, m_videoreg[1] & 0xffff);
- state->m_bg_tilemap->set_scrollx(0, (state->m_videoreg[3] & 0xffff0000) >> 16);
- state->m_md_tilemap->set_scrollx(0, (state->m_videoreg[2] & 0xffff0000) >> 16);
- state->m_fg_tilemap->set_scrollx(0, (state->m_videoreg[1] & 0xffff0000) >> 16);
+ m_bg_tilemap->set_scrollx(0, (m_videoreg[3] & 0xffff0000) >> 16);
+ m_md_tilemap->set_scrollx(0, (m_videoreg[2] & 0xffff0000) >> 16);
+ m_fg_tilemap->set_scrollx(0, (m_videoreg[1] & 0xffff0000) >> 16);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_md_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,1);
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_md_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,1);
- if(state->m_videoreg[0] & 8)
- copy_sprites(screen.machine(), bitmap, state->m_sprites_bitmap, screen.machine().priority_bitmap, cliprect);
+ if(m_videoreg[0] & 8)
+ copy_sprites(screen.machine(), bitmap, m_sprites_bitmap, screen.machine().priority_bitmap, cliprect);
return 0;
}
@@ -762,7 +762,7 @@ static MACHINE_CONFIG_START( limenko, limenko_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(limenko)
+ MCFG_SCREEN_UPDATE_DRIVER(limenko_state, screen_update_limenko)
MCFG_GFXDECODE(limenko)
MCFG_PALETTE_LENGTH(0x1000)
@@ -793,7 +793,7 @@ static MACHINE_CONFIG_START( spotty, limenko_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(limenko)
+ MCFG_SCREEN_UPDATE_DRIVER(limenko_state, screen_update_limenko)
MCFG_GFXDECODE(limenko)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/littlerb.c b/src/mame/drivers/littlerb.c
index e979073bed0..1affc514c4b 100644
--- a/src/mame/drivers/littlerb.c
+++ b/src/mame/drivers/littlerb.c
@@ -202,6 +202,7 @@ public:
// edfc / fffc alternating (display double buffering?)
}
virtual void video_start();
+ UINT32 screen_update_littlerb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -554,13 +555,12 @@ INPUT_PORTS_END
/* sprite format / offset could be completely wrong, this is just based on our (currently incorrect) vram access */
-static SCREEN_UPDATE_IND16(littlerb)
+UINT32 littlerb_state::screen_update_littlerb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- littlerb_state *state = screen.machine().driver_data<littlerb_state>();
bitmap.fill(0, cliprect);
- copybitmap_trans(bitmap, *state->m_temp_bitmap_sprites_back, 0, 0, 0, 0, cliprect, 0);
- copybitmap_trans(bitmap, *state->m_temp_bitmap_sprites, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, *m_temp_bitmap_sprites_back, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, *m_temp_bitmap_sprites, 0, 0, 0, 0, cliprect, 0);
return 0;
}
@@ -834,7 +834,7 @@ static MACHINE_CONFIG_START( littlerb, littlerb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(512+22, 312)
MCFG_SCREEN_VISIBLE_AREA(0*8, 336-1, 0*8, 288-1)
- MCFG_SCREEN_UPDATE_STATIC(littlerb)
+ MCFG_SCREEN_UPDATE_DRIVER(littlerb_state, screen_update_littlerb)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/lkage.c b/src/mame/drivers/lkage.c
index 9881ce4e182..9a6c9a6f371 100644
--- a/src/mame/drivers/lkage.c
+++ b/src/mame/drivers/lkage.c
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lkage)
+ MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage)
MCFG_GFXDECODE(lkage)
MCFG_PALETTE_LENGTH(1024)
@@ -615,7 +615,7 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lkage)
+ MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage)
MCFG_GFXDECODE(lkage)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lockon.c b/src/mame/drivers/lockon.c
index e077e9de258..c0c633ac51a 100644
--- a/src/mame/drivers/lockon.c
+++ b/src/mame/drivers/lockon.c
@@ -527,8 +527,8 @@ static MACHINE_CONFIG_START( lockon, lockon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(lockon)
- MCFG_SCREEN_VBLANK_STATIC(lockon)
+ MCFG_SCREEN_UPDATE_DRIVER(lockon_state, screen_update_lockon)
+ MCFG_SCREEN_VBLANK_DRIVER(lockon_state, screen_eof_lockon)
MCFG_GFXDECODE(lockon)
MCFG_PALETTE_LENGTH(1024 + 2048)
diff --git a/src/mame/drivers/looping.c b/src/mame/drivers/looping.c
index 2b8d8a7a0bc..3b243aa4779 100644
--- a/src/mame/drivers/looping.c
+++ b/src/mame/drivers/looping.c
@@ -142,6 +142,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_looping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -303,10 +304,9 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
-static SCREEN_UPDATE_IND16( looping )
+UINT32 looping_state::screen_update_looping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- looping_state *state = screen.machine().driver_data<looping_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
@@ -658,7 +658,7 @@ static MACHINE_CONFIG_START( looping, looping_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(looping)
+ MCFG_SCREEN_UPDATE_DRIVER(looping_state, screen_update_looping)
MCFG_GFXDECODE(looping)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/lordgun.c b/src/mame/drivers/lordgun.c
index 3f7be61a8aa..0e6a11fb197 100644
--- a/src/mame/drivers/lordgun.c
+++ b/src/mame/drivers/lordgun.c
@@ -673,7 +673,7 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0,0x1c0-1, 0,0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(lordgun)
+ MCFG_SCREEN_UPDATE_DRIVER(lordgun_state, screen_update_lordgun)
MCFG_GFXDECODE(lordgun)
MCFG_PALETTE_LENGTH(0x800 * 8) // 0x800 real colors, repeated per priority level
@@ -715,7 +715,7 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0,0x1c0-1, 0,0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(lordgun)
+ MCFG_SCREEN_UPDATE_DRIVER(lordgun_state, screen_update_lordgun)
MCFG_GFXDECODE(lordgun)
MCFG_PALETTE_LENGTH(0x800 * 8) // 0x800 real colors, repeated per priority level
diff --git a/src/mame/drivers/lsasquad.c b/src/mame/drivers/lsasquad.c
index 22c2fd533cf..2151bfd40a9 100644
--- a/src/mame/drivers/lsasquad.c
+++ b/src/mame/drivers/lsasquad.c
@@ -640,7 +640,7 @@ static MACHINE_CONFIG_START( lsasquad, lsasquad_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lsasquad)
+ MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_lsasquad)
MCFG_GFXDECODE(lsasquad)
MCFG_PALETTE_LENGTH(512)
@@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
- MCFG_SCREEN_UPDATE_STATIC(daikaiju)
+ MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_daikaiju)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ltcasino.c b/src/mame/drivers/ltcasino.c
index 4652fdce808..3414288b273 100644
--- a/src/mame/drivers/ltcasino.c
+++ b/src/mame/drivers/ltcasino.c
@@ -34,6 +34,7 @@ public:
DECLARE_DRIVER_INIT(mv4in1);
TILE_GET_INFO_MEMBER(get_ltcasino_tile_info);
virtual void video_start();
+ UINT32 screen_update_ltcasino(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -635,10 +636,9 @@ static GFXDECODE_START( ltcasino )
GFXDECODE_END
-static SCREEN_UPDATE_IND16(ltcasino)
+UINT32 ltcasino_state::screen_update_ltcasino(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ltcasino_state *state = screen.machine().driver_data<ltcasino_state>();
- state->m_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -655,7 +655,7 @@ static MACHINE_CONFIG_START( ltcasino, ltcasino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(6*8, 58*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ltcasino)
+ MCFG_SCREEN_UPDATE_DRIVER(ltcasino_state, screen_update_ltcasino)
MCFG_GFXDECODE(ltcasino)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c
index b2407a07c38..3069cb477be 100644
--- a/src/mame/drivers/luckgrln.c
+++ b/src/mame/drivers/luckgrln.c
@@ -150,6 +150,7 @@ public:
TILE_GET_INFO_MEMBER(get_luckgrln_reel3_tile_info);
TILE_GET_INFO_MEMBER(get_luckgrln_reel4_tile_info);
virtual void video_start();
+ UINT32 screen_update_luckgrln(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -287,9 +288,8 @@ void luckgrln_state::video_start()
m_reel4_tilemap->set_transparent_pen(0 );
}
-static SCREEN_UPDATE_IND16(luckgrln)
+UINT32 luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- luckgrln_state *state = screen.machine().driver_data<luckgrln_state>();
int y,x;
int count = 0;
const rectangle &visarea = screen.visible_area();
@@ -301,10 +301,10 @@ static SCREEN_UPDATE_IND16(luckgrln)
for (i= 0;i < 64;i++)
{
- state->m_reel1_tilemap->set_scrolly(i, state->m_reel1_scroll[i]);
- state->m_reel2_tilemap->set_scrolly(i, state->m_reel2_scroll[i]);
- state->m_reel3_tilemap->set_scrolly(i, state->m_reel3_scroll[i]);
- state->m_reel4_tilemap->set_scrolly(i, state->m_reel4_scroll[i]);
+ m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]);
+ m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i]);
+ m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i]);
+ m_reel4_tilemap->set_scrolly(i, m_reel4_scroll[i]);
}
@@ -318,9 +318,9 @@ static SCREEN_UPDATE_IND16(luckgrln)
for (x=0;x<64;x++)
{
- UINT16 tile = (state->m_luck_vram1[count] & 0xff);
- UINT16 tile_high = (state->m_luck_vram2[count]);
- UINT16 tileattr = (state->m_luck_vram3[count]);
+ UINT16 tile = (m_luck_vram1[count] & 0xff);
+ UINT16 tile_high = (m_luck_vram2[count]);
+ UINT16 tileattr = (m_luck_vram3[count]);
UINT8 col = 0;
UINT8 region = 0;
UINT8 bgenable;
@@ -332,8 +332,8 @@ static SCREEN_UPDATE_IND16(luckgrln)
if (clip.max_x>visarea.max_x) clip.max_x = visarea.max_x;
/*
- state->m_luck_vram1 tttt tttt (t = low tile bits)
- state->m_luck_vram2 tttt ppp? (t = high tile bits) (p = pal select)?
+ m_luck_vram1 tttt tttt (t = low tile bits)
+ m_luck_vram2 tttt ppp? (t = high tile bits) (p = pal select)?
*/
@@ -344,7 +344,7 @@ static SCREEN_UPDATE_IND16(luckgrln)
// ?? low bit is used too
col = tile_high&0xf;
- // --ss fbt- state->m_luck_vram3
+ // --ss fbt- m_luck_vram3
// - = unused?
// s = reel layer select for this 8x8 region
// f = fg enabled for this 8x8 region (or priority?)
@@ -356,10 +356,10 @@ static SCREEN_UPDATE_IND16(luckgrln)
#if 0 // treat bit as fg enable
if (tileattr&0x04)
{
- if (bgenable==0) state->m_reel1_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==1) state->m_reel2_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==2) state->m_reel3_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==3) state->m_reel4_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==0) m_reel1_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==1) m_reel2_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==2) m_reel3_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==3) m_reel4_tilemap->draw(bitmap, clip, 0, 0);
}
if (tileattr&0x08) drawgfx_transpen(bitmap,clip,screen.machine().gfx[region],tile,col,0,0,x*8,y*8, 0);
@@ -369,10 +369,10 @@ static SCREEN_UPDATE_IND16(luckgrln)
if (tileattr&0x04)
{
- if (bgenable==0) state->m_reel1_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==1) state->m_reel2_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==2) state->m_reel3_tilemap->draw(bitmap, clip, 0, 0);
- if (bgenable==3) state->m_reel4_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==0) m_reel1_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==1) m_reel2_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==2) m_reel3_tilemap->draw(bitmap, clip, 0, 0);
+ if (bgenable==3) m_reel4_tilemap->draw(bitmap, clip, 0, 0);
}
if ((tileattr&0x08)) drawgfx_transpen(bitmap,clip,screen.machine().gfx[region],tile,col,0,0,x*8,y*8, 0);
@@ -1006,7 +1006,7 @@ static MACHINE_CONFIG_START( luckgrln, luckgrln_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(luckgrln)
+ MCFG_SCREEN_UPDATE_DRIVER(luckgrln_state, screen_update_luckgrln)
MCFG_GFXDECODE(luckgrln)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/lucky74.c b/src/mame/drivers/lucky74.c
index c46f28e294a..f14b6332dd8 100644
--- a/src/mame/drivers/lucky74.c
+++ b/src/mame/drivers/lucky74.c
@@ -1379,7 +1379,7 @@ static MACHINE_CONFIG_START( lucky74, lucky74_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lucky74)
+ MCFG_SCREEN_UPDATE_DRIVER(lucky74_state, screen_update_lucky74)
MCFG_GFXDECODE(lucky74)
diff --git a/src/mame/drivers/lvcards.c b/src/mame/drivers/lvcards.c
index 31ca0a4b4a3..af73815d020 100644
--- a/src/mame/drivers/lvcards.c
+++ b/src/mame/drivers/lvcards.c
@@ -474,7 +474,7 @@ static MACHINE_CONFIG_START( lvcards, lvcards_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lvcards)
+ MCFG_SCREEN_UPDATE_DRIVER(lvcards_state, screen_update_lvcards)
MCFG_GFXDECODE(lvcards)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c
index 5517e7d2233..183e42c20c1 100644
--- a/src/mame/drivers/lwings.c
+++ b/src/mame/drivers/lwings.c
@@ -798,7 +798,7 @@ static MACHINE_CONFIG_START( lwings, lwings_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(lwings)
+ MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(lwings)
@@ -841,7 +841,7 @@ static MACHINE_CONFIG_DERIVED( trojan, lwings )
MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(trojan)
+ MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan)
/* sound hardware */
MCFG_SOUND_ADD("5205", MSM5205, XTAL_384kHz) /* verified on PCB */
diff --git a/src/mame/drivers/m10.c b/src/mame/drivers/m10.c
index 4370b0f4756..d37b4c7b2df 100644
--- a/src/mame/drivers/m10.c
+++ b/src/mame/drivers/m10.c
@@ -837,7 +837,7 @@ static MACHINE_CONFIG_START( m10, m10_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(IREMM10_PIXEL_CLOCK, IREMM10_HTOTAL, IREMM10_HBEND, IREMM10_HBSTART, IREMM10_VTOTAL, IREMM10_VBEND, IREMM10_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(m10)
+ MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m10)
MCFG_GFXDECODE(m10)
MCFG_PALETTE_LENGTH(2*8)
@@ -882,7 +882,7 @@ static MACHINE_CONFIG_START( m15, m10_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(IREMM15_PIXEL_CLOCK, IREMM15_HTOTAL, IREMM15_HBEND, IREMM15_HBSTART, IREMM15_VTOTAL, IREMM15_VBEND, IREMM15_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(m15)
+ MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m15)
MCFG_PALETTE_LENGTH(2*8)
diff --git a/src/mame/drivers/m107.c b/src/mame/drivers/m107.c
index 9ae63afca6c..2a3cb728487 100644
--- a/src/mame/drivers/m107.c
+++ b/src/mame/drivers/m107.c
@@ -788,7 +788,7 @@ static MACHINE_CONFIG_START( firebarr, m107_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE_STATIC(m107)
+ MCFG_SCREEN_UPDATE_DRIVER(m107_state, screen_update_m107)
MCFG_GFXDECODE(firebarr)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/m14.c b/src/mame/drivers/m14.c
index 25e0f08984e..c61a3084e33 100644
--- a/src/mame/drivers/m14.c
+++ b/src/mame/drivers/m14.c
@@ -85,6 +85,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_m14(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -133,11 +134,10 @@ void m14_state::video_start()
m_m14_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(m14_state::m14_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( m14 )
+UINT32 m14_state::screen_update_m14(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m14_state *state = screen.machine().driver_data<m14_state>();
- state->m_m14_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_m14_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -349,7 +349,7 @@ static MACHINE_CONFIG_START( m14, m14_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(m14)
+ MCFG_SCREEN_UPDATE_DRIVER(m14_state, screen_update_m14)
MCFG_GFXDECODE(m14)
MCFG_PALETTE_LENGTH(0x20)
diff --git a/src/mame/drivers/m52.c b/src/mame/drivers/m52.c
index b253121e165..f992d4102ee 100644
--- a/src/mame/drivers/m52.c
+++ b/src/mame/drivers/m52.c
@@ -405,7 +405,7 @@ static MACHINE_CONFIG_START( m52, m52_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 136, 376, 282, 22, 274)
- MCFG_SCREEN_UPDATE_STATIC(m52)
+ MCFG_SCREEN_UPDATE_DRIVER(m52_state, screen_update_m52)
/* sound hardware */
diff --git a/src/mame/drivers/m57.c b/src/mame/drivers/m57.c
index 76beed3fa96..ce0cbabf129 100644
--- a/src/mame/drivers/m57.c
+++ b/src/mame/drivers/m57.c
@@ -238,7 +238,7 @@ static MACHINE_CONFIG_START( m57, m57_state )
/* talks about 55Hz and 1790ms vblank duration. */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(m57)
+ MCFG_SCREEN_UPDATE_DRIVER(m57_state, screen_update_m57)
MCFG_GFXDECODE(m57)
MCFG_PALETTE_LENGTH(32*8+32*8)
diff --git a/src/mame/drivers/m58.c b/src/mame/drivers/m58.c
index b10fd50ff7f..09f2e0b3223 100644
--- a/src/mame/drivers/m58.c
+++ b/src/mame/drivers/m58.c
@@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( yard, m58_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 256, 282, 42, 266)
- MCFG_SCREEN_UPDATE_STATIC(yard)
+ MCFG_SCREEN_UPDATE_DRIVER(m58_state, screen_update_yard)
/* sound hardware */
diff --git a/src/mame/drivers/m62.c b/src/mame/drivers/m62.c
index f6bb9477031..a2e3839feb2 100644
--- a/src/mame/drivers/m62.c
+++ b/src/mame/drivers/m62.c
@@ -966,7 +966,7 @@ static MACHINE_CONFIG_START( ldrun, m62_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* frames per second and vblank duration from the Lode Runner manual */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA((64*8-384)/2, 64*8-(64*8-384)/2-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ldrun)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun)
MCFG_GFXDECODE(ldrun)
MCFG_PALETTE_LENGTH(512)
@@ -988,7 +988,7 @@ static MACHINE_CONFIG_DERIVED( kungfum, ldrun )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kungfum)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_kungfum)
MCFG_VIDEO_START_OVERRIDE(m62_state,kungfum)
MACHINE_CONFIG_END
@@ -1005,7 +1005,7 @@ static MACHINE_CONFIG_DERIVED( battroad, ldrun )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(battroad)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_battroad)
MCFG_GFXDECODE(battroad)
MCFG_PALETTE_LENGTH(544)
@@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_DERIVED( ldrun2, ldrun )
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ldrun)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun)
MACHINE_CONFIG_END
@@ -1038,7 +1038,7 @@ static MACHINE_CONFIG_DERIVED( ldrun3, ldrun )
MCFG_GFXDECODE(ldrun3)
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ldrun3)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun3)
MACHINE_CONFIG_END
@@ -1053,7 +1053,7 @@ static MACHINE_CONFIG_DERIVED( ldrun4, ldrun )
MCFG_GFXDECODE(ldrun3)
MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun4)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ldrun4)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun4)
MACHINE_CONFIG_END
@@ -1070,7 +1070,7 @@ static MACHINE_CONFIG_DERIVED( lotlot, ldrun )
MCFG_PALETTE_INIT_OVERRIDE(m62_state,lotlot)
MCFG_VIDEO_START_OVERRIDE(m62_state,lotlot)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(lotlot)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_lotlot)
MACHINE_CONFIG_END
@@ -1086,7 +1086,7 @@ static MACHINE_CONFIG_DERIVED( kidniki, ldrun )
MCFG_VIDEO_START_OVERRIDE(m62_state,kidniki)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(kidniki)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_kidniki)
MACHINE_CONFIG_END
@@ -1101,7 +1101,7 @@ static MACHINE_CONFIG_DERIVED( spelunkr, ldrun )
MCFG_VIDEO_START_OVERRIDE(m62_state,spelunkr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(spelunkr)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunkr)
MACHINE_CONFIG_END
@@ -1118,7 +1118,7 @@ static MACHINE_CONFIG_DERIVED( spelunk2, ldrun )
MCFG_PALETTE_INIT_OVERRIDE(m62_state,spelunk2)
MCFG_VIDEO_START_OVERRIDE(m62_state,spelunk2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(spelunk2)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunk2)
MACHINE_CONFIG_END
@@ -1133,7 +1133,7 @@ static MACHINE_CONFIG_DERIVED( youjyudn, ldrun )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(youjyudn)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_youjyudn)
MCFG_GFXDECODE(youjyudn)
MCFG_VIDEO_START_OVERRIDE(m62_state,youjyudn)
@@ -1149,7 +1149,7 @@ static MACHINE_CONFIG_DERIVED( horizon, ldrun )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(horizon)
+ MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_horizon)
MCFG_VIDEO_START_OVERRIDE(m62_state,horizon)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c
index 35a814678ef..334daa37756 100644
--- a/src/mame/drivers/m63.c
+++ b/src/mame/drivers/m63.c
@@ -183,6 +183,7 @@ public:
DECLARE_MACHINE_RESET(m63);
DECLARE_VIDEO_START(m63);
DECLARE_PALETTE_INIT(m63);
+ UINT32 screen_update_m63(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -359,18 +360,17 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16( m63 )
+UINT32 m63_state::screen_update_m63(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m63_state *state = screen.machine().driver_data<m63_state>();
int col;
for (col = 0; col < 32; col++)
- state->m_bg_tilemap->set_scrolly(col, state->m_scrollram[col * 8]);
+ m_bg_tilemap->set_scrolly(col, m_scrollram[col * 8]);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -784,7 +784,7 @@ static MACHINE_CONFIG_START( m63, m63_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(m63)
+ MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63)
MCFG_GFXDECODE(m63)
MCFG_PALETTE_LENGTH(256+4)
@@ -828,7 +828,7 @@ static MACHINE_CONFIG_START( fghtbskt, m63_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(m63)
+ MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63)
MCFG_GFXDECODE(fghtbskt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c
index b5883f1466f..66c50649fb1 100644
--- a/src/mame/drivers/m72.c
+++ b/src/mame/drivers/m72.c
@@ -1822,7 +1822,7 @@ static MACHINE_CONFIG_START( m72_base, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
@@ -1877,7 +1877,7 @@ static MACHINE_CONFIG_START( rtype, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
@@ -1914,7 +1914,7 @@ static MACHINE_CONFIG_START( xmultipl, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl)
@@ -1955,7 +1955,7 @@ static MACHINE_CONFIG_START( xmultiplm72, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
@@ -1996,7 +1996,7 @@ static MACHINE_CONFIG_START( dbreed, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
@@ -2037,7 +2037,7 @@ static MACHINE_CONFIG_START( dbreedm72, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
@@ -2078,7 +2078,7 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2)
@@ -2119,7 +2119,7 @@ static MACHINE_CONFIG_START( majtitle, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(majtitle)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_majtitle)
MCFG_VIDEO_START_OVERRIDE(m72_state,majtitle)
@@ -2160,7 +2160,7 @@ static MACHINE_CONFIG_START( hharry, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
@@ -2201,7 +2201,7 @@ static MACHINE_CONFIG_START( hharryu, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
@@ -2242,7 +2242,7 @@ static MACHINE_CONFIG_START( dkgenm72, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,m72)
@@ -2283,7 +2283,7 @@ static MACHINE_CONFIG_START( poundfor, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor)
@@ -2324,7 +2324,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(m72)
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72)
MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor)
diff --git a/src/mame/drivers/m79amb.c b/src/mame/drivers/m79amb.c
index ff6383e1c74..af9ed73df27 100644
--- a/src/mame/drivers/m79amb.c
+++ b/src/mame/drivers/m79amb.c
@@ -78,6 +78,7 @@ public:
DECLARE_READ8_MEMBER(gray5bit_controller1_r);
DECLARE_WRITE8_MEMBER(m79amb_8002_w);
DECLARE_DRIVER_INIT(m79amb);
+ UINT32 screen_update_ramtek(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -86,16 +87,15 @@ WRITE8_MEMBER(m79amb_state::ramtek_videoram_w)
m_videoram[offset] = data & ~*m_mask;
}
-static SCREEN_UPDATE_RGB32( ramtek )
+UINT32 m79amb_state::screen_update_ramtek(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- m79amb_state *state = screen.machine().driver_data<m79amb_state>();
offs_t offs;
for (offs = 0; offs < 0x2000; offs++)
{
int i;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
int y = offs >> 5;
int x = (offs & 0x1f) << 3;
@@ -220,7 +220,7 @@ static MACHINE_CONFIG_START( m79amb, m79amb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ramtek)
+ MCFG_SCREEN_UPDATE_DRIVER(m79amb_state, screen_update_ramtek)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/m90.c b/src/mame/drivers/m90.c
index 62cb9046c70..3219f6d7dfe 100644
--- a/src/mame/drivers/m90.c
+++ b/src/mame/drivers/m90.c
@@ -732,7 +732,7 @@ static MACHINE_CONFIG_START( m90, m90_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8, 47*8-1)
- MCFG_SCREEN_UPDATE_STATIC(m90)
+ MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_m90)
MCFG_GFXDECODE(m90)
MCFG_PALETTE_LENGTH(512)
@@ -818,7 +818,7 @@ static MACHINE_CONFIG_DERIVED( bomblord, m90 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bomblord)
+ MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_bomblord)
MCFG_VIDEO_START_OVERRIDE(m90_state,bomblord)
MACHINE_CONFIG_END
@@ -837,7 +837,7 @@ static MACHINE_CONFIG_DERIVED( dynablsb, m90 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(dynablsb)
+ MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_dynablsb)
MCFG_VIDEO_START_OVERRIDE(m90_state,dynablsb)
diff --git a/src/mame/drivers/m92.c b/src/mame/drivers/m92.c
index 9a1b2133c24..2a3d1c7d26a 100644
--- a/src/mame/drivers/m92.c
+++ b/src/mame/drivers/m92.c
@@ -954,7 +954,7 @@ static MACHINE_CONFIG_START( m92, m92_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE_STATIC(m92)
+ MCFG_SCREEN_UPDATE_DRIVER(m92_state, screen_update_m92)
MCFG_GFXDECODE(m92)
MCFG_PALETTE_LENGTH(2048)
@@ -1040,7 +1040,7 @@ static MACHINE_CONFIG_START( ppan, m92_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE_STATIC(ppan)
+ MCFG_SCREEN_UPDATE_DRIVER(m92_state, screen_update_ppan)
MCFG_GFXDECODE(m92)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/macrossp.c b/src/mame/drivers/macrossp.c
index 0d2f21762b3..a7c164cd2e0 100644
--- a/src/mame/drivers/macrossp.c
+++ b/src/mame/drivers/macrossp.c
@@ -635,8 +635,8 @@ static MACHINE_CONFIG_START( macrossp, macrossp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 0*16, 15*16-1)
- MCFG_SCREEN_UPDATE_STATIC(macrossp)
- MCFG_SCREEN_VBLANK_STATIC(macrossp)
+ MCFG_SCREEN_UPDATE_DRIVER(macrossp_state, screen_update_macrossp)
+ MCFG_SCREEN_VBLANK_DRIVER(macrossp_state, screen_eof_macrossp)
MCFG_GFXDECODE(macrossp)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/macs.c b/src/mame/drivers/macs.c
index f88c384c9a8..de89939ad60 100644
--- a/src/mame/drivers/macs.c
+++ b/src/mame/drivers/macs.c
@@ -491,7 +491,7 @@ static MACHINE_CONFIG_START( macs, macs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(128*8, 128*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 128*8-1, 0*8, 128*8-1)
- MCFG_SCREEN_UPDATE_STATIC(st0016)
+ MCFG_SCREEN_UPDATE_DRIVER(st0016_state, screen_update_st0016)
MCFG_GFXDECODE(macs)
MCFG_PALETTE_LENGTH(16*16*4+1)
diff --git a/src/mame/drivers/madmotor.c b/src/mame/drivers/madmotor.c
index 6e19f512cd9..8dd7d945551 100644
--- a/src/mame/drivers/madmotor.c
+++ b/src/mame/drivers/madmotor.c
@@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration taken from Burger Time */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(madmotor)
+ MCFG_SCREEN_UPDATE_DRIVER(madmotor_state, screen_update_madmotor)
MCFG_GFXDECODE(madmotor)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/magic10.c b/src/mame/drivers/magic10.c
index f011df571a5..6484fde69fa 100644
--- a/src/mame/drivers/magic10.c
+++ b/src/mame/drivers/magic10.c
@@ -121,6 +121,7 @@ public:
TILE_GET_INFO_MEMBER(get_layer1_tile_info);
TILE_GET_INFO_MEMBER(get_layer2_tile_info);
virtual void video_start();
+ UINT32 screen_update_magic10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -197,23 +198,22 @@ void magic10_state::video_start()
m_layer2_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( magic10 )
+UINT32 magic10_state::screen_update_magic10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- magic10_state *state = screen.machine().driver_data<magic10_state>();
/*TODO: understand where this comes from. */
- state->m_layer2_tilemap->set_scrollx(0, state->m_layer2_offset[0]);
- state->m_layer2_tilemap->set_scrolly(0, state->m_layer2_offset[1]);
+ m_layer2_tilemap->set_scrollx(0, m_layer2_offset[0]);
+ m_layer2_tilemap->set_scrolly(0, m_layer2_offset[1]);
/*
4 and 6 are y/x global register writes.
0 and 2 are y/x writes for the scrolling layer.
*/
- state->m_layer1_tilemap->set_scrolly(0, (state->m_vregs[0/2] - state->m_vregs[4/2])+0);
- state->m_layer1_tilemap->set_scrollx(0, (state->m_vregs[2/2] - state->m_vregs[6/2])+4);
+ m_layer1_tilemap->set_scrolly(0, (m_vregs[0/2] - m_vregs[4/2])+0);
+ m_layer1_tilemap->set_scrollx(0, (m_vregs[2/2] - m_vregs[6/2])+4);
- state->m_layer0_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_layer1_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_layer2_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_layer0_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_layer1_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_layer2_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -739,7 +739,7 @@ static MACHINE_CONFIG_START( magic10, magic10_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(magic10)
+ MCFG_SCREEN_UPDATE_DRIVER(magic10_state, screen_update_magic10)
MCFG_PALETTE_LENGTH(0x100)
MCFG_GFXDECODE(magic10)
diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c
index 7917b853dc6..ee9156854cf 100644
--- a/src/mame/drivers/magicard.c
+++ b/src/mame/drivers/magicard.c
@@ -217,6 +217,7 @@ public:
DECLARE_DRIVER_INIT(magicard);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_magicard(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -412,7 +413,7 @@ void magicard_state::video_start()
}
-static SCREEN_UPDATE_RGB32(magicard)
+UINT32 magicard_state::screen_update_magicard(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
magicard_state *state = screen.machine().driver_data<magicard_state>();
int x,y;
@@ -433,22 +434,22 @@ static SCREEN_UPDATE_RGB32(magicard)
{
UINT32 color;
- color = ((state->m_magicram[count]) & 0x000f)>>0;
+ color = ((m_magicram[count]) & 0x000f)>>0;
if(cliprect.contains((x*4)+3, y))
bitmap.pix32(y, (x*4)+3) = screen.machine().pens[color];
- color = ((state->m_magicram[count]) & 0x00f0)>>4;
+ color = ((m_magicram[count]) & 0x00f0)>>4;
if(cliprect.contains((x*4)+2, y))
bitmap.pix32(y, (x*4)+2) = screen.machine().pens[color];
- color = ((state->m_magicram[count]) & 0x0f00)>>8;
+ color = ((m_magicram[count]) & 0x0f00)>>8;
if(cliprect.contains((x*4)+1, y))
bitmap.pix32(y, (x*4)+1) = screen.machine().pens[color];
- color = ((state->m_magicram[count]) & 0xf000)>>12;
+ color = ((m_magicram[count]) & 0xf000)>>12;
if(cliprect.contains((x*4)+0, y))
bitmap.pix32(y, (x*4)+0) = screen.machine().pens[color];
@@ -465,12 +466,12 @@ static SCREEN_UPDATE_RGB32(magicard)
{
UINT32 color;
- color = ((state->m_magicram[count]) & 0x00ff)>>0;
+ color = ((m_magicram[count]) & 0x00ff)>>0;
if(cliprect.contains((x*2)+1, y))
bitmap.pix32(y, (x*2)+1) = screen.machine().pens[color];
- color = ((state->m_magicram[count]) & 0xff00)>>8;
+ color = ((m_magicram[count]) & 0xff00)>>8;
if(cliprect.contains((x*2)+0, y))
bitmap.pix32(y, (x*2)+0) = screen.machine().pens[color];
@@ -725,7 +726,7 @@ static MACHINE_CONFIG_START( magicard, magicard_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1) //dynamic resolution,TODO
- MCFG_SCREEN_UPDATE_STATIC(magicard)
+ MCFG_SCREEN_UPDATE_DRIVER(magicard_state, screen_update_magicard)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c
index e00b34d9da3..214b2e05315 100644
--- a/src/mame/drivers/magicfly.c
+++ b/src/mame/drivers/magicfly.c
@@ -438,6 +438,7 @@ public:
virtual void video_start();
virtual void palette_init();
DECLARE_VIDEO_START(7mezzo);
+ UINT32 screen_update_magicfly(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -518,10 +519,9 @@ VIDEO_START_MEMBER(magicfly_state,7mezzo)
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(magicfly_state::get_7mezzo_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 29);
}
-static SCREEN_UPDATE_IND16( magicfly )
+UINT32 magicfly_state::screen_update_magicfly(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- magicfly_state *state = screen.machine().driver_data<magicfly_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -814,7 +814,7 @@ static MACHINE_CONFIG_START( magicfly, magicfly_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((39+1)*8, (31+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1). */
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06. */
- MCFG_SCREEN_UPDATE_STATIC(magicfly)
+ MCFG_SCREEN_UPDATE_DRIVER(magicfly_state, screen_update_magicfly)
MCFG_GFXDECODE(magicfly)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/magictg.c b/src/mame/drivers/magictg.c
index 1896ae146a1..2705f7cc222 100644
--- a/src/mame/drivers/magictg.c
+++ b/src/mame/drivers/magictg.c
@@ -212,6 +212,8 @@ protected:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+public:
+ UINT32 screen_update_magictg(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -259,10 +261,9 @@ void magictg_state::video_start()
}
-static SCREEN_UPDATE_RGB32( magictg )
+UINT32 magictg_state::screen_update_magictg(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- magictg_state* state = screen.machine().driver_data<magictg_state>();
- return voodoo_update(state->m_voodoo[0], bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return voodoo_update(m_voodoo[0], bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -964,7 +965,7 @@ static MACHINE_CONFIG_START( magictg, magictg_state )
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 447)
- MCFG_SCREEN_UPDATE_STATIC(magictg)
+ MCFG_SCREEN_UPDATE_DRIVER(magictg_state, screen_update_magictg)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/magmax.c b/src/mame/drivers/magmax.c
index 9c46677311b..09c270fc1ca 100644
--- a/src/mame/drivers/magmax.c
+++ b/src/mame/drivers/magmax.c
@@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( magmax, magmax_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(magmax)
+ MCFG_SCREEN_UPDATE_DRIVER(magmax_state, screen_update_magmax)
MCFG_GFXDECODE(magmax)
MCFG_PALETTE_LENGTH(1*16 + 16*16 + 256)
diff --git a/src/mame/drivers/mainevt.c b/src/mame/drivers/mainevt.c
index 5f880cd3378..6070568321e 100644
--- a/src/mame/drivers/mainevt.c
+++ b/src/mame/drivers/mainevt.c
@@ -469,7 +469,7 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(mainevt)
+ MCFG_SCREEN_UPDATE_DRIVER(mainevt_state, screen_update_mainevt)
MCFG_PALETTE_LENGTH(256)
@@ -527,7 +527,7 @@ static MACHINE_CONFIG_START( devstors, mainevt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(dv)
+ MCFG_SCREEN_UPDATE_DRIVER(mainevt_state, screen_update_dv)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mainsnk.c b/src/mame/drivers/mainsnk.c
index cff349a7238..a1e32fe15bd 100644
--- a/src/mame/drivers/mainsnk.c
+++ b/src/mame/drivers/mainsnk.c
@@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( mainsnk, mainsnk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mainsnk)
+ MCFG_SCREEN_UPDATE_DRIVER(mainsnk_state, screen_update_mainsnk)
MCFG_GFXDECODE(mainsnk)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/majorpkr.c b/src/mame/drivers/majorpkr.c
index eff210fd8d0..96a52fe1929 100644
--- a/src/mame/drivers/majorpkr.c
+++ b/src/mame/drivers/majorpkr.c
@@ -493,6 +493,7 @@ public:
TILE_GET_INFO_MEMBER(bg_get_tile_info);
TILE_GET_INFO_MEMBER(fg_get_tile_info);
virtual void video_start();
+ UINT32 screen_update_majorpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -536,9 +537,8 @@ void majorpkr_state::video_start()
}
-static SCREEN_UPDATE_IND16(majorpkr)
+UINT32 majorpkr_state::screen_update_majorpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- majorpkr_state *state = screen.machine().driver_data<majorpkr_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -550,13 +550,13 @@ static SCREEN_UPDATE_IND16(majorpkr)
custom_clip = cliprect;
custom_clip.max_x -= 16;
- state->m_bg_tilemap->draw(bitmap, custom_clip, 0, 0);
- state->m_fg_tilemap->draw(bitmap, custom_clip, 0, 0);
+ m_bg_tilemap->draw(bitmap, custom_clip, 0, 0);
+ m_fg_tilemap->draw(bitmap, custom_clip, 0, 0);
- if (state->m_flip_state == 1)
+ if (m_flip_state == 1)
{
- state->m_bg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY);
- state->m_fg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY);
+ m_bg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY);
+ m_fg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY);
}
return 0;
@@ -1046,7 +1046,7 @@ static MACHINE_CONFIG_START( majorpkr, majorpkr_state )
MCFG_GFXDECODE(majorpkr)
MCFG_PALETTE_LENGTH(0x100 * 16)
- MCFG_SCREEN_UPDATE_STATIC(majorpkr)
+ MCFG_SCREEN_UPDATE_DRIVER(majorpkr_state, screen_update_majorpkr)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf) /* verified */
diff --git a/src/mame/drivers/malzak.c b/src/mame/drivers/malzak.c
index 9734a59c401..cc841bad053 100644
--- a/src/mame/drivers/malzak.c
+++ b/src/mame/drivers/malzak.c
@@ -366,7 +366,7 @@ static MACHINE_CONFIG_START( malzak, malzak_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(480, 512) /* vert size is a guess */
MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(malzak)
+ MCFG_SCREEN_UPDATE_DRIVER(malzak_state, screen_update_malzak)
MCFG_GFXDECODE(malzak)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/mappy.c b/src/mame/drivers/mappy.c
index b673f9957e1..bac453d357c 100644
--- a/src/mame/drivers/mappy.c
+++ b/src/mame/drivers/mappy.c
@@ -1652,7 +1652,7 @@ static MACHINE_CONFIG_START( superpac, mappy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(superpac)
+ MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac)
MCFG_PALETTE_INIT_OVERRIDE(mappy_state,superpac)
MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac)
@@ -1725,7 +1725,7 @@ static MACHINE_CONFIG_START( phozon, mappy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(phozon)
+ MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon)
MCFG_PALETTE_INIT_OVERRIDE(mappy_state,phozon)
MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
@@ -1765,7 +1765,7 @@ static MACHINE_CONFIG_START( mappy, mappy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(mappy)
+ MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy)
MCFG_PALETTE_INIT_OVERRIDE(mappy_state,mappy)
MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy)
diff --git a/src/mame/drivers/marineb.c b/src/mame/drivers/marineb.c
index c58315ce21b..4dfe9f9b850 100644
--- a/src/mame/drivers/marineb.c
+++ b/src/mame/drivers/marineb.c
@@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( marineb, marineb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(marineb)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_marineb)
MCFG_GFXDECODE(marineb)
MCFG_PALETTE_LENGTH(256)
@@ -575,7 +575,7 @@ static MACHINE_CONFIG_DERIVED( changes, marineb )
/* video hardware */
MCFG_GFXDECODE(changes)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(changes)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_changes)
MACHINE_CONFIG_END
@@ -586,7 +586,7 @@ static MACHINE_CONFIG_DERIVED( springer, marineb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(springer)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_springer)
MACHINE_CONFIG_END
@@ -597,7 +597,7 @@ static MACHINE_CONFIG_DERIVED( hoccer, marineb )
/* video hardware */
MCFG_GFXDECODE(hoccer)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(hoccer)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_hoccer)
MACHINE_CONFIG_END
@@ -611,7 +611,7 @@ static MACHINE_CONFIG_DERIVED( wanted, marineb )
/* video hardware */
MCFG_GFXDECODE(wanted)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(springer)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_springer)
/* sound hardware */
MCFG_SOUND_REPLACE("ay1", AY8910, 1500000)
@@ -629,7 +629,7 @@ static MACHINE_CONFIG_DERIVED( hopprobo, marineb )
/* video hardware */
MCFG_GFXDECODE(hopprobo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(hopprobo)
+ MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_hopprobo)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/marinedt.c b/src/mame/drivers/marinedt.c
index b36298e1072..a0ff829df74 100644
--- a/src/mame/drivers/marinedt.c
+++ b/src/mame/drivers/marinedt.c
@@ -152,6 +152,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_marinedt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -515,104 +516,103 @@ void marinedt_state::video_start()
#define OBJ_COLOR(a) ((a) & 0x03)
#define OBJ_X(x) (256 - 32 - (x))
#define OBJ_Y(y) (256 - 1 - (y))
-#define OBJ_FLIPX(a) ((state->m_pf & 0x02) == 0)
+#define OBJ_FLIPX(a) ((m_pf & 0x02) == 0)
#define OBJ_FLIPY(a) ((a) & 0x80)
-static SCREEN_UPDATE_IND16( marinedt )
+UINT32 marinedt_state::screen_update_marinedt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- marinedt_state *state = screen.machine().driver_data<marinedt_state>();
int sx, sy;
- state->m_tile->fill(0);
- state->m_tx_tilemap->draw(*state->m_tile, cliprect, 0, 0);
+ m_tile->fill(0);
+ m_tx_tilemap->draw(*m_tile, cliprect, 0, 0);
- state->m_obj1->fill(0);
- drawgfx_transpen(*state->m_obj1, state->m_obj1->cliprect(), screen.machine().gfx[1],
- OBJ_CODE(state->m_obj1_a),
- OBJ_COLOR(state->m_obj1_a),
- OBJ_FLIPX(state->m_obj1_a), OBJ_FLIPY(state->m_obj1_a),
+ m_obj1->fill(0);
+ drawgfx_transpen(*m_obj1, m_obj1->cliprect(), screen.machine().gfx[1],
+ OBJ_CODE(m_obj1_a),
+ OBJ_COLOR(m_obj1_a),
+ OBJ_FLIPX(m_obj1_a), OBJ_FLIPY(m_obj1_a),
0, 0, 0);
- state->m_obj2->fill(0);
- drawgfx_transpen(*state->m_obj2, state->m_obj2->cliprect(), screen.machine().gfx[2],
- OBJ_CODE(state->m_obj2_a),
- OBJ_COLOR(state->m_obj2_a),
- OBJ_FLIPX(state->m_obj2_a), OBJ_FLIPY(state->m_obj2_a),
+ m_obj2->fill(0);
+ drawgfx_transpen(*m_obj2, m_obj2->cliprect(), screen.machine().gfx[2],
+ OBJ_CODE(m_obj2_a),
+ OBJ_COLOR(m_obj2_a),
+ OBJ_FLIPX(m_obj2_a), OBJ_FLIPY(m_obj2_a),
0, 0, 0);
bitmap.fill(0);
- if (state->m_pd & 0x02)
- copybitmap_trans(bitmap, *state->m_obj2, 0, 0, OBJ_X(state->m_obj2_x), OBJ_Y(state->m_obj2_y), cliprect, 0);
+ if (m_pd & 0x02)
+ copybitmap_trans(bitmap, *m_obj2, 0, 0, OBJ_X(m_obj2_x), OBJ_Y(m_obj2_y), cliprect, 0);
- if (state->m_pd & 0x01)
- copybitmap_trans(bitmap, *state->m_obj1, 0, 0, OBJ_X(state->m_obj1_x), OBJ_Y(state->m_obj1_y), cliprect, 0);
+ if (m_pd & 0x01)
+ copybitmap_trans(bitmap, *m_obj1, 0, 0, OBJ_X(m_obj1_x), OBJ_Y(m_obj1_y), cliprect, 0);
- copybitmap_trans(bitmap, *state->m_tile, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, *m_tile, 0, 0, 0, 0, cliprect, 0);
- state->m_coll = state->m_cx = state->m_cyr = state->m_cyq = 0;
- if (state->m_pd & 0x01)
+ m_coll = m_cx = m_cyr = m_cyq = 0;
+ if (m_pd & 0x01)
{
for (sx = 0; sx < 32; sx++)
for (sy = 0; sy < 32; sy++)
{
- int x = OBJ_X(state->m_obj1_x) + sx;
- int y = OBJ_Y(state->m_obj1_y) + sy;
+ int x = OBJ_X(m_obj1_x) + sx;
+ int y = OBJ_Y(m_obj1_y) + sy;
if (!cliprect.contains(x, y))
continue;
- if (state->m_obj1->pix16(sy, sx) == 0)
+ if (m_obj1->pix16(sy, sx) == 0)
continue;
- if (state->m_tile->pix16(y, x) != 0)
+ if (m_tile->pix16(y, x) != 0)
{
- state->m_coll = 0x08;
+ m_coll = 0x08;
- state->m_cx = (x % 128) / 8;
- state->m_cx &= 0x0f;
+ m_cx = (x % 128) / 8;
+ m_cx &= 0x0f;
- state->m_cyr = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
- state->m_cyr &= 0x0f;
+ m_cyr = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
+ m_cyr &= 0x0f;
- state->m_cyq = y / 64;
- state->m_cyq &= 0x0f;
+ m_cyq = y / 64;
+ m_cyq &= 0x0f;
break;
}
}
}
- state->m_collh = state->m_cxh = state->m_cyrh = state->m_cyqh = 0;
- if ((state->m_pd & 0x03) == 0x03)
+ m_collh = m_cxh = m_cyrh = m_cyqh = 0;
+ if ((m_pd & 0x03) == 0x03)
{
for (sx = 0; sx < 32; sx++)
for (sy = 0; sy < 32; sy++)
{
- int x = OBJ_X(state->m_obj1_x + sx);
- int y = OBJ_Y(state->m_obj1_y + sy);
+ int x = OBJ_X(m_obj1_x + sx);
+ int y = OBJ_Y(m_obj1_y + sy);
- int xx = OBJ_X(state->m_obj2_x) - x;
- int yy = OBJ_Y(state->m_obj2_y) - y;
+ int xx = OBJ_X(m_obj2_x) - x;
+ int yy = OBJ_Y(m_obj2_y) - y;
if (xx < 0 || xx >= 32 || yy < 0 || yy >= 32)
continue;
- if (state->m_obj1->pix16(sy, sx) == 0)
+ if (m_obj1->pix16(sy, sx) == 0)
continue;
- if (state->m_obj2->pix16(yy, xx) != 0)
+ if (m_obj2->pix16(yy, xx) != 0)
{
- state->m_collh = 0x80;
+ m_collh = 0x80;
- state->m_cxh = (x % 128) / 8;
- state->m_cxh &= 0x0f;
+ m_cxh = (x % 128) / 8;
+ m_cxh &= 0x0f;
- state->m_cyrh = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
- state->m_cyrh &= 0x0f;
+ m_cyrh = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
+ m_cyrh &= 0x0f;
- state->m_cyqh= y / 64;
- state->m_cyqh &= 0x0f;
+ m_cyqh= y / 64;
+ m_cyqh &= 0x0f;
break;
}
@@ -682,7 +682,7 @@ static MACHINE_CONFIG_START( marinedt, marinedt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(4*8+32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(marinedt)
+ MCFG_SCREEN_UPDATE_DRIVER(marinedt_state, screen_update_marinedt)
MCFG_GFXDECODE(marinedt)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/mario.c b/src/mame/drivers/mario.c
index 27eaf43af47..8d6adb98034 100644
--- a/src/mame/drivers/mario.c
+++ b/src/mame/drivers/mario.c
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( mario_base, mario_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(mario)
+ MCFG_SCREEN_UPDATE_DRIVER(mario_state, screen_update_mario)
MCFG_GFXDECODE(mario)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/markham.c b/src/mame/drivers/markham.c
index 2882272b6a7..a8ca4d45966 100644
--- a/src/mame/drivers/markham.c
+++ b/src/mame/drivers/markham.c
@@ -208,7 +208,7 @@ static MACHINE_CONFIG_START( markham, markham_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(markham)
+ MCFG_SCREEN_UPDATE_DRIVER(markham_state, screen_update_markham)
MCFG_GFXDECODE(markham)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c
index 747b4c0dcd7..e278441864b 100644
--- a/src/mame/drivers/mastboy.c
+++ b/src/mame/drivers/mastboy.c
@@ -478,6 +478,7 @@ public:
DECLARE_DRIVER_INIT(mastboy);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -488,15 +489,14 @@ void mastboy_state::video_start()
machine().gfx[0]->set_source(m_vram);
}
-static SCREEN_UPDATE_IND16(mastboy)
+UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mastboy_state *state = screen.machine().driver_data<mastboy_state>();
int y,x,i;
int count = 0x000;
for (i=0;i<0x200;i+=2)
{
- int coldat = state->m_colram[i+1] | (state->m_colram[i+0]<<8);
+ int coldat = m_colram[i+1] | (m_colram[i+0]<<8);
palette_set_color_rgb(screen.machine(),i/2,pal4bit(coldat>>8),pal4bit(coldat>>12),pal4bit(coldat>>4));
}
@@ -506,8 +506,8 @@ static SCREEN_UPDATE_IND16(mastboy)
for (x=0;x<32;x++)
{
/* bytes 0 and 3 seem to be unused for rendering , they appear to contain data the game uses internally */
- int tileno = (state->m_tileram[count+1]|(state->m_tileram[count+2]<<8))&0xfff;
- int attr = (state->m_tileram[count+2]&0xf0)>>4;
+ int tileno = (m_tileram[count+1]|(m_tileram[count+2]<<8))&0xfff;
+ int attr = (m_tileram[count+2]&0xf0)>>4;
gfx_element *gfx;
if (tileno&0x800)
@@ -899,7 +899,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(mastboy)
+ MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy)
MCFG_GFXDECODE(mastboy)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/matmania.c b/src/mame/drivers/matmania.c
index 179929e32ad..c3a6a5dc6c2 100644
--- a/src/mame/drivers/matmania.c
+++ b/src/mame/drivers/matmania.c
@@ -325,7 +325,7 @@ static MACHINE_CONFIG_START( matmania, matmania_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(matmania)
+ MCFG_SCREEN_UPDATE_DRIVER(matmania_state, screen_update_matmania)
MCFG_GFXDECODE(matmania)
MCFG_PALETTE_LENGTH(64+16)
@@ -414,7 +414,7 @@ static MACHINE_CONFIG_START( maniach, matmania_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(maniach)
+ MCFG_SCREEN_UPDATE_DRIVER(matmania_state, screen_update_maniach)
MCFG_GFXDECODE(maniach)
MCFG_PALETTE_LENGTH(64+16)
diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c
index e1dbdeb2593..e7204647935 100644
--- a/src/mame/drivers/maygayv1.c
+++ b/src/mame/drivers/maygayv1.c
@@ -241,6 +241,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_maygayv1(screen_device &screen, bool state);
};
@@ -293,10 +295,9 @@ void maygayv1_state::video_start()
}
-static SCREEN_UPDATE_IND16( maygayv1 )
+UINT32 maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- maygayv1_state *state = screen.machine().driver_data<maygayv1_state>();
- i82716_t &i82716 = state->m_i82716;
+ i82716_t &i82716 = m_i82716;
UINT16 *atable = &i82716.dram[VREG(ATBA)];
UINT16 *otable = &i82716.dram[VREG(ODTBA) & 0xfc00]; // both must be bank 0
@@ -424,13 +425,12 @@ static SCREEN_UPDATE_IND16( maygayv1 )
return 0;
}
-static SCREEN_VBLANK( maygayv1 )
+void maygayv1_state::screen_eof_maygayv1(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- maygayv1_state *state = screen.machine().driver_data<maygayv1_state>();
- i82716_t &i82716 = state->m_i82716;
+ i82716_t &i82716 = m_i82716;
// UCF
if (VREG(VCR0) & VCR0_UCF)
{
@@ -1054,8 +1054,8 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(640, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 300 - 1)
- MCFG_SCREEN_UPDATE_STATIC(maygayv1)
- MCFG_SCREEN_VBLANK_STATIC(maygayv1)
+ MCFG_SCREEN_UPDATE_DRIVER(maygayv1_state, screen_update_maygayv1)
+ MCFG_SCREEN_VBLANK_DRIVER(maygayv1_state, screen_eof_maygayv1)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c
index ce8c936df02..62696e53196 100644
--- a/src/mame/drivers/mayumi.c
+++ b/src/mame/drivers/mayumi.c
@@ -45,6 +45,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mayumi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -73,10 +74,9 @@ WRITE8_MEMBER(mayumi_state::mayumi_videoram_w)
m_tilemap->mark_tile_dirty(offset & 0x7ff);
}
-static SCREEN_UPDATE_IND16( mayumi )
+UINT32 mayumi_state::screen_update_mayumi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mayumi_state *state = screen.machine().driver_data<mayumi_state>();
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -410,7 +410,7 @@ static MACHINE_CONFIG_START( mayumi, mayumi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 62*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mayumi)
+ MCFG_SCREEN_UPDATE_DRIVER(mayumi_state, screen_update_mayumi)
MCFG_GFXDECODE(mayumi)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c
index 236940e72c6..867c9ec4352 100644
--- a/src/mame/drivers/mazerbla.c
+++ b/src/mame/drivers/mazerbla.c
@@ -143,6 +143,8 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_mazerbla(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_test_vcu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -203,40 +205,39 @@ void mazerbla_state::video_start()
#ifdef UNUSED_DEFINITION
-SCREEN_UPDATE_IND16( test_vcu )
+UINT32 mazerbla_state::screen_update_test_vcu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mazerbla_state *state = screen.machine().driver_data<mazerbla_state>();
- int *planes_enabled = state->m_planes_enabled;
+ int *planes_enabled = m_planes_enabled;
char buf[128];
UINT32 color_base = 0;
- if (state->m_game_id == MAZERBLA)
+ if (m_game_id == MAZERBLA)
color_base = 0x80; /* 0x80 constant: matches Mazer Blazer movie */
- if (state->m_game_id == GREATGUN)
+ if (m_game_id == GREATGUN)
color_base = 0x00;
bitmap.fill(0);
// logerror("-->frame\n");
if (planes_enabled[3])
- copybitmap(bitmap, state->m_tmpbitmaps[3], 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_tmpbitmaps[3], 0, 0, 0, 0, cliprect);
if (planes_enabled[2])
- copybitmap_trans(bitmap, state->m_tmpbitmaps[2], 0, 0, 0, 0,cliprect, color_base);
+ copybitmap_trans(bitmap, m_tmpbitmaps[2], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[2].fill(color_base);
+ m_tmpbitmaps[2].fill(color_base);
if (planes_enabled[1])
- copybitmap_trans(bitmap, state->m_tmpbitmaps[1], 0, 0, 0, 0,cliprect, color_base);
+ copybitmap_trans(bitmap, m_tmpbitmaps[1], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[1].fill(color_base);
+ m_tmpbitmaps[1].fill(color_base);
if (planes_enabled[0])
- copybitmap_trans(bitmap, state->m_tmpbitmaps[0], 0, 0, 0, 0,cliprect, color_base);
+ copybitmap_trans(bitmap, m_tmpbitmaps[0], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[0].fill(color_base);
+ m_tmpbitmaps[0].fill(color_base);
if (screen.machine().input().code_pressed_once(KEYCODE_1)) /* plane 1 */
planes_enabled[0] ^= 1;
@@ -251,27 +252,27 @@ SCREEN_UPDATE_IND16( test_vcu )
planes_enabled[3] ^= 1;
if (screen.machine().input().code_pressed_once(KEYCODE_I)) /* show/hide debug info */
- state->m_dbg_info = !state->m_dbg_info;
+ m_dbg_info = !m_dbg_info;
if (screen.machine().input().code_pressed_once(KEYCODE_G)) /* enable gfx area handling */
- state->m_dbg_gfx_e = !state->m_dbg_gfx_e;
+ m_dbg_gfx_e = !m_dbg_gfx_e;
if (screen.machine().input().code_pressed_once(KEYCODE_C)) /* enable color area handling */
- state->m_dbg_clr_e = !state->m_dbg_clr_e;
+ m_dbg_clr_e = !m_dbg_clr_e;
if (screen.machine().input().code_pressed_once(KEYCODE_V)) /* draw only when vbank==dbg_vbank */
- state->m_dbg_vbank ^= 1;
+ m_dbg_vbank ^= 1;
if (screen.machine().input().code_pressed_once(KEYCODE_L)) /* showlookup ram */
- state->m_dbg_lookup = (state->m_dbg_lookup + 1) % 5; //0,1,2,3, 4-off
+ m_dbg_lookup = (m_dbg_lookup + 1) % 5; //0,1,2,3, 4-off
- if (state->m_dbg_info)
+ if (m_dbg_info)
{
sprintf(buf,"I-info, G-gfx, C-color, V-vbank, 1-4 enable planes");
ui_draw_text(buf, 10, 0 * ui_get_line_height(screen.machine()));
- sprintf(buf,"g:%1i c:%1i v:%1i vbk=%1i planes=%1i%1i%1i%1i ", state->m_dbg_gfx_e&1, state->m_dbg_clr_e&1, state->m_dbg_vbank, vbank&1,
+ sprintf(buf,"g:%1i c:%1i v:%1i vbk=%1i planes=%1i%1i%1i%1i ", m_dbg_gfx_e&1, m_dbg_clr_e&1, m_dbg_vbank, vbank&1,
planes_enabled[0],
planes_enabled[1],
planes_enabled[2],
@@ -279,9 +280,9 @@ SCREEN_UPDATE_IND16( test_vcu )
ui_draw_text(buf, 10, 1 * ui_get_line_height(screen.machine()));
- if (state->m_dbg_lookup!=4)
+ if (m_dbg_lookup!=4)
{
- int lookup_offs = (state->m_dbg_lookup)*256; //=0,1,2,3*256
+ int lookup_offs = (m_dbg_lookup)*256; //=0,1,2,3*256
int y, x;
for (y = 0; y < 16; y++)
@@ -302,23 +303,22 @@ SCREEN_UPDATE_IND16( test_vcu )
#endif
-static SCREEN_UPDATE_IND16( mazerbla )
+UINT32 mazerbla_state::screen_update_mazerbla(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mazerbla_state *state = screen.machine().driver_data<mazerbla_state>();
// UINT32 color_base = 0;
- if (state->m_game_id == MAZERBLA)
+ if (m_game_id == MAZERBLA)
// color_base = 0x80; /* 0x80 constant: matches Mazer Blazer movie */
-// if (state->m_game_id == GREATGUN)
+// if (m_game_id == GREATGUN)
// color_base = 0x00;
// bitmap.fill(0);
- copybitmap(bitmap, state->m_tmpbitmaps[3], 0, 0, 0, 0, cliprect);
- copybitmap_trans(bitmap, state->m_tmpbitmaps[2], 0, 0, 0, 0, cliprect, 0);
- copybitmap_trans(bitmap, state->m_tmpbitmaps[1], 0, 0, 0, 0, cliprect, 0);
- copybitmap_trans(bitmap, state->m_tmpbitmaps[0], 0, 0, 0, 0, cliprect, 0);
+ copybitmap(bitmap, m_tmpbitmaps[3], 0, 0, 0, 0, cliprect);
+ copybitmap_trans(bitmap, m_tmpbitmaps[2], 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, m_tmpbitmaps[1], 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, m_tmpbitmaps[0], 0, 0, 0, 0, cliprect, 0);
return 0;
}
@@ -1535,7 +1535,7 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mazerbla)
+ MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
MCFG_PALETTE_LENGTH(256)
@@ -1571,7 +1571,7 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mazerbla)
+ MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mcatadv.c b/src/mame/drivers/mcatadv.c
index 379d1201947..4f8cf7cd206 100644
--- a/src/mame/drivers/mcatadv.c
+++ b/src/mame/drivers/mcatadv.c
@@ -457,8 +457,8 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(mcatadv)
- MCFG_SCREEN_VBLANK_STATIC(mcatadv) // Buffer Spriteram
+ MCFG_SCREEN_UPDATE_DRIVER(mcatadv_state, screen_update_mcatadv)
+ MCFG_SCREEN_VBLANK_DRIVER(mcatadv_state, screen_eof_mcatadv)
MCFG_GFXDECODE(mcatadv)
MCFG_PALETTE_LENGTH(0x2000/2)
diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c
index 0e7de1d2b21..f46e38df014 100644
--- a/src/mame/drivers/mcr.c
+++ b/src/mame/drivers/mcr.c
@@ -1844,7 +1844,7 @@ static MACHINE_CONFIG_START( mcr_90009, mcr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(mcr)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr_state, screen_update_mcr)
MCFG_GFXDECODE(mcr)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c
index 8b5684d6149..7d2cb49ac3a 100644
--- a/src/mame/drivers/mcr3.c
+++ b/src/mame/drivers/mcr3.c
@@ -1101,7 +1101,7 @@ static MACHINE_CONFIG_START( mcrmono, mcr3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(mcr3)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_mcr3)
MCFG_GFXDECODE(mcr3)
MCFG_PALETTE_LENGTH(64)
@@ -1152,7 +1152,7 @@ static MACHINE_CONFIG_DERIVED( mcrscroll, mcrmono )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(30*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0, 30*16-1, 0, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(spyhunt)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_spyhunt)
MCFG_GFXDECODE(spyhunt)
MCFG_PALETTE_LENGTH(64+4)
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index ddc341864d5..9621e88665d 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -981,7 +981,7 @@ static MACHINE_CONFIG_START( zwackery, mcr68_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(zwackery)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_zwackery)
MCFG_GFXDECODE(zwackery)
MCFG_PALETTE_LENGTH(4096)
@@ -1012,7 +1012,7 @@ static MACHINE_CONFIG_START( mcr68, mcr68_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(mcr68)
+ MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_mcr68)
MCFG_GFXDECODE(mcr68)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/meadows.c b/src/mame/drivers/meadows.c
index 4ef92188612..3b29a3e2cf8 100644
--- a/src/mame/drivers/meadows.c
+++ b/src/mame/drivers/meadows.c
@@ -658,7 +658,7 @@ static MACHINE_CONFIG_START( meadows, meadows_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(meadows)
+ MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE(meadows)
MCFG_PALETTE_LENGTH(2)
@@ -688,7 +688,7 @@ static MACHINE_CONFIG_START( minferno, meadows_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(meadows)
+ MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE(minferno)
MCFG_PALETTE_LENGTH(2)
@@ -715,7 +715,7 @@ static MACHINE_CONFIG_START( bowl3d, meadows_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(meadows)
+ MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE(meadows)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index b619428efd7..22dbca74b9b 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -185,6 +185,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
// Display controller registers
@@ -379,14 +380,13 @@ static void draw_cga(running_machine &machine, bitmap_rgb32 &bitmap, const recta
}
}
-static SCREEN_UPDATE_RGB32(mediagx)
+UINT32 mediagx_state::screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- mediagx_state *state = screen.machine().driver_data<mediagx_state>();
bitmap.fill(0, cliprect);
draw_framebuffer(screen.machine(), bitmap, cliprect);
- if (state->m_disp_ctrl_reg[DC_OUTPUT_CFG] & 0x1) // don't show MDA text screen on 16-bit mode. this is basically a hack
+ if (m_disp_ctrl_reg[DC_OUTPUT_CFG] & 0x1) // don't show MDA text screen on 16-bit mode. this is basically a hack
{
draw_cga(screen.machine(), bitmap, cliprect);
}
@@ -1192,7 +1192,7 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(mediagx)
+ MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update_mediagx)
MCFG_GFXDECODE(CGA)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/megaplay.c b/src/mame/drivers/megaplay.c
index 5ff9610bb58..074b3b49333 100644
--- a/src/mame/drivers/megaplay.c
+++ b/src/mame/drivers/megaplay.c
@@ -617,7 +617,7 @@ VIDEO_START_MEMBER(mplay_state,megplay)
// VIDEO_START_CALL_MEMBER(megaplay_normal);
}
-static SCREEN_UPDATE_RGB32(megplay)
+UINT32 mplay_state::screen_update_megplay(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
//printf("megplay vu\n");
SCREEN_UPDATE32_CALL(megadriv);
@@ -637,8 +637,9 @@ MACHINE_RESET_MEMBER(mplay_state,megaplay)
MACHINE_RESET_CALL_LEGACY(megatech_bios);
}
-static SCREEN_VBLANK( megaplay )
+void mplay_state::screen_eof_megaplay(screen_device &screen, bool state)
{
+ bool vblank_on = state;
SCREEN_VBLANK_CALL(megadriv);
SCREEN_VBLANK_CALL(megatech_bios);
}
@@ -664,8 +665,8 @@ static MACHINE_CONFIG_START( megaplay, mplay_state )
/* New update functions to handle the extra layer */
MCFG_VIDEO_START_OVERRIDE(mplay_state,megplay)
MCFG_SCREEN_MODIFY("megadriv")
- MCFG_SCREEN_UPDATE_STATIC(megplay)
- MCFG_SCREEN_VBLANK_STATIC( megaplay )
+ MCFG_SCREEN_UPDATE_DRIVER(mplay_state, screen_update_megplay)
+ MCFG_SCREEN_VBLANK_DRIVER(mplay_state, screen_eof_megaplay)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megasys1.c b/src/mame/drivers/megasys1.c
index 17fc6916f2a..f464c75b718 100644
--- a/src/mame/drivers/megasys1.c
+++ b/src/mame/drivers/megasys1.c
@@ -1481,8 +1481,8 @@ static MACHINE_CONFIG_START( system_A, megasys1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_VBLANK_STATIC(megasys1)
+ MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
+ MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
@@ -1541,8 +1541,8 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_VBLANK_STATIC(megasys1)
+ MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
+ MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
@@ -1613,8 +1613,8 @@ static MACHINE_CONFIG_START( system_D, megasys1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_VBLANK_STATIC(megasys1)
+ MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
+ MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
@@ -1676,7 +1676,7 @@ static MACHINE_CONFIG_START( system_Z, megasys1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megasys1)
+ MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
MCFG_GFXDECODE(Z)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index 0ade696422c..f44842a954b 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -446,22 +446,21 @@ VIDEO_START_MEMBER(mtech_state,mtnew)
}
//attotime::never
-static SCREEN_UPDATE_RGB32(mtnew)
+UINT32 mtech_state::screen_update_mtnew(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- mtech_state *state = screen.machine().driver_data<mtech_state>();
/* if we're running an sms game then use the SMS update.. maybe this should be moved to the megadrive emulation core as compatibility mode is a feature of the chip */
- if (!state->m_current_game_is_sms)
+ if (!m_current_game_is_sms)
SCREEN_UPDATE32_CALL(megadriv);
else
SCREEN_UPDATE32_CALL(megatech_md_sms);
return 0;
}
-static SCREEN_VBLANK(mtnew)
+void mtech_state::screen_eof_mtnew(screen_device &screen, bool state)
{
- mtech_state *state = screen.machine().driver_data<mtech_state>();
- if (!state->m_current_game_is_sms)
+ bool vblank_on = state;
+ if (!m_current_game_is_sms)
SCREEN_VBLANK_CALL(megadriv);
else
SCREEN_VBLANK_CALL(megatech_md_sms);
@@ -476,10 +475,9 @@ MACHINE_RESET_MEMBER(mtech_state,mtnew)
megatech_select_game(machine(), 0);
}
-static SCREEN_UPDATE_RGB32( megatech_menu )
+UINT32 mtech_state::screen_update_megatech_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- mtech_state *state = screen.machine().driver_data<mtech_state>();
- state->m_vdp1->screen_update(screen,bitmap,cliprect);
+ m_vdp1->screen_update(screen,bitmap,cliprect);
return 0;
}
@@ -522,7 +520,7 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \
SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \
SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224)
- MCFG_SCREEN_UPDATE_STATIC( megatech_menu ) /* Combines and copies a bitmap */
+ MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_megatech_menu)
MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
MCFG_PALETTE_INIT(sega315_5124)
@@ -531,8 +529,8 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
MCFG_SCREEN_MODIFY("megadriv")
- MCFG_SCREEN_UPDATE_STATIC(mtnew)
- MCFG_SCREEN_VBLANK_STATIC(mtnew)
+ MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_mtnew)
+ MCFG_SCREEN_VBLANK_DRIVER(mtech_state, screen_eof_mtnew)
/* sound hardware */
MCFG_SOUND_ADD("sn2", SN76496, MASTER_CLOCK/15)
diff --git a/src/mame/drivers/megazone.c b/src/mame/drivers/megazone.c
index 2496c77830b..9c8e83443d6 100644
--- a/src/mame/drivers/megazone.c
+++ b/src/mame/drivers/megazone.c
@@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( megazone, megazone_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megazone)
+ MCFG_SCREEN_UPDATE_DRIVER(megazone_state, screen_update_megazone)
MCFG_GFXDECODE(megazone)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/meijinsn.c b/src/mame/drivers/meijinsn.c
index 833b460213e..18a5dfe9f3b 100644
--- a/src/mame/drivers/meijinsn.c
+++ b/src/mame/drivers/meijinsn.c
@@ -96,6 +96,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_meijinsn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -290,9 +291,8 @@ void meijinsn_state::palette_init()
}
-static SCREEN_UPDATE_IND16(meijinsn)
+UINT32 meijinsn_state::screen_update_meijinsn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- meijinsn_state *state = screen.machine().driver_data<meijinsn_state>();
int offs;
for (offs = 0; offs < 0x4000; offs++)
@@ -302,8 +302,8 @@ static SCREEN_UPDATE_IND16(meijinsn)
sx = offs >> 8;
sy = offs & 0xff;
- data1 = state->m_videoram[offs] >> 8;
- data2 = state->m_videoram[offs] & 0xff;
+ data1 = m_videoram[offs] >> 8;
+ data2 = m_videoram[offs] & 0xff;
for (x = 0; x < 4; x++)
{
@@ -371,7 +371,7 @@ static MACHINE_CONFIG_START( meijinsn, meijinsn_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12, 243, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(meijinsn)
+ MCFG_SCREEN_UPDATE_DRIVER(meijinsn_state, screen_update_meijinsn)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/meritm.c b/src/mame/drivers/meritm.c
index ab9ec09dd64..6e6107954ce 100644
--- a/src/mame/drivers/meritm.c
+++ b/src/mame/drivers/meritm.c
@@ -239,6 +239,7 @@ public:
DECLARE_MACHINE_START(meritm_crt250_crt252_crt258);
DECLARE_MACHINE_START(meritm_crt260);
DECLARE_MACHINE_START(merit_common);
+ UINT32 screen_update_meritm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -461,30 +462,29 @@ void meritm_state::video_start()
state_save_register_global(machine(), m_interrupt_vdp1_state);
}
-static SCREEN_UPDATE_IND16( meritm )
+UINT32 meritm_state::screen_update_meritm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- meritm_state *state = screen.machine().driver_data<meritm_state>();
if(screen.machine().input().code_pressed_once(KEYCODE_Q))
{
- state->m_layer0_enabled^=1;
- popmessage("Layer 0 %sabled",state->m_layer0_enabled ? "en" : "dis");
+ m_layer0_enabled^=1;
+ popmessage("Layer 0 %sabled",m_layer0_enabled ? "en" : "dis");
}
if(screen.machine().input().code_pressed_once(KEYCODE_W))
{
- state->m_layer1_enabled^=1;
- popmessage("Layer 1 %sabled",state->m_layer1_enabled ? "en" : "dis");
+ m_layer1_enabled^=1;
+ popmessage("Layer 1 %sabled",m_layer1_enabled ? "en" : "dis");
}
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if ( state->m_layer0_enabled )
+ if ( m_layer0_enabled )
{
- copybitmap(bitmap, state->m_v9938_0->get_bitmap(), 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_v9938_0->get_bitmap(), 0, 0, 0, 0, cliprect);
}
- if ( state->m_layer1_enabled )
+ if ( m_layer1_enabled )
{
- copybitmap_trans(bitmap, state->m_v9938_1->get_bitmap(), 0, 0, -6, -12, cliprect, state->m_v9938_1->get_transpen());
+ copybitmap_trans(bitmap, m_v9938_1->get_bitmap(), 0, 0, -6, -12, cliprect, m_v9938_1->get_transpen());
}
return 0;
}
@@ -1198,7 +1198,7 @@ static MACHINE_CONFIG_START( meritm_crt250, meritm_state )
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
- MCFG_SCREEN_UPDATE_STATIC(meritm)
+ MCFG_SCREEN_UPDATE_DRIVER(meritm_state, screen_update_meritm)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT( v9938 )
diff --git a/src/mame/drivers/mermaid.c b/src/mame/drivers/mermaid.c
index 298dea03759..8a51fd59b5e 100644
--- a/src/mame/drivers/mermaid.c
+++ b/src/mame/drivers/mermaid.c
@@ -461,8 +461,8 @@ static MACHINE_CONFIG_START( mermaid, mermaid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mermaid)
- MCFG_SCREEN_VBLANK_STATIC(mermaid)
+ MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid)
+ MCFG_SCREEN_VBLANK_DRIVER(mermaid_state, screen_eof_mermaid)
MCFG_GFXDECODE(mermaid)
MCFG_PALETTE_LENGTH(4*16+2*2)
diff --git a/src/mame/drivers/metalmx.c b/src/mame/drivers/metalmx.c
index bc924cdba4f..8244a25a169 100644
--- a/src/mame/drivers/metalmx.c
+++ b/src/mame/drivers/metalmx.c
@@ -278,13 +278,12 @@ void metalmx_state::video_start()
}
-static SCREEN_UPDATE_IND16( metalmx )
+UINT32 metalmx_state::screen_update_metalmx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* TODO: TMS34020 should take care of this */
- metalmx_state *state = screen.machine().driver_data<metalmx_state>();
// UINT32 *src_base = &gsp_vram[(vreg_base[0x40/4] & 0x40) ? 0x20000 : 0];
- UINT16 *src_base = state->m_gsp_vram;
+ UINT16 *src_base = m_gsp_vram;
int y;
for (y = 0; y < 384; ++y)
@@ -756,7 +755,7 @@ static MACHINE_CONFIG_START( metalmx, metalmx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(metalmx)
+ MCFG_SCREEN_UPDATE_DRIVER(metalmx_state, screen_update_metalmx)
MCFG_PALETTE_LENGTH(65536)
MCFG_PALETTE_INIT(RRRRR_GGGGGG_BBBBB)
diff --git a/src/mame/drivers/metlclsh.c b/src/mame/drivers/metlclsh.c
index e866e8e7455..31575970b17 100644
--- a/src/mame/drivers/metlclsh.c
+++ b/src/mame/drivers/metlclsh.c
@@ -297,7 +297,7 @@ static MACHINE_CONFIG_START( metlclsh, metlclsh_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(metlclsh)
+ MCFG_SCREEN_UPDATE_DRIVER(metlclsh_state, screen_update_metlclsh)
MCFG_GFXDECODE(metlclsh)
MCFG_PALETTE_LENGTH(3 * 16)
diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c
index 93f7e8db10a..40f39f0a542 100644
--- a/src/mame/drivers/metro.c
+++ b/src/mame/drivers/metro.c
@@ -3433,7 +3433,7 @@ static MACHINE_CONFIG_START( balcube, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3467,7 +3467,7 @@ static MACHINE_CONFIG_START( daitoa, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3501,7 +3501,7 @@ static MACHINE_CONFIG_START( msgogo, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3535,7 +3535,7 @@ static MACHINE_CONFIG_START( bangball, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3569,7 +3569,7 @@ static MACHINE_CONFIG_START( batlbubl, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3607,7 +3607,7 @@ static MACHINE_CONFIG_START( daitorid, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3650,7 +3650,7 @@ static MACHINE_CONFIG_START( dharma, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -3692,7 +3692,7 @@ static MACHINE_CONFIG_START( karatour, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -3734,7 +3734,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4220)
MCFG_PALETTE_LENGTH(8192)
@@ -3776,7 +3776,7 @@ static MACHINE_CONFIG_START( lastfort, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(360, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 360-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -3817,7 +3817,7 @@ static MACHINE_CONFIG_START( lastforg, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(360, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 360-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -3852,7 +3852,7 @@ static MACHINE_CONFIG_START( dokyusei, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
@@ -3888,7 +3888,7 @@ static MACHINE_CONFIG_START( dokyusp, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
@@ -3925,7 +3925,7 @@ static MACHINE_CONFIG_START( gakusai, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
@@ -3962,7 +3962,7 @@ static MACHINE_CONFIG_START( gakusai2, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
@@ -4004,7 +4004,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(360, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 360-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -4046,7 +4046,7 @@ static MACHINE_CONFIG_START( poitto, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(360, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 360-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -4088,7 +4088,7 @@ static MACHINE_CONFIG_START( pururun, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -4131,7 +4131,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(360, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 360-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -4173,7 +4173,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4100)
MCFG_PALETTE_LENGTH(8192)
@@ -4209,7 +4209,7 @@ static MACHINE_CONFIG_START( mouja, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
@@ -4254,7 +4254,7 @@ static MACHINE_CONFIG_START( blzntrnd, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(8, 320-8-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(blzntrnd)
MCFG_PALETTE_LENGTH(8192)
@@ -4302,7 +4302,7 @@ static MACHINE_CONFIG_START( gstrik2, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(8, 320-8-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(gstrik2)
MCFG_PALETTE_LENGTH(8192)
@@ -4340,7 +4340,7 @@ static MACHINE_CONFIG_START( puzzlet, metro_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(metro)
+ MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
MCFG_GFXDECODE(i4300)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/mexico86.c b/src/mame/drivers/mexico86.c
index 04a8cef4808..5e1b2710c62 100644
--- a/src/mame/drivers/mexico86.c
+++ b/src/mame/drivers/mexico86.c
@@ -496,7 +496,7 @@ static MACHINE_CONFIG_START( mexico86, mexico86_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mexico86)
+ MCFG_SCREEN_UPDATE_DRIVER(mexico86_state, screen_update_mexico86)
MCFG_GFXDECODE(mexico86)
MCFG_PALETTE_LENGTH(256)
@@ -523,7 +523,7 @@ static MACHINE_CONFIG_DERIVED( knightb, mexico86 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(kikikai)
+ MCFG_SCREEN_UPDATE_DRIVER(mexico86_state, screen_update_kikikai)
MACHINE_CONFIG_END
@@ -538,7 +538,7 @@ static MACHINE_CONFIG_DERIVED( kikikai, knightb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(kikikai)
+ MCFG_SCREEN_UPDATE_DRIVER(mexico86_state, screen_update_kikikai)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/meyc8080.c b/src/mame/drivers/meyc8080.c
index 57fe5c76477..d4ed7f979a1 100644
--- a/src/mame/drivers/meyc8080.c
+++ b/src/mame/drivers/meyc8080.c
@@ -84,6 +84,7 @@ public:
DECLARE_WRITE8_MEMBER(meyc8080_dac_2_w);
DECLARE_WRITE8_MEMBER(meyc8080_dac_3_w);
DECLARE_WRITE8_MEMBER(meyc8080_dac_4_w);
+ UINT32 screen_update_meyc8080(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -93,21 +94,20 @@ public:
*
*************************************/
-static SCREEN_UPDATE_RGB32( meyc8080 )
+UINT32 meyc8080_state::screen_update_meyc8080(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- meyc8080_state *state = screen.machine().driver_data<meyc8080_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram_0.bytes(); offs++)
+ for (offs = 0; offs < m_videoram_0.bytes(); offs++)
{
int i;
UINT8 y = offs >> 5;
UINT8 x = offs << 3;
- UINT8 data0 = state->m_videoram_0[offs];
- UINT8 data1 = state->m_videoram_1[offs];
- UINT8 data2 = state->m_videoram_2[offs];
+ UINT8 data0 = m_videoram_0[offs];
+ UINT8 data1 = m_videoram_1[offs];
+ UINT8 data2 = m_videoram_2[offs];
/* weird equations, but it matches every flyer screenshot -
perhaphs they used a look-up PROM? */
@@ -588,7 +588,7 @@ static MACHINE_CONFIG_START( meyc8080, meyc8080_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_STATIC(meyc8080)
+ MCFG_SCREEN_UPDATE_DRIVER(meyc8080_state, screen_update_meyc8080)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/meyc8088.c b/src/mame/drivers/meyc8088.c
index 12cf8b32cbf..f88495892ec 100644
--- a/src/mame/drivers/meyc8088.c
+++ b/src/mame/drivers/meyc8088.c
@@ -63,6 +63,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(meyc8088_sound_out);
virtual void palette_init();
+ UINT32 screen_update_meyc8088(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_meyc8088(screen_device &screen, bool state);
};
@@ -122,13 +124,12 @@ void meyc8088_state::palette_init()
auto_free(machine(), rgb);
}
-static SCREEN_UPDATE_IND16( meyc8088 )
+UINT32 meyc8088_state::screen_update_meyc8088(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- meyc8088_state *state = screen.machine().driver_data<meyc8088_state>();
UINT8 v[5];
- v[4] = state->m_status << 2 & 0x10; // video5: color prom d4
+ v[4] = m_status << 2 & 0x10; // video5: color prom d4
- if (~state->m_status & 2)
+ if (~m_status & 2)
{
// screen off
bitmap.fill(v[4]);
@@ -140,10 +141,10 @@ static SCREEN_UPDATE_IND16( meyc8088 )
UINT8 y = (offs-0x800) >> 6;
UINT8 x = (offs-0x800) << 2;
- v[0] = state->m_vram[offs|0x0000]; // video1: color prom d0
- v[1] = state->m_vram[offs|0x0001]; // video2: color prom d1
- v[2] = state->m_vram[offs|0x4000]; // video3: color prom d2
- v[3] = state->m_vram[offs|0x4001]; // video4: color prom d3
+ v[0] = m_vram[offs|0x0000]; // video1: color prom d0
+ v[1] = m_vram[offs|0x0001]; // video2: color prom d1
+ v[2] = m_vram[offs|0x4000]; // video3: color prom d2
+ v[3] = m_vram[offs|0x4001]; // video4: color prom d3
for (int i = 0; i < 8; i++)
bitmap.pix16(y, x | i) = ((v[0] << i) >> 7 & 1) | ((v[1] << i) >> 6 & 2) | ((v[2] << i) >> 5 & 4) | ((v[3] << i) >> 4 & 8) | v[4];
@@ -152,12 +153,12 @@ static SCREEN_UPDATE_IND16( meyc8088 )
return 0;
}
-static SCREEN_VBLANK( meyc8088 )
+void meyc8088_state::screen_eof_meyc8088(screen_device &screen, bool state)
{
- meyc8088_state *state = screen.machine().driver_data<meyc8088_state>();
-
+ device_execute_interface *intf;
+ m_maincpu->interface(intf);
// INTR on LC255 (pulses at start and end of vblank), INTA hardwired to $20
- generic_pulse_irq_line_and_vector(state->m_maincpu, 0, 0x20, 1);
+ generic_pulse_irq_line_and_vector(*intf, 0, 0x20, 1);
}
@@ -386,8 +387,8 @@ static MACHINE_CONFIG_START( meyc8088, meyc8088_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_15MHz/3, 320, 0, 256, 261, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(meyc8088)
- MCFG_SCREEN_VBLANK_STATIC(meyc8088)
+ MCFG_SCREEN_UPDATE_DRIVER(meyc8088_state, screen_update_meyc8088)
+ MCFG_SCREEN_VBLANK_DRIVER(meyc8088_state, screen_eof_meyc8088)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mgolf.c b/src/mame/drivers/mgolf.c
index 1a9796bc45c..75296b1f751 100644
--- a/src/mame/drivers/mgolf.c
+++ b/src/mame/drivers/mgolf.c
@@ -38,6 +38,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -62,30 +63,29 @@ void mgolf_state::video_start()
}
-static SCREEN_UPDATE_IND16( mgolf )
+UINT32 mgolf_state::screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mgolf_state *state = screen.machine().driver_data<mgolf_state>();
int i;
/* draw playfield */
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
/* draw sprites */
for (i = 0; i < 2; i++)
{
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1],
- state->m_video_ram[0x399 + 4 * i],
+ m_video_ram[0x399 + 4 * i],
i,
0, 0,
- state->m_video_ram[0x390 + 2 * i] - 7,
- state->m_video_ram[0x398 + 4 * i] - 16, 0);
+ m_video_ram[0x390 + 2 * i] - 7,
+ m_video_ram[0x398 + 4 * i] - 16, 0);
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[1],
- state->m_video_ram[0x39b + 4 * i],
+ m_video_ram[0x39b + 4 * i],
i,
0, 0,
- state->m_video_ram[0x390 + 2 * i] - 15,
- state->m_video_ram[0x39a + 4 * i] - 16, 0);
+ m_video_ram[0x390 + 2 * i] - 15,
+ m_video_ram[0x39a + 4 * i] - 16, 0);
}
return 0;
}
@@ -335,7 +335,7 @@ static MACHINE_CONFIG_START( mgolf, mgolf_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
- MCFG_SCREEN_UPDATE_STATIC(mgolf)
+ MCFG_SCREEN_UPDATE_DRIVER(mgolf_state, screen_update_mgolf)
MCFG_GFXDECODE(mgolf)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/midas.c b/src/mame/drivers/midas.c
index f92df0c2658..e3e9475ba3c 100644
--- a/src/mame/drivers/midas.c
+++ b/src/mame/drivers/midas.c
@@ -78,11 +78,12 @@ public:
DECLARE_DRIVER_INIT(livequiz);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
+ UINT32 screen_update_midas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_IND16( midas );
+
TILE_GET_INFO_MEMBER(midas_state::get_tile_info)
@@ -184,16 +185,15 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
}
-static SCREEN_UPDATE_IND16( midas )
+UINT32 midas_state::screen_update_midas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- midas_state *state = screen.machine().driver_data<midas_state>();
int layers_ctrl = -1;
#ifdef MAME_DEBUG
if ( screen.machine().input().code_pressed(KEYCODE_Z) )
{
int msk = 0;
- if (screen.machine().input().code_pressed(KEYCODE_Q)) msk |= 1 << 0; // for state->m_tmap
+ if (screen.machine().input().code_pressed(KEYCODE_Q)) msk |= 1 << 0; // for m_tmap
if (screen.machine().input().code_pressed(KEYCODE_A)) msk |= 1 << 1; // for sprites
if (msk != 0) layers_ctrl &= msk;
}
@@ -202,7 +202,7 @@ static SCREEN_UPDATE_IND16( midas )
bitmap.fill(4095, cliprect);
if (layers_ctrl & 2) draw_sprites(screen.machine(), bitmap,cliprect);
- if (layers_ctrl & 1) state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 1) m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -711,7 +711,7 @@ static MACHINE_CONFIG_START( livequiz, midas_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(midas)
+ MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
MCFG_GFXDECODE(midas)
MCFG_PALETTE_LENGTH(0x10000)
@@ -744,7 +744,7 @@ static MACHINE_CONFIG_START( hammer, midas_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(midas)
+ MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
MCFG_GFXDECODE(midas)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/midvunit.c b/src/mame/drivers/midvunit.c
index b69a7ae2e42..115e85852eb 100644
--- a/src/mame/drivers/midvunit.c
+++ b/src/mame/drivers/midvunit.c
@@ -1026,7 +1026,7 @@ static MACHINE_CONFIG_START( midvcommon, midvunit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDVUNIT_VIDEO_CLOCK/2, 666, 0, 512, 432, 0, 400)
- MCFG_SCREEN_UPDATE_STATIC(midvunit)
+ MCFG_SCREEN_UPDATE_DRIVER(midvunit_state, screen_update_midvunit)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index 488aaf3a913..b18ff612cb5 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -1102,7 +1102,7 @@ static MACHINE_CONFIG_START( midzeus, midzeus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDZEUS_VIDEO_CLOCK/8, 529, 0, 400, 278, 0, 256)
- MCFG_SCREEN_UPDATE_STATIC(midzeus)
+ MCFG_SCREEN_UPDATE_DRIVER(midzeus_state, screen_update_midzeus)
MCFG_VIDEO_START_OVERRIDE(midzeus_state,midzeus)
@@ -1140,7 +1140,7 @@ static MACHINE_CONFIG_START( midzeus2, midzeus_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDZEUS_VIDEO_CLOCK/4, 666, 0, 512, 438, 0, 400)
- MCFG_SCREEN_UPDATE_STATIC(midzeus2)
+ MCFG_SCREEN_UPDATE_DRIVER(midzeus_state, screen_update_midzeus2)
MCFG_VIDEO_START_OVERRIDE(midzeus_state,midzeus2)
diff --git a/src/mame/drivers/mikie.c b/src/mame/drivers/mikie.c
index c9edb96eace..2629b97cf33 100644
--- a/src/mame/drivers/mikie.c
+++ b/src/mame/drivers/mikie.c
@@ -289,7 +289,7 @@ static MACHINE_CONFIG_START( mikie, mikie_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mikie)
+ MCFG_SCREEN_UPDATE_DRIVER(mikie_state, screen_update_mikie)
MCFG_GFXDECODE(mikie)
MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
diff --git a/src/mame/drivers/mil4000.c b/src/mame/drivers/mil4000.c
index 2375b3c663c..437b78c3ed6 100644
--- a/src/mame/drivers/mil4000.c
+++ b/src/mame/drivers/mil4000.c
@@ -122,6 +122,7 @@ public:
TILE_GET_INFO_MEMBER(get_sc2_tile_info);
TILE_GET_INFO_MEMBER(get_sc3_tile_info);
virtual void video_start();
+ UINT32 screen_update_mil4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -189,13 +190,12 @@ void mil4000_state::video_start()
m_sc3_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(mil4000)
+UINT32 mil4000_state::screen_update_mil4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mil4000_state *state = screen.machine().driver_data<mil4000_state>();
- state->m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_sc1_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_sc2_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_sc3_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc1_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc2_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc3_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -381,7 +381,7 @@ static MACHINE_CONFIG_START( mil4000, mil4000_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(mil4000)
+ MCFG_SCREEN_UPDATE_DRIVER(mil4000_state, screen_update_mil4000)
MCFG_PALETTE_LENGTH(0x800)
MCFG_PALETTE_INIT(all_black)
diff --git a/src/mame/drivers/miniboy7.c b/src/mame/drivers/miniboy7.c
index 69baa64b9e8..f2a40d9963d 100644
--- a/src/mame/drivers/miniboy7.c
+++ b/src/mame/drivers/miniboy7.c
@@ -168,6 +168,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_miniboy7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -211,10 +212,9 @@ void miniboy7_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(miniboy7_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 37, 37);
}
-static SCREEN_UPDATE_IND16( miniboy7 )
+UINT32 miniboy7_state::screen_update_miniboy7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- miniboy7_state *state = screen.machine().driver_data<miniboy7_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -462,7 +462,7 @@ static MACHINE_CONFIG_START( miniboy7, miniboy7_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((47+1)*8, (39+1)*8) /* Taken from MC6845, registers 00 & 04. Normally programmed with (value-1) */
MCFG_SCREEN_VISIBLE_AREA(0*8, 37*8-1, 0*8, 37*8-1) /* Taken from MC6845, registers 01 & 06 */
- MCFG_SCREEN_UPDATE_STATIC(miniboy7)
+ MCFG_SCREEN_UPDATE_DRIVER(miniboy7_state, screen_update_miniboy7)
MCFG_GFXDECODE(miniboy7)
diff --git a/src/mame/drivers/minivadr.c b/src/mame/drivers/minivadr.c
index 4d4fb105b4f..b0d86356f83 100644
--- a/src/mame/drivers/minivadr.c
+++ b/src/mame/drivers/minivadr.c
@@ -23,6 +23,7 @@ public:
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
+ UINT32 screen_update_minivadr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
/*************************************
@@ -31,18 +32,17 @@ public:
*
*************************************/
-static SCREEN_UPDATE_RGB32( minivadr )
+UINT32 minivadr_state::screen_update_minivadr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- minivadr_state *state = screen.machine().driver_data<minivadr_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 x = offs << 3;
int y = offs >> 5;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -91,7 +91,7 @@ static MACHINE_CONFIG_START( minivadr, minivadr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(minivadr)
+ MCFG_SCREEN_UPDATE_DRIVER(minivadr_state, screen_update_minivadr)
/* the board has no sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c
index 8d04b8fa6b3..d363c15bde7 100644
--- a/src/mame/drivers/mirage.c
+++ b/src/mame/drivers/mirage.c
@@ -77,6 +77,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
void miragemi_state::video_start()
@@ -84,23 +85,22 @@ void miragemi_state::video_start()
machine().device<decospr_device>("spritegen")->alloc_sprite_bitmap();
}
-static SCREEN_UPDATE_RGB32( mirage )
+UINT32 miragemi_state::screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- miragemi_state *state = screen.machine().driver_data<miragemi_state>();
address_space &space = screen.machine().driver_data()->generic_space();
- UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, space, 0, 0xffff);
+ UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff);
- state->flip_screen_set(BIT(flip, 7));
+ flip_screen_set(BIT(flip, 7));
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram->buffer(), 0x400);
- deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
+ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll);
bitmap.fill(256, cliprect); /* not verified */
- deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 0x200, 0x1ff);
- deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
+ deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0);
screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0800, 0x200, 0x1ff);
return 0;
@@ -331,7 +331,7 @@ static MACHINE_CONFIG_START( mirage, miragemi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mirage)
+ MCFG_SCREEN_UPDATE_DRIVER(miragemi_state, screen_update_mirage)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
diff --git a/src/mame/drivers/mirax.c b/src/mame/drivers/mirax.c
index 6c1609cf94d..db73e306f86 100644
--- a/src/mame/drivers/mirax.c
+++ b/src/mame/drivers/mirax.c
@@ -129,6 +129,7 @@ public:
DECLARE_WRITE8_MEMBER(ay2_sel);
DECLARE_DRIVER_INIT(mirax);
virtual void palette_init();
+ UINT32 screen_update_mirax(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -219,7 +220,7 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
}
-static SCREEN_UPDATE_IND16(mirax)
+UINT32 mirax_state::screen_update_mirax(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
draw_tilemap(screen.machine(),bitmap,cliprect,1);
draw_sprites(screen.machine(),bitmap,cliprect);
@@ -465,7 +466,7 @@ static MACHINE_CONFIG_START( mirax, mirax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mirax)
+ MCFG_SCREEN_UPDATE_DRIVER(mirax_state, screen_update_mirax)
MCFG_PALETTE_LENGTH(0x40)
MCFG_GFXDECODE(mirax)
diff --git a/src/mame/drivers/missb2.c b/src/mame/drivers/missb2.c
index be1fb526fc6..42da7a77c33 100644
--- a/src/mame/drivers/missb2.c
+++ b/src/mame/drivers/missb2.c
@@ -38,14 +38,14 @@ public:
DECLARE_DRIVER_INIT(missb2);
DECLARE_MACHINE_START(missb2);
DECLARE_MACHINE_RESET(missb2);
+ UINT32 screen_update_missb2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/* Video Hardware */
-static SCREEN_UPDATE_IND16( missb2 )
+UINT32 missb2_state::screen_update_missb2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- missb2_state *state = screen.machine().driver_data<missb2_state>();
int offs;
int sx, sy, xc, yc;
int gfx_num, gfx_attr, gfx_offs;
@@ -59,12 +59,12 @@ static SCREEN_UPDATE_IND16( missb2 )
bitmap.fill(255, cliprect);
- if (!state->m_video_enable)
+ if (!m_video_enable)
return 0;
/* background map register */
- //popmessage("%02x",(*state->m_bgvram) & 0x1f);
- for (bg_offs = ((*state->m_bgvram) << 4); bg_offs < (((*state->m_bgvram) << 4) | 0xf); bg_offs++)
+ //popmessage("%02x",(*m_bgvram) & 0x1f);
+ for (bg_offs = ((*m_bgvram) << 4); bg_offs < (((*m_bgvram) << 4) | 0xf); bg_offs++)
{
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[1],
bg_offs,
@@ -77,23 +77,23 @@ static SCREEN_UPDATE_IND16( missb2 )
sx = 0;
prom = screen.machine().root_device().memregion("proms")->base();
- for (offs = 0; offs < state->m_objectram.bytes(); offs += 4)
+ for (offs = 0; offs < m_objectram.bytes(); offs += 4)
{
/* skip empty sprites */
/* this is dword aligned so the UINT32 * cast shouldn't give problems */
/* on any architecture */
- if (*(UINT32 *)(&state->m_objectram[offs]) == 0)
+ if (*(UINT32 *)(&m_objectram[offs]) == 0)
continue;
- gfx_num = state->m_objectram[offs + 1];
- gfx_attr = state->m_objectram[offs + 3];
+ gfx_num = m_objectram[offs + 1];
+ gfx_attr = m_objectram[offs + 3];
prom_line = prom + 0x80 + ((gfx_num & 0xe0) >> 1);
gfx_offs = ((gfx_num & 0x1f) * 0x80);
if ((gfx_num & 0xa0) == 0xa0)
gfx_offs |= 0x1000;
- sy = -state->m_objectram[offs + 0];
+ sy = -m_objectram[offs + 0];
for (yc = 0; yc < 32; yc++)
{
@@ -101,7 +101,7 @@ static SCREEN_UPDATE_IND16( missb2 )
if (!(prom_line[yc / 2] & 0x04)) /* next column */
{
- sx = state->m_objectram[offs + 2];
+ sx = m_objectram[offs + 2];
if (gfx_attr & 0x40) sx -= 256;
}
@@ -111,14 +111,14 @@ static SCREEN_UPDATE_IND16( missb2 )
goffs = gfx_offs + xc * 0x40 + (yc & 7) * 0x02 +
(prom_line[yc/2] & 0x03) * 0x10;
- code = state->m_videoram[goffs] + 256 * (state->m_videoram[goffs + 1] & 0x03) + 1024 * (gfx_attr & 0x0f);
- //color = (state->m_videoram[goffs + 1] & 0x3c) >> 2;
- flipx = state->m_videoram[goffs + 1] & 0x40;
- flipy = state->m_videoram[goffs + 1] & 0x80;
+ code = m_videoram[goffs] + 256 * (m_videoram[goffs + 1] & 0x03) + 1024 * (gfx_attr & 0x0f);
+ //color = (m_videoram[goffs + 1] & 0x3c) >> 2;
+ flipx = m_videoram[goffs + 1] & 0x40;
+ flipy = m_videoram[goffs + 1] & 0x80;
x = sx + xc * 8;
y = (sy + yc * 8) & 0xff;
- if (state->flip_screen())
+ if (flip_screen())
{
x = 248 - x;
y = 248 - y;
@@ -484,7 +484,7 @@ static MACHINE_CONFIG_START( missb2, missb2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(missb2)
+ MCFG_SCREEN_UPDATE_DRIVER(missb2_state, screen_update_missb2)
MCFG_GFXDECODE(missb2)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c
index d0181210700..628d703cfd5 100644
--- a/src/mame/drivers/missile.c
+++ b/src/mame/drivers/missile.c
@@ -381,6 +381,7 @@ public:
DECLARE_DRIVER_INIT(suprmatk);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_missile(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -666,10 +667,9 @@ static UINT8 read_vram(address_space &space, offs_t address)
*
*************************************/
-static SCREEN_UPDATE_IND16( missile )
+UINT32 missile_state::screen_update_missile(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- missile_state *state = screen.machine().driver_data<missile_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
int x, y;
/* draw the bitmap to the screen, looping over Y */
@@ -677,7 +677,7 @@ static SCREEN_UPDATE_IND16( missile )
{
UINT16 *dst = &bitmap.pix16(y);
- int effy = state->m_flipscreen ? ((256+24 - y) & 0xff) : y;
+ int effy = m_flipscreen ? ((256+24 - y) & 0xff) : y;
UINT8 *src = &videoram[effy * 64];
UINT8 *src3 = NULL;
@@ -1044,7 +1044,7 @@ static MACHINE_CONFIG_START( missile, missile_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(missile)
+ MCFG_SCREEN_UPDATE_DRIVER(missile_state, screen_update_missile)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mitchell.c b/src/mame/drivers/mitchell.c
index 77578fe22c9..06686a6dc48 100644
--- a/src/mame/drivers/mitchell.c
+++ b/src/mame/drivers/mitchell.c
@@ -1128,7 +1128,7 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(pang)
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE(mgakuen)
MCFG_PALETTE_LENGTH(1024) /* less colors than the others */
@@ -1171,7 +1171,7 @@ static MACHINE_CONFIG_START( pang, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
- MCFG_SCREEN_UPDATE_STATIC(pang)
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1271,7 +1271,7 @@ static MACHINE_CONFIG_START( mstworld, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
- MCFG_SCREEN_UPDATE_STATIC(pang)
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1303,7 +1303,7 @@ static MACHINE_CONFIG_START( marukin, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
- MCFG_SCREEN_UPDATE_STATIC(pang)
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1355,7 +1355,7 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
- MCFG_SCREEN_UPDATE_STATIC(pang)
+ MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mjkjidai.c b/src/mame/drivers/mjkjidai.c
index 4a43c4a50a2..7cc699b15cd 100644
--- a/src/mame/drivers/mjkjidai.c
+++ b/src/mame/drivers/mjkjidai.c
@@ -456,7 +456,7 @@ static MACHINE_CONFIG_START( mjkjidai, mjkjidai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mjkjidai)
+ MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai)
MCFG_GFXDECODE(mjkjidai)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/mjsister.c b/src/mame/drivers/mjsister.c
index d5c4a25fe11..bb5cb4c445a 100644
--- a/src/mame/drivers/mjsister.c
+++ b/src/mame/drivers/mjsister.c
@@ -60,6 +60,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mjsister(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -127,32 +128,31 @@ WRITE8_MEMBER(mjsister_state::mjsister_videoram_w)
}
}
-static SCREEN_UPDATE_IND16( mjsister )
+UINT32 mjsister_state::screen_update_mjsister(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mjsister_state *state = screen.machine().driver_data<mjsister_state>();
- int flip = state->m_flip_screen;
+ int flip = m_flip_screen;
int i, j;
- if (state->m_screen_redraw)
+ if (m_screen_redraw)
{
int offs;
for (offs = 0; offs < 0x8000; offs++)
{
- mjsister_plot0(screen.machine(), offs, state->m_videoram0[offs]);
- mjsister_plot1(screen.machine(), offs, state->m_videoram1[offs]);
+ mjsister_plot0(screen.machine(), offs, m_videoram0[offs]);
+ mjsister_plot1(screen.machine(), offs, m_videoram1[offs]);
}
- state->m_screen_redraw = 0;
+ m_screen_redraw = 0;
}
- if (state->m_video_enable)
+ if (m_video_enable)
{
for (i = 0; i < 256; i++)
for (j = 0; j < 4; j++)
- bitmap.pix16(i, 256 + j) = state->m_colorbank * 0x20;
+ bitmap.pix16(i, 256 + j) = m_colorbank * 0x20;
- copybitmap(bitmap, *state->m_tmpbitmap0, flip, flip, 0, 0, cliprect);
- copybitmap_trans(bitmap, *state->m_tmpbitmap1, flip, flip, 2, 0, cliprect, 0);
+ copybitmap(bitmap, *m_tmpbitmap0, flip, flip, 0, 0, cliprect);
+ copybitmap_trans(bitmap, *m_tmpbitmap1, flip, flip, 2, 0, cliprect, 0);
}
else
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -508,7 +508,7 @@ static MACHINE_CONFIG_START( mjsister, mjsister_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256+4, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+4, 8, 247)
- MCFG_SCREEN_UPDATE_STATIC(mjsister)
+ MCFG_SCREEN_UPDATE_DRIVER(mjsister_state, screen_update_mjsister)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mlanding.c b/src/mame/drivers/mlanding.c
index e03dd2b8af3..20af7c33a37 100644
--- a/src/mame/drivers/mlanding.c
+++ b/src/mame/drivers/mlanding.c
@@ -77,6 +77,7 @@ public:
DECLARE_DRIVER_INIT(mlanding);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mlanding(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -89,22 +90,21 @@ void mlanding_state::video_start()
// 256: Cockpit
// 512: control centre screen
// 768: plane landing sequence
-static SCREEN_UPDATE_IND16(mlanding)
+UINT32 mlanding_state::screen_update_mlanding(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mlanding_state *state = screen.machine().driver_data<mlanding_state>();
int x, y;
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- UINT16 *src = &state->m_g_ram[y * 512/2 + cliprect.min_x];
+ UINT16 *src = &m_g_ram[y * 512/2 + cliprect.min_x];
UINT16 *dst = &bitmap.pix16(y, cliprect.min_x);
for (x = cliprect.min_x; x <= cliprect.max_x; x += 2)
{
UINT16 srcpix = *src++;
- *dst++ = screen.machine().pens[256+(srcpix & 0xff) + (state->m_pal_fg_bank & 1 ? 0x100 : 0x000)];
- *dst++ = screen.machine().pens[256+(srcpix >> 8) + (state->m_pal_fg_bank & 1 ? 0x100 : 0x000)];
+ *dst++ = screen.machine().pens[256+(srcpix & 0xff) + (m_pal_fg_bank & 1 ? 0x100 : 0x000)];
+ *dst++ = screen.machine().pens[256+(srcpix >> 8) + (m_pal_fg_bank & 1 ? 0x100 : 0x000)];
}
}
@@ -794,7 +794,7 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 14*8, 511)
- MCFG_SCREEN_UPDATE_STATIC(mlanding)
+ MCFG_SCREEN_UPDATE_DRIVER(mlanding_state, screen_update_mlanding)
MCFG_PALETTE_LENGTH(512*16)
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index a7421e1b2b5..3181e0ff12c 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -1535,8 +1535,8 @@ static MACHINE_CONFIG_START( model1, model1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
- MCFG_SCREEN_UPDATE_STATIC(model1)
- MCFG_SCREEN_VBLANK_STATIC(model1)
+ MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1)
+ MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1)
MCFG_PALETTE_LENGTH(8192)
@@ -1584,8 +1584,8 @@ static MACHINE_CONFIG_START( model1_vr, model1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
- MCFG_SCREEN_UPDATE_STATIC(model1)
- MCFG_SCREEN_VBLANK_STATIC(model1)
+ MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1)
+ MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c
index 8502d9e9a0b..ae3de414bb6 100644
--- a/src/mame/drivers/model2.c
+++ b/src/mame/drivers/model2.c
@@ -2001,7 +2001,7 @@ static MACHINE_CONFIG_START( model2o, model2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(model2)
+ MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2059,7 +2059,7 @@ static MACHINE_CONFIG_START( model2a, model2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(model2)
+ MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2162,7 +2162,7 @@ static MACHINE_CONFIG_START( model2b, model2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(model2)
+ MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2209,7 +2209,7 @@ static MACHINE_CONFIG_START( model2c, model2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(model2)
+ MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index f7d9f9f74f0..41cdae70b67 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -5309,7 +5309,7 @@ static MACHINE_CONFIG_START( model3_10, model3_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(512, 400)
- MCFG_SCREEN_UPDATE_STATIC(model3)
+ MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5350,7 +5350,7 @@ static MACHINE_CONFIG_START( model3_15, model3_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE_STATIC(model3)
+ MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5391,7 +5391,7 @@ static MACHINE_CONFIG_START( model3_20, model3_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE_STATIC(model3)
+ MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5430,7 +5430,7 @@ static MACHINE_CONFIG_START( model3_21, model3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE_STATIC(model3)
+ MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
diff --git a/src/mame/drivers/mogura.c b/src/mame/drivers/mogura.c
index 2e3bb842aef..79aafc18472 100644
--- a/src/mame/drivers/mogura.c
+++ b/src/mame/drivers/mogura.c
@@ -31,6 +31,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_mogura(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -86,21 +87,20 @@ void mogura_state::video_start()
m_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(mogura_state::get_mogura_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
-static SCREEN_UPDATE_IND16( mogura )
+UINT32 mogura_state::screen_update_mogura(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mogura_state *state = screen.machine().driver_data<mogura_state>();
const rectangle &visarea = screen.visible_area();
/* tilemap layout is a bit strange ... */
rectangle clip = visarea;
clip.max_x = 256 - 1;
- state->m_tilemap->set_scrollx(0, 256);
- state->m_tilemap->draw(bitmap, clip, 0, 0);
+ m_tilemap->set_scrollx(0, 256);
+ m_tilemap->draw(bitmap, clip, 0, 0);
clip.min_x = 256;
clip.max_x = 512 - 1;
- state->m_tilemap->set_scrollx(0, -128);
- state->m_tilemap->draw(bitmap, clip, 0, 0);
+ m_tilemap->set_scrollx(0, -128);
+ m_tilemap->draw(bitmap, clip, 0, 0);
return 0;
}
@@ -215,7 +215,7 @@ static MACHINE_CONFIG_START( mogura, mogura_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(mogura)
+ MCFG_SCREEN_UPDATE_DRIVER(mogura_state, screen_update_mogura)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mole.c b/src/mame/drivers/mole.c
index 45e3c676fea..3d96b5abe69 100644
--- a/src/mame/drivers/mole.c
+++ b/src/mame/drivers/mole.c
@@ -74,6 +74,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_mole(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -122,11 +123,10 @@ WRITE8_MEMBER(mole_state::mole_flipscreen_w)
flip_screen_set(data & 0x01);
}
-static SCREEN_UPDATE_IND16( mole )
+UINT32 mole_state::screen_update_mole(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mole_state *state = screen.machine().driver_data<mole_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -325,7 +325,7 @@ static MACHINE_CONFIG_START( mole, mole_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 25*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mole)
+ MCFG_SCREEN_UPDATE_DRIVER(mole_state, screen_update_mole)
MCFG_GFXDECODE(mole)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/momoko.c b/src/mame/drivers/momoko.c
index 59802748c2a..c053fb7b04b 100644
--- a/src/mame/drivers/momoko.c
+++ b/src/mame/drivers/momoko.c
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( momoko, momoko_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 29*8-1)
- MCFG_SCREEN_UPDATE_STATIC(momoko)
+ MCFG_SCREEN_UPDATE_DRIVER(momoko_state, screen_update_momoko)
MCFG_GFXDECODE(momoko)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/monzagp.c b/src/mame/drivers/monzagp.c
index 5c8588964e3..9d8c39b3b13 100644
--- a/src/mame/drivers/monzagp.c
+++ b/src/mame/drivers/monzagp.c
@@ -55,6 +55,7 @@ public:
DECLARE_WRITE8_MEMBER(port3_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_monzagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -69,33 +70,32 @@ void monzagp_state::video_start()
m_vram = auto_alloc_array(machine(), UINT8, 0x10000);
}
-static SCREEN_UPDATE_IND16(monzagp)
+UINT32 monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- monzagp_state *state = screen.machine().driver_data<monzagp_state>();
int x,y;
if(screen.machine().input().code_pressed_once(KEYCODE_Z))
- state->m_bank--;
+ m_bank--;
if(screen.machine().input().code_pressed_once(KEYCODE_X))
- state->m_bank++;
+ m_bank++;
if(screen.machine().input().code_pressed_once(KEYCODE_Q))
{
- state->m_screenw--;
- printf("%x\n",state->m_screenw);
+ m_screenw--;
+ printf("%x\n",m_screenw);
}
if(screen.machine().input().code_pressed_once(KEYCODE_W))
{
- state->m_screenw++;
- printf("%x\n",state->m_screenw);
+ m_screenw++;
+ printf("%x\n",m_screenw);
}
if(screen.machine().input().code_pressed_once(KEYCODE_A))
{
FILE * p=fopen("vram.bin","wb");
- fwrite(&state->m_vram[0],1,0x10000,p);
+ fwrite(&m_vram[0],1,0x10000,p);
fclose(p);
}
@@ -104,9 +104,9 @@ static SCREEN_UPDATE_IND16(monzagp)
{
for(x=0;x<256;x++)
{
- drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[state->m_bank&1],
- state->m_vram[y*state->m_screenw+x],
- //(state->m_vram[y*state->m_screenw+x]&0x3f)+(state->m_bank>>1)*64,
+ drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[m_bank&1],
+ m_vram[y*m_screenw+x],
+ //(m_vram[y*m_screenw+x]&0x3f)+(m_bank>>1)*64,
0,
0, 0,
x*8,y*8,
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( monzagp, monzagp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(monzagp)
+ MCFG_SCREEN_UPDATE_DRIVER(monzagp_state, screen_update_monzagp)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/moo.c b/src/mame/drivers/moo.c
index 8fbca97b189..4e857bf98a9 100644
--- a/src/mame/drivers/moo.c
+++ b/src/mame/drivers/moo.c
@@ -535,7 +535,7 @@ static MACHINE_CONFIG_START( moo, moo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(moo)
+ MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
MCFG_PALETTE_LENGTH(2048)
@@ -578,7 +578,7 @@ static MACHINE_CONFIG_START( moobl, moo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(moo)
+ MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/mosaic.c b/src/mame/drivers/mosaic.c
index 048f42228bf..2f19198031c 100644
--- a/src/mame/drivers/mosaic.c
+++ b/src/mame/drivers/mosaic.c
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( mosaic, mosaic_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mosaic)
+ MCFG_SCREEN_UPDATE_DRIVER(mosaic_state, screen_update_mosaic)
MCFG_GFXDECODE(mosaic)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mouser.c b/src/mame/drivers/mouser.c
index 8af6bb0c178..fe4c2b6a112 100644
--- a/src/mame/drivers/mouser.c
+++ b/src/mame/drivers/mouser.c
@@ -219,7 +219,7 @@ static MACHINE_CONFIG_START( mouser, mouser_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mouser)
+ MCFG_SCREEN_UPDATE_DRIVER(mouser_state, screen_update_mouser)
MCFG_GFXDECODE(mouser)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/mpoker.c b/src/mame/drivers/mpoker.c
index 08237846a5e..2da44d68377 100644
--- a/src/mame/drivers/mpoker.c
+++ b/src/mame/drivers/mpoker.c
@@ -197,6 +197,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_mpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -205,9 +206,8 @@ void mpoker_state::video_start()
}
-static SCREEN_UPDATE_IND16(mpoker)
+UINT32 mpoker_state::screen_update_mpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mpoker_state *state = screen.machine().driver_data<mpoker_state>();
int y,x;
int count;
gfx_element *gfx = screen.machine().gfx[0];
@@ -217,8 +217,8 @@ static SCREEN_UPDATE_IND16(mpoker)
{
for (x=0;x<32;x++)
{
- UINT16 dat = state->m_video[count];
- UINT16 col = state->m_video[count+0x400] & 0x7f;
+ UINT16 dat = m_video[count];
+ UINT16 col = m_video[count+0x400] & 0x7f;
drawgfx_opaque(bitmap,cliprect,gfx,dat,col,0,0,x*16,y*16);
count++;
}
@@ -596,7 +596,7 @@ static MACHINE_CONFIG_START( mpoker, mpoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(mpoker)
+ MCFG_SCREEN_UPDATE_DRIVER(mpoker_state, screen_update_mpoker)
MCFG_GFXDECODE(mpoker)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/mpu4dealem.c b/src/mame/drivers/mpu4dealem.c
index 0f33228f2a7..21d95123826 100644
--- a/src/mame/drivers/mpu4dealem.c
+++ b/src/mame/drivers/mpu4dealem.c
@@ -30,6 +30,7 @@ public:
optional_shared_ptr<UINT8> m_dealem_videoram;
DECLARE_MACHINE_RESET(dealem_vid);
DECLARE_PALETTE_INIT(dealem);
+ UINT32 screen_update_dealem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -112,9 +113,8 @@ PALETTE_INIT_MEMBER(mpu4dealem_state,dealem)
}
-static SCREEN_UPDATE_IND16(dealem)
+UINT32 mpu4dealem_state::screen_update_dealem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mpu4dealem_state *state = screen.machine().driver_data<mpu4dealem_state>();
int x,y;
int count = 0;
@@ -122,7 +122,7 @@ static SCREEN_UPDATE_IND16(dealem)
{
for (x = 0; x < 40; x++)
{
- int tile = state->m_dealem_videoram[count + 0x1000] | (state->m_dealem_videoram[count] << 8);
+ int tile = m_dealem_videoram[count + 0x1000] | (m_dealem_videoram[count] << 8);
count++;
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],tile,0,0,0,x * 8,y * 8);
}
@@ -225,7 +225,7 @@ static MACHINE_CONFIG_START( dealem, mpu4dealem_state )
MCFG_SCREEN_SIZE((54+1)*8, (32+1)*8) /* Taken from 6845 init, registers 00 & 04. Normally programmed with (value-1) */
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 31*8-1) /* Taken from 6845 init, registers 01 & 06 */
MCFG_SCREEN_REFRESH_RATE(56) /* Measured accurately from the flip-flop, but 6845 handles this */
- MCFG_SCREEN_UPDATE_STATIC(dealem)
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4dealem_state, screen_update_dealem)
MCFG_GFXDECODE(dealem)
diff --git a/src/mame/drivers/mpu4plasma.c b/src/mame/drivers/mpu4plasma.c
index 25b7d482825..d908c29d5f1 100644
--- a/src/mame/drivers/mpu4plasma.c
+++ b/src/mame/drivers/mpu4plasma.c
@@ -30,6 +30,7 @@ public:
{
}
+ UINT32 screen_update_mpu4plasma(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -48,13 +49,12 @@ static ADDRESS_MAP_START( mpu4plasma_map, AS_PROGRAM, 16, mpu4plasma_state )
AM_RANGE(0xffff04, 0xffff05) AM_WRITE( mpu4plasma_unk_w )
ADDRESS_MAP_END
-SCREEN_UPDATE_IND16( mpu4plasma )
+UINT32 mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// don't know if this really gets drawn straight from ram..
- mpu4plasma_state *state = screen.machine().driver_data<mpu4plasma_state>();
int base = 0x1600 / 2;
- UINT16* rambase = state->m_plasmaram;
+ UINT16* rambase = m_plasmaram;
UINT16* dst_bitmap;
int i,y,x,p;
@@ -94,7 +94,7 @@ MACHINE_CONFIG_DERIVED_CLASS( mpu4plasma , mod2, mpu4plasma_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0*8, 40-1)
- MCFG_SCREEN_UPDATE_STATIC(mpu4plasma)
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4plasma_state, screen_update_mpu4plasma)
MCFG_PALETTE_LENGTH(0x200)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c
index a9592f670e1..8f6a9563260 100644
--- a/src/mame/drivers/mpu4vid.c
+++ b/src/mame/drivers/mpu4vid.c
@@ -268,6 +268,7 @@ public:
DECLARE_MACHINE_START(mpu4_vid);
DECLARE_MACHINE_RESET(mpu4_vid);
DECLARE_VIDEO_START(mpu4_vid);
+ UINT32 screen_update_mpu4_vid(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -511,13 +512,12 @@ static const gfx_layout mpu4_vid_char_16x16_layout =
-static SCREEN_UPDATE_RGB32(mpu4_vid)
+UINT32 mpu4vid_state::screen_update_mpu4_vid(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- mpu4vid_state *state = screen.machine().driver_data<mpu4vid_state>();
bitmap.fill(0, cliprect);
- state->m_scn2674->scn2574_draw(screen.machine(), bitmap, cliprect, state->m_vid_mainram );
+ m_scn2674->scn2574_draw(screen.machine(), bitmap, cliprect, m_vid_mainram );
return 0;
}
@@ -1518,7 +1518,7 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_SCREEN_VISIBLE_AREA(0, (63*8)+(0)-1, 0, (37*8)+0-1)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_UPDATE_STATIC(mpu4_vid)
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4vid_state, screen_update_mpu4_vid)
MCFG_DEVICE_ADD("scn2674_vid", SCN2674_VIDEO, 0)
scn2674_device::set_irq_update_callback(*device, update_mpu68_interrupts);
diff --git a/src/mame/drivers/mquake.c b/src/mame/drivers/mquake.c
index 82a833557e7..d0bf3538901 100644
--- a/src/mame/drivers/mquake.c
+++ b/src/mame/drivers/mquake.c
@@ -354,7 +354,7 @@ static MACHINE_CONFIG_START( mquake, amiga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 262)
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
- MCFG_SCREEN_UPDATE_STATIC(amiga)
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT_OVERRIDE(amiga_state,amiga)
diff --git a/src/mame/drivers/mrdo.c b/src/mame/drivers/mrdo.c
index 416ff575471..0bf17f4204d 100644
--- a/src/mame/drivers/mrdo.c
+++ b/src/mame/drivers/mrdo.c
@@ -191,7 +191,7 @@ static MACHINE_CONFIG_START( mrdo, mrdo_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/4, 312, 8, 248, 262, 32, 224)
- MCFG_SCREEN_UPDATE_STATIC(mrdo)
+ MCFG_SCREEN_UPDATE_DRIVER(mrdo_state, screen_update_mrdo)
MCFG_GFXDECODE(mrdo)
MCFG_PALETTE_LENGTH(64*4+16*4)
diff --git a/src/mame/drivers/mrflea.c b/src/mame/drivers/mrflea.c
index 863651885f3..c5a00afa7a0 100644
--- a/src/mame/drivers/mrflea.c
+++ b/src/mame/drivers/mrflea.c
@@ -373,7 +373,7 @@ static MACHINE_CONFIG_START( mrflea, mrflea_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mrflea)
+ MCFG_SCREEN_UPDATE_DRIVER(mrflea_state, screen_update_mrflea)
MCFG_GFXDECODE(mrflea)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mrjong.c b/src/mame/drivers/mrjong.c
index 22e718ce728..c649556c755 100644
--- a/src/mame/drivers/mrjong.c
+++ b/src/mame/drivers/mrjong.c
@@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( mrjong, mrjong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mrjong)
+ MCFG_SCREEN_UPDATE_DRIVER(mrjong_state, screen_update_mrjong)
MCFG_GFXDECODE(mrjong)
MCFG_PALETTE_LENGTH(4*32)
diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c
index a877facba34..e9a02730acb 100644
--- a/src/mame/drivers/ms32.c
+++ b/src/mame/drivers/ms32.c
@@ -1408,7 +1408,7 @@ static MACHINE_CONFIG_START( ms32, ms32_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ms32)
+ MCFG_SCREEN_UPDATE_DRIVER(ms32_state, screen_update_ms32)
MCFG_GFXDECODE(ms32)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/msisaac.c b/src/mame/drivers/msisaac.c
index c68d2f96cc8..a0bd58410be 100644
--- a/src/mame/drivers/msisaac.c
+++ b/src/mame/drivers/msisaac.c
@@ -497,7 +497,7 @@ static MACHINE_CONFIG_START( msisaac, msisaac_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(msisaac)
+ MCFG_SCREEN_UPDATE_DRIVER(msisaac_state, screen_update_msisaac)
MCFG_GFXDECODE(msisaac)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/mugsmash.c b/src/mame/drivers/mugsmash.c
index d48c6265aad..cea78832e1a 100644
--- a/src/mame/drivers/mugsmash.c
+++ b/src/mame/drivers/mugsmash.c
@@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( mugsmash, mugsmash_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mugsmash)
+ MCFG_SCREEN_UPDATE_DRIVER(mugsmash_state, screen_update_mugsmash)
MCFG_GFXDECODE(mugsmash)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c
index 4845d5a5033..49eef71823f 100644
--- a/src/mame/drivers/multfish.c
+++ b/src/mame/drivers/multfish.c
@@ -239,6 +239,7 @@ public:
virtual void machine_reset();
virtual void video_start();
DECLARE_MACHINE_RESET(island2a);
+ UINT32 screen_update_multfish(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(multfish_state::get_multfish_tile_info)
@@ -280,28 +281,27 @@ void multfish_state::video_start()
m_reel_tilemap->set_scroll_cols(64);
}
-static SCREEN_UPDATE_IND16(multfish)
+UINT32 multfish_state::screen_update_multfish(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- multfish_state *state = screen.machine().driver_data<multfish_state>();
int i;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (!state->m_disp_enable) return 0;
+ if (!m_disp_enable) return 0;
/* Draw lower part of static tilemap (low pri tiles) */
- state->m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1),0);
+ m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1),0);
/* Setup the column scroll and draw the reels */
for (i=0;i<64;i++)
{
- int colscroll = (state->m_vid[i*2] | state->m_vid[i*2+1] << 8);
- state->m_reel_tilemap->set_scrolly(i, colscroll );
+ int colscroll = (m_vid[i*2] | m_vid[i*2+1] << 8);
+ m_reel_tilemap->set_scrolly(i, colscroll );
}
- state->m_reel_tilemap->draw(bitmap, cliprect, 0,0);
+ m_reel_tilemap->draw(bitmap, cliprect, 0,0);
/* Draw upper part of static tilemap (high pri tiles) */
- state->m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(0),0);
+ m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_CATEGORY(0),0);
return 0;
}
@@ -1108,7 +1108,7 @@ static MACHINE_CONFIG_START( multfish, multfish_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(17*16, 1024-16*7-1, 1*16, 32*16-1*16-1)
- MCFG_SCREEN_UPDATE_STATIC(multfish)
+ MCFG_SCREEN_UPDATE_DRIVER(multfish_state, screen_update_multfish)
MCFG_GFXDECODE(multfish)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/multigam.c b/src/mame/drivers/multigam.c
index 084e2abb536..415c38508e3 100644
--- a/src/mame/drivers/multigam.c
+++ b/src/mame/drivers/multigam.c
@@ -144,6 +144,7 @@ public:
DECLARE_MACHINE_START(multigm3);
DECLARE_MACHINE_RESET(multigm3);
DECLARE_MACHINE_START(supergm3);
+ UINT32 screen_update_multigam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -1114,7 +1115,7 @@ void multigam_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( multigam )
+UINT32 multigam_state::screen_update_multigam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* render the ppu */
ppu2c0x_device *ppu = screen.machine().device<ppu2c0x_device>("ppu");
@@ -1203,7 +1204,7 @@ static MACHINE_CONFIG_START( multigam, multigam_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(multigam)
+ MCFG_SCREEN_UPDATE_DRIVER(multigam_state, screen_update_multigam)
MCFG_GFXDECODE(multigam)
MCFG_PALETTE_LENGTH(8*4*16)
diff --git a/src/mame/drivers/munchmo.c b/src/mame/drivers/munchmo.c
index bc233fdb25a..4c199cdeca0 100644
--- a/src/mame/drivers/munchmo.c
+++ b/src/mame/drivers/munchmo.c
@@ -343,7 +343,7 @@ static MACHINE_CONFIG_START( mnchmobl, munchmo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256+32+32, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+32+32,0, 255-16)
- MCFG_SCREEN_UPDATE_STATIC(mnchmobl)
+ MCFG_SCREEN_UPDATE_DRIVER(munchmo_state, screen_update_mnchmobl)
MCFG_GFXDECODE(mnchmobl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/murogem.c b/src/mame/drivers/murogem.c
index 0ee9369bd98..441c57cb866 100644
--- a/src/mame/drivers/murogem.c
+++ b/src/mame/drivers/murogem.c
@@ -120,6 +120,7 @@ public:
required_shared_ptr<UINT8> m_videoram;
DECLARE_WRITE8_MEMBER(outport_w);
virtual void palette_init();
+ UINT32 screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -202,9 +203,8 @@ GFXDECODE_END
void murogem_state::palette_init()
{}
-static SCREEN_UPDATE_IND16(murogem)
+UINT32 murogem_state::screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- murogem_state *state = screen.machine().driver_data<murogem_state>();
int xx,yy,count;
count = 0x000;
@@ -214,8 +214,8 @@ static SCREEN_UPDATE_IND16(murogem)
{
for(xx=0;xx<32;xx++)
{
- int tileno = state->m_videoram[count]&0x3f;
- int attr = state->m_videoram[count+0x400]&0x0f;
+ int tileno = m_videoram[count]&0x3f;
+ int attr = m_videoram[count+0x400]&0x0f;
drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[0],tileno,attr,0,0,xx*8,yy*8,0);
@@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( murogem, murogem_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((39+1)*8, (38+1)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(murogem)
+ MCFG_SCREEN_UPDATE_DRIVER(murogem_state, screen_update_murogem)
MCFG_GFXDECODE(murogem)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/murogmbl.c b/src/mame/drivers/murogmbl.c
index 20bb09d08fb..5524bd163e5 100644
--- a/src/mame/drivers/murogmbl.c
+++ b/src/mame/drivers/murogmbl.c
@@ -48,6 +48,7 @@ public:
required_shared_ptr<UINT8> m_video;
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_murogmbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -94,9 +95,8 @@ void murogmbl_state::video_start()
}
-static SCREEN_UPDATE_IND16(murogmbl)
+UINT32 murogmbl_state::screen_update_murogmbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- murogmbl_state *state = screen.machine().driver_data<murogmbl_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count = 0;
@@ -106,7 +106,7 @@ static SCREEN_UPDATE_IND16(murogmbl)
{
for (x = 0; x < 32; x++)
{
- int tile = state->m_video[count];
+ int tile = m_video[count];
drawgfx_opaque(bitmap, cliprect, gfx, tile, 0, 0, 0, x * 8, y * 8);
count++;
@@ -194,7 +194,7 @@ static MACHINE_CONFIG_START( murogmbl, murogmbl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(murogmbl)
+ MCFG_SCREEN_UPDATE_DRIVER(murogmbl_state, screen_update_murogmbl)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/mustache.c b/src/mame/drivers/mustache.c
index 23807101f2a..80519a8d3e8 100644
--- a/src/mame/drivers/mustache.c
+++ b/src/mame/drivers/mustache.c
@@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mustache)
+ MCFG_SCREEN_UPDATE_DRIVER(mustache_state, screen_update_mustache)
MCFG_GFXDECODE(mustache)
MCFG_PALETTE_LENGTH(8*16+16*8)
diff --git a/src/mame/drivers/mw8080bw.c b/src/mame/drivers/mw8080bw.c
index c40d5ff3276..a12c6a37892 100644
--- a/src/mame/drivers/mw8080bw.c
+++ b/src/mame/drivers/mw8080bw.c
@@ -231,7 +231,7 @@ MACHINE_CONFIG_START( mw8080bw_root, mw8080bw_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(mw8080bw)
+ MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_mw8080bw)
MACHINE_CONFIG_END
@@ -2269,7 +2269,7 @@ static MACHINE_CONFIG_DERIVED( spcenctr, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(spcenctr)
+ MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_spcenctr)
/* audio hardware */
MCFG_FRAGMENT_ADD(spcenctr_audio)
@@ -2356,8 +2356,8 @@ static MACHINE_CONFIG_DERIVED( phantom2, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(phantom2)
- MCFG_SCREEN_VBLANK_STATIC(phantom2)
+ MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_phantom2)
+ MCFG_SCREEN_VBLANK_DRIVER(mw8080bw_state, screen_eof_phantom2)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
@@ -2705,7 +2705,7 @@ MACHINE_CONFIG_DERIVED( invaders, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(invaders)
+ MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_invaders)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
diff --git a/src/mame/drivers/mwarr.c b/src/mame/drivers/mwarr.c
index fcb04051420..b73b926b4c3 100644
--- a/src/mame/drivers/mwarr.c
+++ b/src/mame/drivers/mwarr.c
@@ -99,6 +99,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_mwarr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -480,57 +481,56 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16( mwarr )
+UINT32 mwarr_state::screen_update_mwarr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- mwarr_state *state = screen.machine().driver_data<mwarr_state>();
int i;
screen.machine().priority_bitmap.fill(0, cliprect);
- if (BIT(state->m_vidattrram[6], 0))
+ if (BIT(m_vidattrram[6], 0))
{
for (i = 0; i < 256; i++)
- state->m_bg_tilemap->set_scrollx(i, state->m_bg_scrollram[i] + 20);
+ m_bg_tilemap->set_scrollx(i, m_bg_scrollram[i] + 20);
}
else
{
for (i = 0; i < 256; i++)
- state->m_bg_tilemap->set_scrollx(i, state->m_bg_scrollram[0] + 19);
+ m_bg_tilemap->set_scrollx(i, m_bg_scrollram[0] + 19);
}
- if (BIT(state->m_vidattrram[6], 2))
+ if (BIT(m_vidattrram[6], 2))
{
for (i = 0; i < 256; i++)
- state->m_mlow_tilemap->set_scrollx(i, state->m_mlow_scrollram[i] + 19);
+ m_mlow_tilemap->set_scrollx(i, m_mlow_scrollram[i] + 19);
}
else
{
for (i = 0; i < 256; i++)
- state->m_mlow_tilemap->set_scrollx(i, state->m_mlow_scrollram[0] + 19);
+ m_mlow_tilemap->set_scrollx(i, m_mlow_scrollram[0] + 19);
}
- if (BIT(state->m_vidattrram[6], 4))
+ if (BIT(m_vidattrram[6], 4))
{
for (i = 0; i < 256; i++)
- state->m_mhigh_tilemap->set_scrollx(i, state->m_mhigh_scrollram[i] + 19);
+ m_mhigh_tilemap->set_scrollx(i, m_mhigh_scrollram[i] + 19);
}
else
{
for (i = 0; i < 256; i++)
- state->m_mhigh_tilemap->set_scrollx(i, state->m_mhigh_scrollram[0] + 19);
+ m_mhigh_tilemap->set_scrollx(i, m_mhigh_scrollram[0] + 19);
}
- state->m_bg_tilemap->set_scrolly(0, state->m_vidattrram[1] + 1);
- state->m_mlow_tilemap->set_scrolly(0, state->m_vidattrram[2] + 1);
- state->m_mhigh_tilemap->set_scrolly(0, state->m_vidattrram[3] + 1);
+ m_bg_tilemap->set_scrolly(0, m_vidattrram[1] + 1);
+ m_mlow_tilemap->set_scrolly(0, m_vidattrram[2] + 1);
+ m_mhigh_tilemap->set_scrolly(0, m_vidattrram[3] + 1);
- state->m_tx_tilemap->set_scrollx(0, state->m_vidattrram[0] + 16);
- state->m_tx_tilemap->set_scrolly(0, state->m_vidattrram[4] + 1);
+ m_tx_tilemap->set_scrollx(0, m_vidattrram[0] + 16);
+ m_tx_tilemap->set_scrolly(0, m_vidattrram[4] + 1);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0x01);
- state->m_mlow_tilemap->draw(bitmap, cliprect, 0, 0x02);
- state->m_mhigh_tilemap->draw(bitmap, cliprect, 0, 0x04);
- state->m_tx_tilemap->draw(bitmap, cliprect, 0, 0x10);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0x01);
+ m_mlow_tilemap->draw(bitmap, cliprect, 0, 0x02);
+ m_mhigh_tilemap->draw(bitmap, cliprect, 0, 0x04);
+ m_tx_tilemap->draw(bitmap, cliprect, 0, 0x10);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -567,7 +567,7 @@ static MACHINE_CONFIG_START( mwarr, mwarr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8+1, 48*8-1-8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(mwarr)
+ MCFG_SCREEN_UPDATE_DRIVER(mwarr_state, screen_update_mwarr)
MCFG_GFXDECODE(mwarr)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c
index 94405f64751..666fe8775e0 100644
--- a/src/mame/drivers/mystwarr.c
+++ b/src/mame/drivers/mystwarr.c
@@ -1009,7 +1009,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(mystwarr)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_mystwarr)
MCFG_PALETTE_LENGTH(2048)
@@ -1043,7 +1043,7 @@ static MACHINE_CONFIG_DERIVED( viostorm, mystwarr )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,viostorm)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(metamrph)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_metamrph)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
@@ -1068,7 +1068,7 @@ static MACHINE_CONFIG_DERIVED( metamrph, mystwarr )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,metamrph)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(metamrph)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_metamrph)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
@@ -1094,7 +1094,7 @@ static MACHINE_CONFIG_DERIVED( dadandrn, mystwarr )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,dadandrn)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(dadandrn)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_dadandrn)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
@@ -1123,7 +1123,7 @@ static MACHINE_CONFIG_DERIVED( gaiapols, mystwarr )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,gaiapols)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(dadandrn)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_dadandrn)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
@@ -1150,7 +1150,7 @@ static MACHINE_CONFIG_DERIVED( martchmp, mystwarr )
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,martchmp)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(martchmp)
+ MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_martchmp)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(32, 32+384-1, 16, 16+224-1)
diff --git a/src/mame/drivers/n8080.c b/src/mame/drivers/n8080.c
index 912dad6c8b1..340bf43130a 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -554,7 +554,7 @@ static MACHINE_CONFIG_START( spacefev, n8080_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE_STATIC(spacefev)
+ MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_spacefev)
MCFG_PALETTE_LENGTH(8)
MCFG_PALETTE_INIT_OVERRIDE(n8080_state,n8080)
@@ -584,7 +584,7 @@ static MACHINE_CONFIG_START( sheriff, n8080_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE_STATIC(sheriff)
+ MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_sheriff)
MCFG_PALETTE_LENGTH(8)
MCFG_PALETTE_INIT_OVERRIDE(n8080_state,n8080)
@@ -625,8 +625,8 @@ static MACHINE_CONFIG_START( helifire, n8080_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE_STATIC(helifire)
- MCFG_SCREEN_VBLANK_STATIC(helifire)
+ MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_helifire)
+ MCFG_SCREEN_VBLANK_DRIVER(n8080_state, screen_eof_helifire)
MCFG_PALETTE_LENGTH(8 + 0x400)
MCFG_PALETTE_INIT_OVERRIDE(n8080_state,helifire)
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index 1f7ac2f4501..1ee91ab2bd7 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -604,7 +604,7 @@ static MACHINE_CONFIG_START( namcofl, namcofl_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(NAMCOFL_HTOTAL, NAMCOFL_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1)
- MCFG_SCREEN_UPDATE_STATIC(namcofl)
+ MCFG_SCREEN_UPDATE_DRIVER(namcofl_state, screen_update_namcofl)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/namcona1.c b/src/mame/drivers/namcona1.c
index 522dca08f48..979293985d3 100644
--- a/src/mame/drivers/namcona1.c
+++ b/src/mame/drivers/namcona1.c
@@ -1026,7 +1026,7 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8, 38*8-1-8, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(namcona1)
+ MCFG_SCREEN_UPDATE_DRIVER(namcona1_state, screen_update_namcona1)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namconb1.c b/src/mame/drivers/namconb1.c
index fd5206f0b4b..0528ed66d20 100644
--- a/src/mame/drivers/namconb1.c
+++ b/src/mame/drivers/namconb1.c
@@ -1024,7 +1024,7 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_SCREEN_REFRESH_RATE(59.7)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
- MCFG_SCREEN_UPDATE_STATIC(namconb1)
+ MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb1)
MCFG_GFXDECODE(namconb1)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1056,7 +1056,7 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_SCREEN_REFRESH_RATE(59.7)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
- MCFG_SCREEN_UPDATE_STATIC(namconb2)
+ MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb2)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c
index aee010d139c..8b266ccdcaf 100644
--- a/src/mame/drivers/namcos1.c
+++ b/src/mame/drivers/namcos1.c
@@ -1111,8 +1111,8 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(9 + 8*8, 9 + 44*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(namcos1)
- MCFG_SCREEN_VBLANK_STATIC(namcos1)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update_namcos1)
+ MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof_namcos1)
MCFG_GFXDECODE(namcos1)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namcos21.c b/src/mame/drivers/namcos21.c
index 562ec9dfecf..683d70f895b 100644
--- a/src/mame/drivers/namcos21.c
+++ b/src/mame/drivers/namcos21.c
@@ -1526,7 +1526,7 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE_STATIC(namcos21)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
MCFG_GFXDECODE(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
@@ -1581,7 +1581,7 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE_STATIC(namcos21)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
MCFG_GFXDECODE(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
@@ -1640,7 +1640,7 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE_STATIC(namcos21)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c
index dab1af6b3d5..06599622542 100644
--- a/src/mame/drivers/namcos22.c
+++ b/src/mame/drivers/namcos22.c
@@ -2971,7 +2971,7 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
MCFG_NVRAM_HANDLER(namcos22)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(namcos22s)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
MCFG_PALETTE_LENGTH(NAMCOS22_PALETTE_SIZE)
MCFG_GFXDECODE(super)
@@ -3219,7 +3219,7 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
MCFG_NVRAM_HANDLER(namcos22)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(namcos22)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
MCFG_PALETTE_LENGTH(NAMCOS22_PALETTE_SIZE)
MCFG_GFXDECODE(namcos22)
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index d3d4b09bb25..d9d0b24c258 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1434,6 +1434,7 @@ public:
DECLARE_MACHINE_START(s23);
DECLARE_VIDEO_START(ss23);
DECLARE_MACHINE_RESET(gmen);
+ UINT32 screen_update_ss23(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -2418,9 +2419,8 @@ VIDEO_START_MEMBER(namcos23_state,ss23)
m_render.polymgr = poly_alloc(machine(), 10000, sizeof(namcos23_render_data), 0);
}
-static SCREEN_UPDATE_RGB32( ss23 )
+UINT32 namcos23_state::screen_update_ss23(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- namcos23_state *state = screen.machine().driver_data<namcos23_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
render_run( screen.machine(), bitmap );
@@ -2428,7 +2428,7 @@ static SCREEN_UPDATE_RGB32( ss23 )
gfx_element *gfx = screen.machine().gfx[0];
gfx->mark_all_dirty();
- state->m_bgtilemap->draw(bitmap, cliprect, 0/*flags*/, 0/*priority*/ ); /* opaque */
+ m_bgtilemap->draw(bitmap, cliprect, 0/*flags*/, 0/*priority*/ ); /* opaque */
return 0;
}
@@ -3166,7 +3166,7 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(ss23)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_ss23)
MCFG_PALETTE_LENGTH(0x8000)
@@ -3211,7 +3211,7 @@ static MACHINE_CONFIG_START( s23, namcos23_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(ss23)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_ss23)
MCFG_PALETTE_LENGTH(0x8000)
@@ -3252,7 +3252,7 @@ static MACHINE_CONFIG_START( ss23, namcos23_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(ss23)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_ss23)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/namcos86.c b/src/mame/drivers/namcos86.c
index 0ade1d44ffc..04892c84b62 100644
--- a/src/mame/drivers/namcos86.c
+++ b/src/mame/drivers/namcos86.c
@@ -1012,8 +1012,8 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3 + 8*8, 3 + 44*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(namcos86)
- MCFG_SCREEN_VBLANK_STATIC(namcos86)
+ MCFG_SCREEN_UPDATE_DRIVER(namcos86_state, screen_update_namcos86)
+ MCFG_SCREEN_VBLANK_DRIVER(namcos86_state, screen_eof_namcos86)
MCFG_GFXDECODE(namcos86)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 42d625a10c6..22be4cbddfd 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -2526,7 +2526,7 @@ static MACHINE_CONFIG_START( naomi_aw_base, dc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_STATIC(dc)
+ MCFG_SCREEN_UPDATE_DRIVER(dc_state, screen_update_dc)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/naughtyb.c b/src/mame/drivers/naughtyb.c
index 8a856aa4f86..3832af295c6 100644
--- a/src/mame/drivers/naughtyb.c
+++ b/src/mame/drivers/naughtyb.c
@@ -431,7 +431,7 @@ static MACHINE_CONFIG_START( naughtyb, naughtyb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(naughtyb)
+ MCFG_SCREEN_UPDATE_DRIVER(naughtyb_state, screen_update_naughtyb)
MCFG_GFXDECODE(naughtyb)
MCFG_PALETTE_LENGTH(256)
@@ -463,7 +463,7 @@ static MACHINE_CONFIG_START( popflame, naughtyb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(naughtyb)
+ MCFG_SCREEN_UPDATE_DRIVER(naughtyb_state, screen_update_naughtyb)
MCFG_GFXDECODE(naughtyb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj8688.c b/src/mame/drivers/nbmj8688.c
index c2daaaea083..5349bfd47d5 100644
--- a/src/mame/drivers/nbmj8688.c
+++ b/src/mame/drivers/nbmj8688.c
@@ -2921,7 +2921,7 @@ static MACHINE_CONFIG_START( NBMJDRV_4096, nbmj8688_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(mbmj8688)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update_mbmj8688)
MCFG_PALETTE_LENGTH(4096)
@@ -3037,21 +3037,21 @@ static MACHINE_CONFIG_START( mbmj_p16bit_LCD, nbmj8688_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(mbmj8688)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update_mbmj8688)
MCFG_SCREEN_ADD("lcd0", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(480, 64)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 64-1)
- MCFG_SCREEN_UPDATE_STATIC(mbmj8688_lcd0)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update_mbmj8688_lcd0)
MCFG_SCREEN_ADD("lcd1", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(480, 64)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 64-1)
- MCFG_SCREEN_UPDATE_STATIC(mbmj8688_lcd1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update_mbmj8688_lcd1)
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_pure_16bit_LCD)
diff --git a/src/mame/drivers/nbmj8891.c b/src/mame/drivers/nbmj8891.c
index 04321f200f0..63e54d66be7 100644
--- a/src/mame/drivers/nbmj8891.c
+++ b/src/mame/drivers/nbmj8891.c
@@ -2612,7 +2612,7 @@ static MACHINE_CONFIG_START( gionbana, nbmj8891_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
- MCFG_SCREEN_UPDATE_STATIC(nbmj8891)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8891_state, screen_update_nbmj8891)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj8900.c b/src/mame/drivers/nbmj8900.c
index 3cae4e8be78..869e9d4ab56 100644
--- a/src/mame/drivers/nbmj8900.c
+++ b/src/mame/drivers/nbmj8900.c
@@ -318,7 +318,7 @@ static MACHINE_CONFIG_START( ohpaipee, nbmj8900_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
- MCFG_SCREEN_UPDATE_STATIC(nbmj8900)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8900_state, screen_update_nbmj8900)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj8991.c b/src/mame/drivers/nbmj8991.c
index fcc462ceab9..574793967b6 100644
--- a/src/mame/drivers/nbmj8991.c
+++ b/src/mame/drivers/nbmj8991.c
@@ -1481,7 +1481,7 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(nbmj8991_type1)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type1)
MCFG_PALETTE_LENGTH(256)
@@ -1514,7 +1514,7 @@ static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(nbmj8991_type2)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type2)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj9195.c b/src/mame/drivers/nbmj9195.c
index 93c150bca6a..73e0c305fd6 100644
--- a/src/mame/drivers/nbmj9195.c
+++ b/src/mame/drivers/nbmj9195.c
@@ -3183,7 +3183,7 @@ static MACHINE_CONFIG_START( NBMJDRV1, nbmj9195_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(1024, 512) /* no way this is correct */
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(nbmj9195)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj9195_state, screen_update_nbmj9195)
MCFG_PALETTE_LENGTH(256)
@@ -3220,7 +3220,7 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV3, NBMJDRV1 )
MCFG_VIDEO_START_OVERRIDE(nbmj9195_state,nbmj9195_nb22090)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(nbmj9195)
+ MCFG_SCREEN_UPDATE_DRIVER(nbmj9195_state, screen_update_nbmj9195)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nemesis.c b/src/mame/drivers/nemesis.c
index d5143eb6309..576759e1c79 100644
--- a/src/mame/drivers/nemesis.c
+++ b/src/mame/drivers/nemesis.c
@@ -1570,7 +1570,7 @@ static MACHINE_CONFIG_START( nemesis, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1613,7 +1613,7 @@ static MACHINE_CONFIG_START( gx400, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1655,7 +1655,7 @@ static MACHINE_CONFIG_START( konamigt, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1695,7 +1695,7 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1739,7 +1739,7 @@ static MACHINE_CONFIG_START( salamand, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((264-256)*125/2))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1785,7 +1785,7 @@ static MACHINE_CONFIG_START( blkpnthr, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1827,7 +1827,7 @@ static MACHINE_CONFIG_START( citybomb, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1873,7 +1873,7 @@ static MACHINE_CONFIG_START( nyanpani, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1917,7 +1917,7 @@ static MACHINE_CONFIG_START( hcrash, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -2664,7 +2664,7 @@ static MACHINE_CONFIG_START( bubsys, nemesis_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nemesis)
+ MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/neogeo.c b/src/mame/drivers/neogeo.c
index 72f2395f847..c72a9963ec6 100644
--- a/src/mame/drivers/neogeo.c
+++ b/src/mame/drivers/neogeo.c
@@ -1375,7 +1375,7 @@ static MACHINE_CONFIG_START( neogeo, neogeo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(neogeo)
+ MCFG_SCREEN_UPDATE_DRIVER(neogeo_state, screen_update_neogeo)
/* audio hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/neoprint.c b/src/mame/drivers/neoprint.c
index 6e0392789b7..7620a2bf101 100644
--- a/src/mame/drivers/neoprint.c
+++ b/src/mame/drivers/neoprint.c
@@ -55,6 +55,8 @@ public:
DECLARE_DRIVER_INIT(nprsp);
virtual void video_start();
DECLARE_MACHINE_RESET(nprsp);
+ UINT32 screen_update_neoprint(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_nprsp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -109,7 +111,7 @@ static void draw_layer(running_machine &machine, bitmap_ind16 &bitmap,const rect
}
}
-SCREEN_UPDATE_IND16(neoprint)
+UINT32 neoprint_state::screen_update_neoprint(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -119,7 +121,7 @@ SCREEN_UPDATE_IND16(neoprint)
return 0;
}
-SCREEN_UPDATE_IND16(nprsp)
+UINT32 neoprint_state::screen_update_nprsp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -479,7 +481,7 @@ static MACHINE_CONFIG_START( neoprint, neoprint_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(neoprint)
+ MCFG_SCREEN_UPDATE_DRIVER(neoprint_state, screen_update_neoprint)
MCFG_PALETTE_LENGTH(0x10000)
@@ -519,7 +521,7 @@ static MACHINE_CONFIG_START( nprsp, neoprint_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nprsp)
+ MCFG_SCREEN_UPDATE_DRIVER(neoprint_state, screen_update_nprsp)
MCFG_MACHINE_RESET_OVERRIDE(neoprint_state,nprsp)
diff --git a/src/mame/drivers/news.c b/src/mame/drivers/news.c
index 45d04f348be..d3621628ab9 100644
--- a/src/mame/drivers/news.c
+++ b/src/mame/drivers/news.c
@@ -139,7 +139,7 @@ static MACHINE_CONFIG_START( news, news_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(news)
+ MCFG_SCREEN_UPDATE_DRIVER(news_state, screen_update_news)
MCFG_GFXDECODE(news)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/nexus3d.c b/src/mame/drivers/nexus3d.c
index 4c0a2bb7f02..532b5dc2d7d 100644
--- a/src/mame/drivers/nexus3d.c
+++ b/src/mame/drivers/nexus3d.c
@@ -50,6 +50,7 @@ public:
DECLARE_DRIVER_INIT(nexus3d);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_nexus3d(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -183,7 +184,7 @@ void nexus3d_state::video_start()
}
-SCREEN_UPDATE_RGB32(nexus3d)
+UINT32 nexus3d_state::screen_update_nexus3d(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -204,7 +205,7 @@ static MACHINE_CONFIG_START( nexus3d, nexus3d_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(nexus3d)
+ MCFG_SCREEN_UPDATE_DRIVER(nexus3d_state, screen_update_nexus3d)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nightgal.c b/src/mame/drivers/nightgal.c
index 96faa64162d..1337badb70a 100644
--- a/src/mame/drivers/nightgal.c
+++ b/src/mame/drivers/nightgal.c
@@ -80,6 +80,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_nightgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -95,14 +96,13 @@ void nightgal_state::video_start()
save_item(NAME(m_blit_buffer));
}
-static SCREEN_UPDATE_IND16( nightgal )
+UINT32 nightgal_state::screen_update_nightgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- nightgal_state *state = screen.machine().driver_data<nightgal_state>();
int x, y;
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
- UINT8 *src = &state->m_blit_buffer[y * 512 / 2 + cliprect.min_x];
+ UINT8 *src = &m_blit_buffer[y * 512 / 2 + cliprect.min_x];
UINT16 *dst = &bitmap.pix16(y, cliprect.min_x);
for (x = cliprect.min_x; x <= cliprect.max_x; x += 2)
@@ -883,7 +883,7 @@ static MACHINE_CONFIG_START( royalqn, nightgal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(nightgal)
+ MCFG_SCREEN_UPDATE_DRIVER(nightgal_state, screen_update_nightgal)
MCFG_PALETTE_LENGTH(0x10)
diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c
index cfc9dbb8b74..86dcb645e81 100644
--- a/src/mame/drivers/ninjakd2.c
+++ b/src/mame/drivers/ninjakd2.c
@@ -951,8 +951,8 @@ static MACHINE_CONFIG_START( ninjakd2, ninjakd2_state )
MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjakd2)
- MCFG_SCREEN_VBLANK_STATIC(ninjakd2)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjakd2_state, screen_update_ninjakd2)
+ MCFG_SCREEN_VBLANK_DRIVER(ninjakd2_state, screen_eof_ninjakd2)
MCFG_GFXDECODE(ninjakd2)
MCFG_PALETTE_LENGTH(0x300)
@@ -1021,7 +1021,7 @@ static MACHINE_CONFIG_DERIVED( robokid, mnight )
MCFG_VIDEO_START_OVERRIDE(ninjakd2_state,robokid)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(robokid)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjakd2_state, screen_update_robokid)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( omegaf, robokid )
@@ -1036,7 +1036,7 @@ static MACHINE_CONFIG_DERIVED( omegaf, robokid )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(ninjakd2_state,omegaf)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(omegaf)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjakd2_state, screen_update_omegaf)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ninjaw.c b/src/mame/drivers/ninjaw.c
index 62c138b5a0b..d3d1ce590f3 100644
--- a/src/mame/drivers/ninjaw.c
+++ b/src/mame/drivers/ninjaw.c
@@ -867,21 +867,21 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_left)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_middle)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_right)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_right)
MCFG_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l)
@@ -947,21 +947,21 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_left)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_middle)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ninjaw_right)
+ MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_right)
MCFG_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l)
diff --git a/src/mame/drivers/nitedrvr.c b/src/mame/drivers/nitedrvr.c
index ba33762c1c5..91c4655c087 100644
--- a/src/mame/drivers/nitedrvr.c
+++ b/src/mame/drivers/nitedrvr.c
@@ -151,7 +151,7 @@ static MACHINE_CONFIG_START( nitedrvr, nitedrvr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nitedrvr)
+ MCFG_SCREEN_UPDATE_DRIVER(nitedrvr_state, screen_update_nitedrvr)
MCFG_GFXDECODE(nitedrvr)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c
index 90303d19f6e..6ce4865a20e 100644
--- a/src/mame/drivers/niyanpai.c
+++ b/src/mame/drivers/niyanpai.c
@@ -960,7 +960,7 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(niyanpai)
+ MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update_niyanpai)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/nmg5.c b/src/mame/drivers/nmg5.c
index 28a5b62ed1f..a03015eb671 100644
--- a/src/mame/drivers/nmg5.c
+++ b/src/mame/drivers/nmg5.c
@@ -275,6 +275,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_nmg5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -884,46 +885,45 @@ static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap )
}
-static SCREEN_UPDATE_IND16( nmg5 )
+UINT32 nmg5_state::screen_update_nmg5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- nmg5_state *state = screen.machine().driver_data<nmg5_state>();
- state->m_bg_tilemap->set_scrolly(0, state->m_scroll_ram[3] + 9);
- state->m_bg_tilemap->set_scrollx(0, state->m_scroll_ram[2] + 3);
- state->m_fg_tilemap->set_scrolly(0, state->m_scroll_ram[1] + 9);
- state->m_fg_tilemap->set_scrollx(0, state->m_scroll_ram[0] - 1);
+ m_bg_tilemap->set_scrolly(0, m_scroll_ram[3] + 9);
+ m_bg_tilemap->set_scrollx(0, m_scroll_ram[2] + 3);
+ m_fg_tilemap->set_scrolly(0, m_scroll_ram[1] + 9);
+ m_fg_tilemap->set_scrollx(0, m_scroll_ram[0] - 1);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- if (state->m_priority_reg == 0)
+ if (m_priority_reg == 0)
{
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_bitmap(screen.machine(), bitmap);
}
- else if (state->m_priority_reg == 1)
+ else if (m_priority_reg == 1)
{
draw_bitmap(screen.machine(), bitmap);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
}
- else if (state->m_priority_reg == 2)
+ else if (m_priority_reg == 2)
{
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
draw_bitmap(screen.machine(), bitmap);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
}
- else if (state->m_priority_reg == 3)
+ else if (m_priority_reg == 3)
{
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
draw_bitmap(screen.machine(), bitmap);
}
- else if (state->m_priority_reg == 7)
+ else if (m_priority_reg == 7)
{
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_bitmap(screen.machine(), bitmap);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
}
return 0;
}
@@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(nmg5)
+ MCFG_SCREEN_UPDATE_DRIVER(nmg5_state, screen_update_nmg5)
MCFG_GFXDECODE(nmg5)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/nmk16.c b/src/mame/drivers/nmk16.c
index 62dd24b6c75..9ff8e5d15ef 100644
--- a/src/mame/drivers/nmk16.c
+++ b/src/mame/drivers/nmk16.c
@@ -3564,8 +3564,8 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tharrier)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tharrier)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(tharrier)
MCFG_PALETTE_LENGTH(512)
@@ -3607,8 +3607,8 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(manybloc)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_manybloc)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(tharrier)
MCFG_PALETTE_LENGTH(512)
@@ -3648,8 +3648,8 @@ static MACHINE_CONFIG_START( mustang, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3691,8 +3691,8 @@ static MACHINE_CONFIG_START( mustangb, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3723,8 +3723,8 @@ static MACHINE_CONFIG_START( bioship, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bioship)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bioship)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(bioship)
MCFG_PALETTE_LENGTH(1024)
@@ -3764,8 +3764,8 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3808,8 +3808,8 @@ static MACHINE_CONFIG_START( vandykeb, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3839,8 +3839,8 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3884,8 +3884,8 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden sou
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3913,8 +3913,8 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3956,8 +3956,8 @@ static MACHINE_CONFIG_START( ssmissin, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3988,8 +3988,8 @@ static MACHINE_CONFIG_START( strahl, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(strahl)
- MCFG_SCREEN_VBLANK_STATIC(strahl)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_strahl)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_strahl)
MCFG_GFXDECODE(strahl)
MCFG_PALETTE_LENGTH(1024)
@@ -4029,8 +4029,8 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4071,8 +4071,8 @@ static MACHINE_CONFIG_START( macross, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4112,8 +4112,8 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4153,8 +4153,8 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_gunnail)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4196,8 +4196,8 @@ static MACHINE_CONFIG_START( macross2, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_gunnail)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4238,8 +4238,8 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tdragon2)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tdragon2)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4279,8 +4279,8 @@ static MACHINE_CONFIG_START( raphero, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tdragon2)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tdragon2)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4317,8 +4317,8 @@ static MACHINE_CONFIG_START( bjtwin, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bjtwin)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bjtwin)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(bjtwin)
MCFG_PALETTE_LENGTH(1024)
@@ -4826,8 +4826,8 @@ static MACHINE_CONFIG_START( stagger1, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(afega)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_afega)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(stagger1)
MCFG_PALETTE_LENGTH(768)
@@ -4852,7 +4852,7 @@ static MACHINE_CONFIG_DERIVED( redhawki, stagger1 )
/* basic machine hardware */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(redhawki)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_redhawki)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( redhawkb, stagger1 )
@@ -4861,7 +4861,7 @@ static MACHINE_CONFIG_DERIVED( redhawkb, stagger1 )
/* video hardware */
MCFG_GFXDECODE(redhawkb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(redhawkb)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_redhawkb)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( grdnstrm, stagger1 )
@@ -4872,7 +4872,7 @@ static MACHINE_CONFIG_DERIVED( grdnstrm, stagger1 )
MCFG_GFXDECODE(grdnstrm)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,firehawk)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(firehawk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_firehawk)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( grdnstrmk, stagger1 ) /* Side by side with PCB, the music seems too fast as well */
@@ -4892,7 +4892,7 @@ static MACHINE_CONFIG_DERIVED( popspops, grdnstrm )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(bubl2000)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bubl2000)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( firehawk, nmk16_state )
@@ -4911,8 +4911,8 @@ static MACHINE_CONFIG_START( firehawk, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(firehawk)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_firehawk)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(grdnstrm)
MCFG_PALETTE_LENGTH(768)
@@ -4946,8 +4946,8 @@ static MACHINE_CONFIG_START( twinactn, nmk16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_VBLANK_STATIC(nmk)
+ MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross)
+ MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/norautp.c b/src/mame/drivers/norautp.c
index 1c2de5cc52c..943b6462ff7 100644
--- a/src/mame/drivers/norautp.c
+++ b/src/mame/drivers/norautp.c
@@ -563,9 +563,8 @@ void norautp_state::video_start()
}
-static SCREEN_UPDATE_IND16( norautp )
+UINT32 norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- norautp_state *state = screen.machine().driver_data<norautp_state>();
int x, y, count;
count = 0;
@@ -579,8 +578,8 @@ static SCREEN_UPDATE_IND16( norautp )
{
for(x = 0; x < 16; x++)
{
- int tile = state->m_np_vram[count] & 0x3f;
- int colour = (state->m_np_vram[count] & 0xc0) >> 6;
+ int tile = m_np_vram[count] & 0x3f;
+ int colour = (m_np_vram[count] & 0xc0) >> 6;
drawgfx_opaque(bitmap,cliprect, screen.machine().gfx[1], tile, colour, 0, 0, (x * 32) + 8, y * 32);
@@ -591,8 +590,8 @@ static SCREEN_UPDATE_IND16( norautp )
{
for(x = 0; x < 32; x++)
{
- int tile = state->m_np_vram[count] & 0x3f;
- int colour = (state->m_np_vram[count] & 0xc0) >> 6;
+ int tile = m_np_vram[count] & 0x3f;
+ int colour = (m_np_vram[count] & 0xc0) >> 6;
drawgfx_opaque(bitmap,cliprect, screen.machine().gfx[0], tile, colour, 0, 0, x * 16, y * 32);
@@ -1265,7 +1264,7 @@ static MACHINE_CONFIG_START( noraut_base, norautp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(2*16, 31*16-1, (0*16) + 8, 16*16-1) /* the hardware clips the top 8 pixels */
- MCFG_SCREEN_UPDATE_STATIC(norautp)
+ MCFG_SCREEN_UPDATE_DRIVER(norautp_state, screen_update_norautp)
MCFG_GFXDECODE(norautp)
diff --git a/src/mame/drivers/nova2001.c b/src/mame/drivers/nova2001.c
index 8348dbaf4e4..928472bc3ab 100644
--- a/src/mame/drivers/nova2001.c
+++ b/src/mame/drivers/nova2001.c
@@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( nova2001, nova2001_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nova2001)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_nova2001)
MCFG_GFXDECODE(nova2001)
MCFG_PALETTE_LENGTH(0x200)
@@ -731,7 +731,7 @@ static MACHINE_CONFIG_START( ninjakun, nova2001_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(ninjakun)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_ninjakun)
MCFG_GFXDECODE(ninjakun)
MCFG_PALETTE_LENGTH(0x300)
@@ -763,7 +763,7 @@ static MACHINE_CONFIG_START( pkunwar, nova2001_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pkunwar)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_pkunwar)
MCFG_GFXDECODE(pkunwar)
MCFG_PALETTE_LENGTH(0x200)
@@ -802,7 +802,7 @@ static MACHINE_CONFIG_START( raiders5, nova2001_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(raiders5)
+ MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_raiders5)
MCFG_GFXDECODE(raiders5)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/nsmpoker.c b/src/mame/drivers/nsmpoker.c
index 20eb5d3cedf..33f0459c18c 100644
--- a/src/mame/drivers/nsmpoker.c
+++ b/src/mame/drivers/nsmpoker.c
@@ -82,6 +82,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_nsmpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -127,10 +128,9 @@ void nsmpoker_state::video_start()
}
-static SCREEN_UPDATE_IND16( nsmpoker )
+UINT32 nsmpoker_state::screen_update_nsmpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- nsmpoker_state *state = screen.machine().driver_data<nsmpoker_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -406,7 +406,7 @@ static MACHINE_CONFIG_START( nsmpoker, nsmpoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nsmpoker)
+ MCFG_SCREEN_UPDATE_DRIVER(nsmpoker_state, screen_update_nsmpoker)
MCFG_GFXDECODE(nsmpoker)
diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c
index 25eb08ad126..fadaef38263 100644
--- a/src/mame/drivers/nwk-tr.c
+++ b/src/mame/drivers/nwk-tr.c
@@ -254,6 +254,7 @@ public:
DECLARE_DRIVER_INIT(nwktr);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -273,9 +274,8 @@ static void voodoo_vblank_0(device_t *device, int param)
}
-static SCREEN_UPDATE_RGB32( nwktr )
+UINT32 nwktr_state::screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- nwktr_state *state = screen.machine().driver_data<nwktr_state>();
device_t *voodoo = screen.machine().device("voodoo");
device_t *k001604 = screen.machine().device("k001604");
@@ -288,8 +288,8 @@ static SCREEN_UPDATE_RGB32( nwktr )
k001604_draw_front_layer(k001604, bitmap, tilemap_rect);
- draw_7segment_led(bitmap, 3, 3, state->m_led_reg0);
- draw_7segment_led(bitmap, 9, 3, state->m_led_reg1);
+ draw_7segment_led(bitmap, 3, 3, m_led_reg0);
+ draw_7segment_led(bitmap, 9, 3, m_led_reg1);
return 0;
}
@@ -745,7 +745,7 @@ static MACHINE_CONFIG_START( nwktr, nwktr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(nwktr)
+ MCFG_SCREEN_UPDATE_DRIVER(nwktr_state, screen_update_nwktr)
MCFG_PALETTE_LENGTH(65536)
diff --git a/src/mame/drivers/nycaptor.c b/src/mame/drivers/nycaptor.c
index b1b9e6ae520..124cf2528ba 100644
--- a/src/mame/drivers/nycaptor.c
+++ b/src/mame/drivers/nycaptor.c
@@ -854,7 +854,7 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nycaptor)
+ MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
@@ -912,7 +912,7 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nycaptor)
+ MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
@@ -966,7 +966,7 @@ static MACHINE_CONFIG_START( bronx, nycaptor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nycaptor)
+ MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/offtwall.c b/src/mame/drivers/offtwall.c
index ca6729ea27d..511f8c86d98 100644
--- a/src/mame/drivers/offtwall.c
+++ b/src/mame/drivers/offtwall.c
@@ -417,7 +417,7 @@ static MACHINE_CONFIG_START( offtwall, offtwall_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(offtwall)
+ MCFG_SCREEN_UPDATE_DRIVER(offtwall_state, screen_update_offtwall)
MCFG_VIDEO_START_OVERRIDE(offtwall_state,offtwall)
diff --git a/src/mame/drivers/ohmygod.c b/src/mame/drivers/ohmygod.c
index 06d70a44a84..9c1fcf57db6 100644
--- a/src/mame/drivers/ohmygod.c
+++ b/src/mame/drivers/ohmygod.c
@@ -330,7 +330,7 @@ static MACHINE_CONFIG_START( ohmygod, ohmygod_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 0*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(ohmygod)
+ MCFG_SCREEN_UPDATE_DRIVER(ohmygod_state, screen_update_ohmygod)
MCFG_GFXDECODE(ohmygod)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/ojankohs.c b/src/mame/drivers/ojankohs.c
index e8bca062d3c..59877c80645 100644
--- a/src/mame/drivers/ojankohs.c
+++ b/src/mame/drivers/ojankohs.c
@@ -868,7 +868,7 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(ojankohs)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -904,7 +904,7 @@ static MACHINE_CONFIG_START( ojankoy, ojankohs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(ojankohs)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -941,7 +941,7 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(ojankohs)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -977,7 +977,7 @@ static MACHINE_CONFIG_START( ojankoc, ojankohs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1)
- MCFG_SCREEN_UPDATE_STATIC(ojankoc)
+ MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/olibochu.c b/src/mame/drivers/olibochu.c
index c3f725dbf48..9df89ebf99b 100644
--- a/src/mame/drivers/olibochu.c
+++ b/src/mame/drivers/olibochu.c
@@ -86,6 +86,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_olibochu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -226,10 +227,9 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-static SCREEN_UPDATE_IND16( olibochu )
+UINT32 olibochu_state::screen_update_olibochu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- olibochu_state *state = screen.machine().driver_data<olibochu_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -463,7 +463,7 @@ static MACHINE_CONFIG_START( olibochu, olibochu_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(olibochu)
+ MCFG_SCREEN_UPDATE_DRIVER(olibochu_state, screen_update_olibochu)
MCFG_GFXDECODE(olibochu)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/oneshot.c b/src/mame/drivers/oneshot.c
index 64ad5bfab9c..bf8ffe5cb35 100644
--- a/src/mame/drivers/oneshot.c
+++ b/src/mame/drivers/oneshot.c
@@ -384,7 +384,7 @@ static MACHINE_CONFIG_START( oneshot, oneshot_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 20*16-1, 0*16, 15*16-1)
- MCFG_SCREEN_UPDATE_STATIC(oneshot)
+ MCFG_SCREEN_UPDATE_DRIVER(oneshot_state, screen_update_oneshot)
MCFG_GFXDECODE(oneshot)
MCFG_PALETTE_LENGTH(0x400)
@@ -406,7 +406,7 @@ static MACHINE_CONFIG_DERIVED( maddonna, oneshot )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(maddonna) // no crosshair
+ MCFG_SCREEN_UPDATE_DRIVER(oneshot_state, screen_update_maddonna)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/onetwo.c b/src/mame/drivers/onetwo.c
index 044788ec60f..e2f99c21ff8 100644
--- a/src/mame/drivers/onetwo.c
+++ b/src/mame/drivers/onetwo.c
@@ -75,6 +75,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_onetwo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -100,10 +101,9 @@ void onetwo_state::video_start()
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(onetwo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
-static SCREEN_UPDATE_IND16( onetwo )
+UINT32 onetwo_state::screen_update_onetwo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- onetwo_state *state = screen.machine().driver_data<onetwo_state>();
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -375,7 +375,7 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(16))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(onetwo)
+ MCFG_SCREEN_UPDATE_DRIVER(onetwo_state, screen_update_onetwo)
MCFG_GFXDECODE(onetwo)
MCFG_PALETTE_LENGTH(0x80)
diff --git a/src/mame/drivers/opwolf.c b/src/mame/drivers/opwolf.c
index adb77d1099d..5d521aabf18 100644
--- a/src/mame/drivers/opwolf.c
+++ b/src/mame/drivers/opwolf.c
@@ -750,7 +750,7 @@ static MACHINE_CONFIG_START( opwolf, opwolf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(opwolf)
+ MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_GFXDECODE(opwolf)
MCFG_PALETTE_LENGTH(8192)
@@ -803,7 +803,7 @@ static MACHINE_CONFIG_START( opwolfb, opwolf_state ) /* OSC clocks unknown for t
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(opwolf)
+ MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_GFXDECODE(opwolfb)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/orbit.c b/src/mame/drivers/orbit.c
index 0745052ffd9..207f124c068 100644
--- a/src/mame/drivers/orbit.c
+++ b/src/mame/drivers/orbit.c
@@ -307,7 +307,7 @@ static MACHINE_CONFIG_START( orbit, orbit_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2, 384*2, 0, 256*2, 261*2, 0, 240*2)
- MCFG_SCREEN_UPDATE_STATIC(orbit)
+ MCFG_SCREEN_UPDATE_DRIVER(orbit_state, screen_update_orbit)
MCFG_GFXDECODE(orbit)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/othldrby.c b/src/mame/drivers/othldrby.c
index 2636630505e..894d211396b 100644
--- a/src/mame/drivers/othldrby.c
+++ b/src/mame/drivers/othldrby.c
@@ -251,8 +251,8 @@ static MACHINE_CONFIG_START( othldrby, othldrby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(othldrby)
- MCFG_SCREEN_VBLANK_STATIC(othldrby)
+ MCFG_SCREEN_UPDATE_DRIVER(othldrby_state, screen_update_othldrby)
+ MCFG_SCREEN_VBLANK_DRIVER(othldrby_state, screen_eof_othldrby)
MCFG_GFXDECODE(othldrby)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/othunder.c b/src/mame/drivers/othunder.c
index 4ee5bd44b36..6c924025571 100644
--- a/src/mame/drivers/othunder.c
+++ b/src/mame/drivers/othunder.c
@@ -726,7 +726,7 @@ static MACHINE_CONFIG_START( othunder, othunder_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(othunder)
+ MCFG_SCREEN_UPDATE_DRIVER(othunder_state, screen_update_othunder)
MCFG_GFXDECODE(othunder)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/overdriv.c b/src/mame/drivers/overdriv.c
index 6120863c70b..3396ba13473 100644
--- a/src/mame/drivers/overdriv.c
+++ b/src/mame/drivers/overdriv.c
@@ -355,7 +355,7 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(64*8, 40*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(overdriv)
+ MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv)
// MCFG_GFXDECODE(overdriv)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pacland.c b/src/mame/drivers/pacland.c
index 968b5f726b6..e8ade835d96 100644
--- a/src/mame/drivers/pacland.c
+++ b/src/mame/drivers/pacland.c
@@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( pacland, pacland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pacland)
+ MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update_pacland)
MCFG_GFXDECODE(pacland)
MCFG_PALETTE_LENGTH(256*4+256*4+64*16)
diff --git a/src/mame/drivers/pacman.c b/src/mame/drivers/pacman.c
index da584f40be7..713627c03fc 100644
--- a/src/mame/drivers/pacman.c
+++ b/src/mame/drivers/pacman.c
@@ -3303,7 +3303,7 @@ static MACHINE_CONFIG_START( pacman, pacman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(pacman)
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_pacman)
MCFG_PALETTE_INIT_OVERRIDE(pacman_state,pacman)
MCFG_VIDEO_START_OVERRIDE(pacman_state,pacman)
@@ -3456,7 +3456,7 @@ static MACHINE_CONFIG_DERIVED( s2650games, pacman )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_STATIC(s2650games)
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_s2650games)
MCFG_VIDEO_START_OVERRIDE(pacman_state,s2650games)
diff --git a/src/mame/drivers/pandoras.c b/src/mame/drivers/pandoras.c
index 62836df34af..6038214b487 100644
--- a/src/mame/drivers/pandoras.c
+++ b/src/mame/drivers/pandoras.c
@@ -366,7 +366,7 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pandoras)
+ MCFG_SCREEN_UPDATE_DRIVER(pandoras_state, screen_update_pandoras)
MCFG_GFXDECODE(pandoras)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c
index 61d36faa83f..56de7c7ffa5 100644
--- a/src/mame/drivers/panicr.c
+++ b/src/mame/drivers/panicr.c
@@ -98,6 +98,7 @@ public:
TILE_GET_INFO_MEMBER(get_txttile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_panicr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -247,15 +248,14 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const re
}
}
-static SCREEN_UPDATE_IND16( panicr)
+UINT32 panicr_state::screen_update_panicr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- panicr_state *state = screen.machine().driver_data<panicr_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_txttilemap->mark_all_dirty();
- state->m_bgtilemap->set_scrollx(0, state->m_scrollx);
- state->m_bgtilemap->draw(bitmap, cliprect, 0,0);
+ m_txttilemap->mark_all_dirty();
+ m_bgtilemap->set_scrollx(0, m_scrollx);
+ m_bgtilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(),bitmap,cliprect);
- state->m_txttilemap->draw(bitmap, cliprect, 0,0);
+ m_txttilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -515,7 +515,7 @@ static MACHINE_CONFIG_START( panicr, panicr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(panicr)
+ MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update_panicr)
MCFG_GFXDECODE(panicr)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/paradise.c b/src/mame/drivers/paradise.c
index 0263c394fa0..4e3ecc8e259 100644
--- a/src/mame/drivers/paradise.c
+++ b/src/mame/drivers/paradise.c
@@ -717,7 +717,7 @@ static MACHINE_CONFIG_START( paradise, paradise_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* we're using PORT_VBLANK */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(paradise)
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_paradise)
MCFG_GFXDECODE(paradise)
MCFG_PALETTE_LENGTH(0x800 + 16)
@@ -749,7 +749,7 @@ static MACHINE_CONFIG_DERIVED( torus, paradise )
MCFG_GFXDECODE(torus)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(torus)
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_torus)
MCFG_DEVICE_REMOVE("oki2")
MACHINE_CONFIG_END
@@ -764,7 +764,7 @@ static MACHINE_CONFIG_DERIVED( madball, paradise )
MCFG_GFXDECODE(madball)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(madball)
+ MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_madball)
MCFG_DEVICE_REMOVE("oki2")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/parodius.c b/src/mame/drivers/parodius.c
index 93188ac187a..f410a8a5c8e 100644
--- a/src/mame/drivers/parodius.c
+++ b/src/mame/drivers/parodius.c
@@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( parodius, parodius_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(parodius)
+ MCFG_SCREEN_UPDATE_DRIVER(parodius_state, screen_update_parodius)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pasha2.c b/src/mame/drivers/pasha2.c
index 8192ac4b250..3d1be994719 100644
--- a/src/mame/drivers/pasha2.c
+++ b/src/mame/drivers/pasha2.c
@@ -109,6 +109,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_pasha2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -349,9 +350,8 @@ void pasha2_state::video_start()
save_item(NAME(m_bitmap1));
}
-static SCREEN_UPDATE_IND16( pasha2 )
+UINT32 pasha2_state::screen_update_pasha2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pasha2_state *state = screen.machine().driver_data<pasha2_state>();
int x, y, count;
int color;
@@ -364,10 +364,10 @@ static SCREEN_UPDATE_IND16( pasha2 )
{
if (x * 2 < cliprect.max_x)
{
- color = (state->m_bitmap0[count + (state->m_vbuffer ^ 1) * 0x20000 / 2] & 0xff00) >> 8;
+ color = (m_bitmap0[count + (m_vbuffer ^ 1) * 0x20000 / 2] & 0xff00) >> 8;
bitmap.pix16(y, x * 2 + 0) = color + 0x100;
- color = state->m_bitmap0[count + (state->m_vbuffer ^ 1) * 0x20000 / 2] & 0xff;
+ color = m_bitmap0[count + (m_vbuffer ^ 1) * 0x20000 / 2] & 0xff;
bitmap.pix16(y, x * 2 + 1) = color + 0x100;
}
@@ -382,11 +382,11 @@ static SCREEN_UPDATE_IND16( pasha2 )
{
if (x * 2 < cliprect.max_x)
{
- color = state->m_bitmap1[count + (state->m_vbuffer ^ 1) * 0x20000 / 2] & 0xff;
+ color = m_bitmap1[count + (m_vbuffer ^ 1) * 0x20000 / 2] & 0xff;
if (color != 0)
bitmap.pix16(y, x * 2 + 1) = color;
- color = (state->m_bitmap1[count + (state->m_vbuffer ^ 1) * 0x20000 / 2] & 0xff00) >> 8;
+ color = (m_bitmap1[count + (m_vbuffer ^ 1) * 0x20000 / 2] & 0xff00) >> 8;
if (color != 0)
bitmap.pix16(y, x * 2 + 0) = color;
}
@@ -428,7 +428,7 @@ static MACHINE_CONFIG_START( pasha2, pasha2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(pasha2)
+ MCFG_SCREEN_UPDATE_DRIVER(pasha2_state, screen_update_pasha2)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/pass.c b/src/mame/drivers/pass.c
index d7c0726bf18..646a19ed181 100644
--- a/src/mame/drivers/pass.c
+++ b/src/mame/drivers/pass.c
@@ -249,7 +249,7 @@ static MACHINE_CONFIG_START( pass, pass_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pass)
+ MCFG_SCREEN_UPDATE_DRIVER(pass_state, screen_update_pass)
MCFG_PALETTE_LENGTH(0x200)
MCFG_GFXDECODE(pass)
diff --git a/src/mame/drivers/pastelg.c b/src/mame/drivers/pastelg.c
index 6c423a4fb4b..a16b38d15c4 100644
--- a/src/mame/drivers/pastelg.c
+++ b/src/mame/drivers/pastelg.c
@@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( pastelg, pastelg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(pastelg)
+ MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
MCFG_PALETTE_LENGTH(32)
@@ -477,7 +477,7 @@ static MACHINE_CONFIG_START( threeds, pastelg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(pastelg)
+ MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/pbaction.c b/src/mame/drivers/pbaction.c
index 63eedeec830..385c60ee525 100644
--- a/src/mame/drivers/pbaction.c
+++ b/src/mame/drivers/pbaction.c
@@ -298,7 +298,7 @@ static MACHINE_CONFIG_START( pbaction, pbaction_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pbaction)
+ MCFG_SCREEN_UPDATE_DRIVER(pbaction_state, screen_update_pbaction)
MCFG_GFXDECODE(pbaction)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/pcktgal.c b/src/mame/drivers/pcktgal.c
index 03e78f4a69e..83cb7d8d8eb 100644
--- a/src/mame/drivers/pcktgal.c
+++ b/src/mame/drivers/pcktgal.c
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pcktgal)
+ MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal)
MCFG_GFXDECODE(pcktgal)
MCFG_PALETTE_LENGTH(512)
@@ -262,7 +262,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bootleg, pcktgal )
MCFG_GFXDECODE(bootleg)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(pcktgalb)
+ MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgalb)
MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index 2ebc6d97266..9ef43239469 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -124,14 +124,14 @@ public:
DECLARE_DRIVER_INIT(tetriskr);
DECLARE_DRIVER_INIT(filetto);
virtual void machine_reset();
+ UINT32 screen_update_tetriskr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_RGB32( tetriskr )
+UINT32 pcxt_state::screen_update_tetriskr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- pcxt_state *state = screen.machine().driver_data<pcxt_state>();
int x,y;
int yi;
- const UINT8 *bg_rom = state->memregion("gfx2")->base();
+ const UINT8 *bg_rom = memregion("gfx2")->base();
//popmessage("%04x",m_start_offs);
@@ -151,7 +151,7 @@ static SCREEN_UPDATE_RGB32( tetriskr )
color = 0;
/* TODO: first byte seems bogus? */
for(pen_i = 0;pen_i<4;pen_i++)
- color |= ((bg_rom[y*320/8+x+(pen_i*0x20000)+yi*0x400+state->m_bg_bank*0x2000+1] >> (7-xi)) & 1) << pen_i;
+ color |= ((bg_rom[y*320/8+x+(pen_i*0x20000)+yi*0x400+m_bg_bank*0x2000+1] >> (7-xi)) & 1) << pen_i;
if(cliprect.contains(x*8+xi, y*8+yi))
bitmap.pix32(y*8+yi, x*8+xi) = screen.machine().pens[color];
@@ -766,7 +766,7 @@ static MACHINE_CONFIG_DERIVED( tetriskr, filetto )
MCFG_DEVICE_MODIFY("screen")
MCFG_VIDEO_START(pc_cga_superimpose)
- MCFG_SCREEN_UPDATE_STATIC(tetriskr)
+ MCFG_SCREEN_UPDATE_DRIVER(pcxt_state, screen_update_tetriskr)
MCFG_DEVICE_REMOVE("voice")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pengo.c b/src/mame/drivers/pengo.c
index 2588e5c61d7..9e9bc6014b6 100644
--- a/src/mame/drivers/pengo.c
+++ b/src/mame/drivers/pengo.c
@@ -391,7 +391,7 @@ static MACHINE_CONFIG_START( pengo, pengo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(pacman)
+ MCFG_SCREEN_UPDATE_DRIVER(pengo_state, screen_update_pacman)
MCFG_PALETTE_INIT_OVERRIDE(pengo_state,pacman)
MCFG_VIDEO_START_OVERRIDE(pengo_state,pengo)
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index 47b790f06ad..e18aa67380f 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -266,6 +266,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
static const UINT8 id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 };
@@ -968,10 +969,9 @@ void peplus_state::video_start()
memset(m_palette_ram2, 0, 0x3000);
}
-static SCREEN_UPDATE_IND16( peplus )
+UINT32 peplus_state::screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- peplus_state *state = screen.machine().driver_data<peplus_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -1352,7 +1352,7 @@ static MACHINE_CONFIG_START( peplus, peplus_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE((52+1)*8, (31+1)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
- MCFG_SCREEN_UPDATE_STATIC(peplus)
+ MCFG_SCREEN_UPDATE_DRIVER(peplus_state, screen_update_peplus)
MCFG_GFXDECODE(peplus)
MCFG_PALETTE_LENGTH(16*16*2)
diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c
index 46ea400beca..f577fb294f0 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -539,8 +539,8 @@ MACHINE_CONFIG_FRAGMENT( pgmbase )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pgm)
- MCFG_SCREEN_VBLANK_STATIC(pgm)
+ MCFG_SCREEN_UPDATE_DRIVER(pgm_state, screen_update_pgm)
+ MCFG_SCREEN_VBLANK_DRIVER(pgm_state, screen_eof_pgm)
MCFG_GFXDECODE(pgm)
MCFG_PALETTE_LENGTH(0x1200/2)
diff --git a/src/mame/drivers/pgm2.c b/src/mame/drivers/pgm2.c
index 2f0df6eab3f..065203dffac 100644
--- a/src/mame/drivers/pgm2.c
+++ b/src/mame/drivers/pgm2.c
@@ -36,6 +36,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_pgm2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_pgm2(screen_device &screen, bool state);
};
static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state )
@@ -45,12 +47,12 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( pgm2 )
INPUT_PORTS_END
-static SCREEN_UPDATE_IND16(pgm2)
+UINT32 pgm2_state::screen_update_pgm2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
-static SCREEN_VBLANK(pgm2)
+void pgm2_state::screen_eof_pgm2(screen_device &screen, bool state)
{
}
@@ -139,8 +141,8 @@ static MACHINE_CONFIG_START( pgm2, pgm2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pgm2)
- MCFG_SCREEN_VBLANK_STATIC(pgm2)
+ MCFG_SCREEN_UPDATE_DRIVER(pgm2_state, screen_update_pgm2)
+ MCFG_SCREEN_VBLANK_DRIVER(pgm2_state, screen_eof_pgm2)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c
index 7af1638a3b7..e7aa6ecac60 100644
--- a/src/mame/drivers/phoenix.c
+++ b/src/mame/drivers/phoenix.c
@@ -461,7 +461,7 @@ static MACHINE_CONFIG_START( phoenix, phoenix_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(phoenix)
+ MCFG_SCREEN_UPDATE_DRIVER(phoenix_state, screen_update_phoenix)
MCFG_GFXDECODE(phoenix)
MCFG_PALETTE_LENGTH(256)
@@ -534,7 +534,7 @@ static MACHINE_CONFIG_START( survival, phoenix_state )
*/
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(phoenix)
+ MCFG_SCREEN_UPDATE_DRIVER(phoenix_state, screen_update_phoenix)
MCFG_GFXDECODE(phoenix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/photon.c b/src/mame/drivers/photon.c
index a6267568bc2..9b1b6834c8d 100644
--- a/src/mame/drivers/photon.c
+++ b/src/mame/drivers/photon.c
@@ -36,6 +36,7 @@ public:
DECLARE_WRITE8_MEMBER(pk8000_84_portc_w);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_photon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -205,7 +206,7 @@ void photon_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( photon )
+UINT32 photon_state::screen_update_photon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return pk8000_video_update(screen, bitmap, cliprect, screen.machine().root_device().memregion("maincpu")->base());
}
@@ -225,7 +226,7 @@ static MACHINE_CONFIG_START( photon, photon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(256+32, 192+32)
MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
- MCFG_SCREEN_UPDATE_STATIC(photon)
+ MCFG_SCREEN_UPDATE_DRIVER(photon_state, screen_update_photon)
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT(pk8000)
diff --git a/src/mame/drivers/photon2.c b/src/mame/drivers/photon2.c
index d7e02bd5839..a2982954a8c 100644
--- a/src/mame/drivers/photon2.c
+++ b/src/mame/drivers/photon2.c
@@ -35,6 +35,8 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_spectrum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_spectrum(screen_device &screen, bool state);
};
@@ -106,17 +108,16 @@ INLINE unsigned char get_display_color (unsigned char color, int invert)
/* Code to change the FLASH status every 25 frames. Note this must be
independent of frame skip etc. */
-static SCREEN_VBLANK( spectrum )
+void photon2_state::screen_eof_spectrum(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- photon2_state *state = screen.machine().driver_data<photon2_state>();
- state->m_spectrum_frame_number++;
- if (state->m_spectrum_frame_number >= 25)
+ m_spectrum_frame_number++;
+ if (m_spectrum_frame_number >= 25)
{
- state->m_spectrum_frame_number = 0;
- state->m_spectrum_flash_invert = !state->m_spectrum_flash_invert;
+ m_spectrum_frame_number = 0;
+ m_spectrum_flash_invert = !m_spectrum_flash_invert;
}
}
}
@@ -126,29 +127,28 @@ INLINE void spectrum_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color
bitmap.pix16(y, x) = (UINT16)color;
}
-static SCREEN_UPDATE_IND16( spectrum )
+UINT32 photon2_state::screen_update_spectrum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- photon2_state *state = screen.machine().driver_data<photon2_state>();
/* for now do a full-refresh */
int x, y, b, scrx, scry;
unsigned short ink, pap;
unsigned char *attr, *scr;
// int full_refresh = 1;
- scr=state->m_spectrum_video_ram;
+ scr=m_spectrum_video_ram;
- bitmap.fill(state->m_spectrum_port_fe & 0x07, cliprect);
+ bitmap.fill(m_spectrum_port_fe & 0x07, cliprect);
for (y=0; y<192; y++)
{
scrx=SPEC_LEFT_BORDER;
scry=((y&7) * 8) + ((y&0x38)>>3) + (y&0xC0);
- attr=state->m_spectrum_video_ram + ((scry>>3)*32) + 0x1800;
+ attr=m_spectrum_video_ram + ((scry>>3)*32) + 0x1800;
for (x=0;x<32;x++)
{
/* Get ink and paper colour with bright */
- if (state->m_spectrum_flash_invert && (*attr & 0x80))
+ if (m_spectrum_flash_invert && (*attr & 0x80))
{
ink=((*attr)>>3) & 0x0f;
pap=((*attr) & 0x07) + (((*attr)>>3) & 0x08);
@@ -331,8 +331,8 @@ static MACHINE_CONFIG_START( photon2, photon2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1)
- MCFG_SCREEN_UPDATE_STATIC( spectrum )
- MCFG_SCREEN_VBLANK_STATIC( spectrum )
+ MCFG_SCREEN_UPDATE_DRIVER(photon2_state, screen_update_spectrum)
+ MCFG_SCREEN_VBLANK_DRIVER(photon2_state, screen_eof_spectrum)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/pingpong.c b/src/mame/drivers/pingpong.c
index 6502e6d55ec..deb1170807a 100644
--- a/src/mame/drivers/pingpong.c
+++ b/src/mame/drivers/pingpong.c
@@ -472,7 +472,7 @@ static MACHINE_CONFIG_START( pingpong, pingpong_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(456, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pingpong)
+ MCFG_SCREEN_UPDATE_DRIVER(pingpong_state, screen_update_pingpong)
MCFG_GFXDECODE(pingpong)
MCFG_PALETTE_LENGTH(64*4+64*4)
diff --git a/src/mame/drivers/pinkiri8.c b/src/mame/drivers/pinkiri8.c
index 00c46a37098..042a06196d2 100644
--- a/src/mame/drivers/pinkiri8.c
+++ b/src/mame/drivers/pinkiri8.c
@@ -76,6 +76,7 @@ public:
DECLARE_READ8_MEMBER(ronjan_patched_prot_r);
DECLARE_DRIVER_INIT(ronjan);
virtual void video_start();
+ UINT32 screen_update_pinkiri8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -201,16 +202,15 @@ ronjan
*/
-static SCREEN_UPDATE_IND16( pinkiri8 )
+UINT32 pinkiri8_state::screen_update_pinkiri8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pinkiri8_state *state = screen.machine().driver_data<pinkiri8_state>();
int col_bank;
gfx_element *gfx = screen.machine().gfx[0];
/* update palette */
for (int pen = 0; pen < 0x800 ; pen++)
{
- UINT16 val = (state->m_janshi_paletteram[pen]) | (state->m_janshi_paletteram2[pen]<<8);
+ UINT16 val = (m_janshi_paletteram[pen]) | (m_janshi_paletteram2[pen]<<8);
int r = (val & 0x001f) >> 0;
int g = (val & 0x03e0) >> 5;
int b = (val & 0x7c00) >> 10;
@@ -230,7 +230,7 @@ static SCREEN_UPDATE_IND16( pinkiri8 )
for (i=0x00;i<0x40;i+=2)
{
- printf("%02x, ", state->m_janshi_widthflags[i+1]);
+ printf("%02x, ", m_janshi_widthflags[i+1]);
count2++;
@@ -248,8 +248,8 @@ static SCREEN_UPDATE_IND16( pinkiri8 )
- //popmessage("%02x",state->m_janshi_crtc_regs[0x0a]);
- col_bank = (state->m_janshi_crtc_regs[0x0a] & 0x40) >> 6;
+ //popmessage("%02x",m_janshi_crtc_regs[0x0a]);
+ col_bank = (m_janshi_crtc_regs[0x0a] & 0x40) >> 6;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -263,8 +263,8 @@ static SCREEN_UPDATE_IND16( pinkiri8 )
{
for(x=0;x<32;x++)
{
- tile = state->m_janshi_back_vram[count+1]<<8 | state->m_janshi_back_vram[count+0];
- attr = state->m_janshi_back_vram[count+2] ^ 0xf0;
+ tile = m_janshi_back_vram[count+1]<<8 | m_janshi_back_vram[count+0];
+ attr = m_janshi_back_vram[count+2] ^ 0xf0;
col = (attr >> 4) | 0x10;
drawgfx_transpen(bitmap,cliprect,gfx,tile,col,0,0,x*16,y*8,0);
@@ -300,15 +300,15 @@ static SCREEN_UPDATE_IND16( pinkiri8 )
*/
- spr_offs = ((state->m_janshi_vram1[(i*4)+0] & 0xff) | (state->m_janshi_vram1[(i*4)+1]<<8)) & 0xffff;
- col = (state->m_janshi_vram1[(i*4)+2] & 0xf8) >> 3;
- x = state->m_janshi_vram1[(i*4)+3];
+ spr_offs = ((m_janshi_vram1[(i*4)+0] & 0xff) | (m_janshi_vram1[(i*4)+1]<<8)) & 0xffff;
+ col = (m_janshi_vram1[(i*4)+2] & 0xf8) >> 3;
+ x = m_janshi_vram1[(i*4)+3];
x &= 0xff;
x *= 2;
-// unk2 = state->m_janshi_vram2[(i*2)+1];
- y = (state->m_janshi_vram2[(i*2)+0]);
+// unk2 = m_janshi_vram2[(i*2)+1];
+ y = (m_janshi_vram2[(i*2)+0]);
y = 0x100-y;
@@ -321,7 +321,7 @@ static SCREEN_UPDATE_IND16( pinkiri8 )
// these bits seem to somehow determine the sprite height / widths for the sprite ram region?
- int bit = state->m_janshi_widthflags[(i/0x20)*2 + 1];
+ int bit = m_janshi_widthflags[(i/0x20)*2 + 1];
if (bit)
{
@@ -1139,7 +1139,7 @@ static MACHINE_CONFIG_START( pinkiri8, pinkiri8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pinkiri8)
+ MCFG_SCREEN_UPDATE_DRIVER(pinkiri8_state, screen_update_pinkiri8)
MCFG_GFXDECODE(pinkiri8)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/pipedrm.c b/src/mame/drivers/pipedrm.c
index b486649b6b8..2219ee6db2f 100644
--- a/src/mame/drivers/pipedrm.c
+++ b/src/mame/drivers/pipedrm.c
@@ -653,7 +653,7 @@ static MACHINE_CONFIG_START( pipedrm, fromance_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(44*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pipedrm)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_pipedrm)
MCFG_GFXDECODE(pipedrm)
MCFG_PALETTE_LENGTH(2048)
@@ -692,7 +692,7 @@ static MACHINE_CONFIG_START( hatris, fromance_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(44*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fromance)
+ MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE(hatris)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c
index 7b7a768b1ed..d7cea9d08bf 100644
--- a/src/mame/drivers/pipeline.c
+++ b/src/mame/drivers/pipeline.c
@@ -101,6 +101,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info2);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_pipeline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -135,11 +136,10 @@ void pipeline_state::video_start()
m_tilemap2->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( pipeline )
+UINT32 pipeline_state::screen_update_pipeline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pipeline_state *state = screen.machine().driver_data<pipeline_state>();
- state->m_tilemap1->draw(bitmap, cliprect, 0,0);
- state->m_tilemap2->draw(bitmap, cliprect, 0,0);
+ m_tilemap1->draw(bitmap, cliprect, 0,0);
+ m_tilemap2->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -413,7 +413,7 @@ static MACHINE_CONFIG_START( pipeline, pipeline_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 239)
- MCFG_SCREEN_UPDATE_STATIC(pipeline)
+ MCFG_SCREEN_UPDATE_DRIVER(pipeline_state, screen_update_pipeline)
MCFG_GFXDECODE(pipeline)
diff --git a/src/mame/drivers/pirates.c b/src/mame/drivers/pirates.c
index 0ce63367f73..7ec34a53ef4 100644
--- a/src/mame/drivers/pirates.c
+++ b/src/mame/drivers/pirates.c
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( pirates, pirates_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pirates)
+ MCFG_SCREEN_UPDATE_DRIVER(pirates_state, screen_update_pirates)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/pitnrun.c b/src/mame/drivers/pitnrun.c
index 0a96137298d..7fee2a2e0c6 100644
--- a/src/mame/drivers/pitnrun.c
+++ b/src/mame/drivers/pitnrun.c
@@ -250,7 +250,7 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pitnrun)
+ MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update_pitnrun)
MCFG_GFXDECODE(pitnrun)
MCFG_PALETTE_LENGTH(32*3)
diff --git a/src/mame/drivers/pkscram.c b/src/mame/drivers/pkscram.c
index 5a41c18bca1..03162a8d79c 100644
--- a/src/mame/drivers/pkscram.c
+++ b/src/mame/drivers/pkscram.c
@@ -44,6 +44,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_pkscramble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -243,12 +244,11 @@ void pkscram_state::video_start()
m_fg_tilemap->set_transparent_pen(15);
}
-static SCREEN_UPDATE_IND16( pkscramble )
+UINT32 pkscram_state::screen_update_pkscramble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pkscram_state *state = screen.machine().driver_data<pkscram_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_md_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_md_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -316,7 +316,7 @@ static MACHINE_CONFIG_START( pkscramble, pkscram_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pkscramble)
+ MCFG_SCREEN_UPDATE_DRIVER(pkscram_state, screen_update_pkscramble)
MCFG_PALETTE_LENGTH(0x800)
MCFG_GFXDECODE(pkscram)
diff --git a/src/mame/drivers/pktgaldx.c b/src/mame/drivers/pktgaldx.c
index 56af342e663..fdc49c35268 100644
--- a/src/mame/drivers/pktgaldx.c
+++ b/src/mame/drivers/pktgaldx.c
@@ -337,7 +337,7 @@ static MACHINE_CONFIG_START( pktgaldx, pktgaldx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pktgaldx)
+ MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldx)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(pktgaldx)
@@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( pktgaldb, pktgaldx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pktgaldb)
+ MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldb)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(bootleg)
diff --git a/src/mame/drivers/playch10.c b/src/mame/drivers/playch10.c
index daaf9583f71..58f9d6589d8 100644
--- a/src/mame/drivers/playch10.c
+++ b/src/mame/drivers/playch10.c
@@ -694,13 +694,13 @@ static MACHINE_CONFIG_START( playch10, playch10_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(playch10_top)
+ MCFG_SCREEN_UPDATE_DRIVER(playch10_state, screen_update_playch10_top)
MCFG_SCREEN_ADD("bottom", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(playch10_bottom)
+ MCFG_SCREEN_UPDATE_DRIVER(playch10_state, screen_update_playch10_bottom)
MCFG_PPU2C03B_ADD("ppu", playch10_ppu_interface)
diff --git a/src/mame/drivers/playmark.c b/src/mame/drivers/playmark.c
index 25c4ba53c1b..491cb159a99 100644
--- a/src/mame/drivers/playmark.c
+++ b/src/mame/drivers/playmark.c
@@ -1084,7 +1084,7 @@ static MACHINE_CONFIG_START( bigtwin, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bigtwin)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwin)
MCFG_GFXDECODE(playmark)
MCFG_PALETTE_LENGTH(1024)
@@ -1118,7 +1118,7 @@ static MACHINE_CONFIG_START( bigtwinb, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bigtwinb)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwinb)
MCFG_GFXDECODE(bigtwinb)
MCFG_PALETTE_LENGTH(1024)
@@ -1155,7 +1155,7 @@ static MACHINE_CONFIG_START( wbeachvl, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wbeachvl)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_wbeachvl)
MCFG_GFXDECODE(wbeachvl)
MCFG_PALETTE_LENGTH(2048)
@@ -1189,7 +1189,7 @@ static MACHINE_CONFIG_START( excelsr, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(excelsr)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_excelsr)
MCFG_GFXDECODE(excelsr)
MCFG_PALETTE_LENGTH(1024)
@@ -1226,7 +1226,7 @@ static MACHINE_CONFIG_START( hotmind, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hrdtimes)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
MCFG_GFXDECODE(hrdtimes)
MCFG_PALETTE_LENGTH(1024)
@@ -1260,7 +1260,7 @@ static MACHINE_CONFIG_START( hrdtimes, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(hrdtimes)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
MCFG_GFXDECODE(hrdtimes)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/plygonet.c b/src/mame/drivers/plygonet.c
index 66e3c4edfff..19f2232fb00 100644
--- a/src/mame/drivers/plygonet.c
+++ b/src/mame/drivers/plygonet.c
@@ -646,7 +646,7 @@ static MACHINE_CONFIG_START( plygonet, polygonet_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(64, 64+368-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(polygonet)
+ MCFG_SCREEN_UPDATE_DRIVER(polygonet_state, screen_update_polygonet)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/pokechmp.c b/src/mame/drivers/pokechmp.c
index 4ec5aaed561..6a3b4eddd7c 100644
--- a/src/mame/drivers/pokechmp.c
+++ b/src/mame/drivers/pokechmp.c
@@ -218,7 +218,7 @@ static MACHINE_CONFIG_START( pokechmp, pokechmp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pokechmp)
+ MCFG_SCREEN_UPDATE_DRIVER(pokechmp_state, screen_update_pokechmp)
MCFG_GFXDECODE(pokechmp)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/poker72.c b/src/mame/drivers/poker72.c
index 2f634481f8d..7309032a7f8 100644
--- a/src/mame/drivers/poker72.c
+++ b/src/mame/drivers/poker72.c
@@ -33,6 +33,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_poker72(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -40,9 +41,8 @@ void poker72_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(poker72)
+UINT32 poker72_state::screen_update_poker72(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- poker72_state *state = screen.machine().driver_data<poker72_state>();
int x,y,count;
count = 0;
@@ -51,12 +51,12 @@ static SCREEN_UPDATE_IND16(poker72)
{
for (x=0;x<64;x++)
{
- int tile = ((state->m_vram[count+1] & 0x0f) << 8 ) | (state->m_vram[count+0] & 0xff); //TODO: tile bank
- int fx = (state->m_vram[count+1] & 0x10);
- int fy = (state->m_vram[count+1] & 0x20);
- int color = (state->m_vram[count+1] & 0xc0) >> 6;
+ int tile = ((m_vram[count+1] & 0x0f) << 8 ) | (m_vram[count+0] & 0xff); //TODO: tile bank
+ int fx = (m_vram[count+1] & 0x10);
+ int fy = (m_vram[count+1] & 0x20);
+ int color = (m_vram[count+1] & 0xc0) >> 6;
- tile|= state->m_tile_bank << 12;
+ tile|= m_tile_bank << 12;
drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],tile,color,fx,fy,x*8,y*8);
@@ -363,7 +363,7 @@ static MACHINE_CONFIG_START( poker72, poker72_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(poker72)
+ MCFG_SCREEN_UPDATE_DRIVER(poker72_state, screen_update_poker72)
MCFG_GFXDECODE(poker72)
MCFG_PALETTE_LENGTH(0xe00)
diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c
index 2f444a26791..f837a950280 100644
--- a/src/mame/drivers/polepos.c
+++ b/src/mame/drivers/polepos.c
@@ -908,7 +908,7 @@ static MACHINE_CONFIG_START( polepos, polepos_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE_STATIC(polepos)
+ MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update_polepos)
MCFG_GFXDECODE(polepos)
MCFG_PALETTE_LENGTH(0x0f00)
@@ -987,7 +987,7 @@ static MACHINE_CONFIG_START( topracern, polepos_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE_STATIC(polepos)
+ MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update_polepos)
MCFG_GFXDECODE(polepos)
MCFG_PALETTE_LENGTH(0x0f00)
diff --git a/src/mame/drivers/policetr.c b/src/mame/drivers/policetr.c
index 51473e9bdad..ffb559a5013 100644
--- a/src/mame/drivers/policetr.c
+++ b/src/mame/drivers/policetr.c
@@ -427,7 +427,7 @@ static MACHINE_CONFIG_START( policetr, policetr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 262) /* needs to be verified */
MCFG_SCREEN_VISIBLE_AREA(0, 393, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(policetr)
+ MCFG_SCREEN_UPDATE_DRIVER(policetr_state, screen_update_policetr)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/polyplay.c b/src/mame/drivers/polyplay.c
index f9b1a304d77..627e0189881 100644
--- a/src/mame/drivers/polyplay.c
+++ b/src/mame/drivers/polyplay.c
@@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( polyplay, polyplay_state )
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(polyplay)
+ MCFG_SCREEN_UPDATE_DRIVER(polyplay_state, screen_update_polyplay)
MCFG_GFXDECODE(polyplay)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/poo.c b/src/mame/drivers/poo.c
index a6954d64225..23537a51bef 100644
--- a/src/mame/drivers/poo.c
+++ b/src/mame/drivers/poo.c
@@ -68,6 +68,7 @@ public:
DECLARE_READ8_MEMBER(timer_r);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_unclepoo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -75,9 +76,8 @@ void poo_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(unclepoo)
+UINT32 poo_state::screen_update_unclepoo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- poo_state *state = screen.machine().driver_data<poo_state>();
int y,x;
int count;
gfx_element *gfx = screen.machine().gfx[0];
@@ -88,12 +88,12 @@ static SCREEN_UPDATE_IND16(unclepoo)
{
for (y=0;y<32;y++)
{
- int tile = state->m_vram[count+0x000] | ((state->m_vram[count+0x400] & 3) <<8);
- int color = (state->m_vram[count+0x400] & 0x38) >> 3;
- int scrolly = (state->m_scrolly[x*4]);
+ int tile = m_vram[count+0x000] | ((m_vram[count+0x400] & 3) <<8);
+ int color = (m_vram[count+0x400] & 0x38) >> 3;
+ int scrolly = (m_scrolly[x*4]);
- drawgfx_opaque(bitmap,cliprect,gfx,tile,color+state->m_vram_colbank,0,0,x*8,256-(y*8)+scrolly);
- drawgfx_opaque(bitmap,cliprect,gfx,tile,color+state->m_vram_colbank,0,0,x*8,0-(y*8)+scrolly);
+ drawgfx_opaque(bitmap,cliprect,gfx,tile,color+m_vram_colbank,0,0,x*8,256-(y*8)+scrolly);
+ drawgfx_opaque(bitmap,cliprect,gfx,tile,color+m_vram_colbank,0,0,x*8,0-(y*8)+scrolly);
count++;
}
@@ -104,10 +104,10 @@ static SCREEN_UPDATE_IND16(unclepoo)
for(i=0;i<0x80;i+=4)
{
- spr_offs = state->m_sprites[i+2] | (state->m_sprites[i+3] & 3) << 8;
- y = state->m_sprites[i+0]+8;
- x = state->m_sprites[i+1];
- col = (state->m_sprites[i+3] & 0xf8) >> 3;
+ spr_offs = m_sprites[i+2] | (m_sprites[i+3] & 3) << 8;
+ y = m_sprites[i+0]+8;
+ x = m_sprites[i+1];
+ col = (m_sprites[i+3] & 0xf8) >> 3;
fx = 0;
fy = 0;
@@ -353,7 +353,7 @@ static MACHINE_CONFIG_START( unclepoo, poo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(unclepoo)
+ MCFG_SCREEN_UPDATE_DRIVER(poo_state, screen_update_unclepoo)
MCFG_GFXDECODE(unclepoo)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/poolshrk.c b/src/mame/drivers/poolshrk.c
index c5c020232b2..3121fa3e021 100644
--- a/src/mame/drivers/poolshrk.c
+++ b/src/mame/drivers/poolshrk.c
@@ -223,7 +223,7 @@ static MACHINE_CONFIG_START( poolshrk, poolshrk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1, 255, 24, 255)
- MCFG_SCREEN_UPDATE_STATIC(poolshrk)
+ MCFG_SCREEN_UPDATE_DRIVER(poolshrk_state, screen_update_poolshrk)
MCFG_GFXDECODE(poolshrk)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/pooyan.c b/src/mame/drivers/pooyan.c
index e6d32f1c928..44a1415375f 100644
--- a/src/mame/drivers/pooyan.c
+++ b/src/mame/drivers/pooyan.c
@@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( pooyan, pooyan_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pooyan)
+ MCFG_SCREEN_UPDATE_DRIVER(pooyan_state, screen_update_pooyan)
MCFG_GFXDECODE(pooyan)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/popeye.c b/src/mame/drivers/popeye.c
index 99efd79e9c3..cfbdde9cbbf 100644
--- a/src/mame/drivers/popeye.c
+++ b/src/mame/drivers/popeye.c
@@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( skyskipr, popeye_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
- MCFG_SCREEN_UPDATE_STATIC(popeye)
+ MCFG_SCREEN_UPDATE_DRIVER(popeye_state, screen_update_popeye)
MCFG_GFXDECODE(popeye)
MCFG_PALETTE_LENGTH(16+16*2+64*4)
diff --git a/src/mame/drivers/popobear.c b/src/mame/drivers/popobear.c
index 75ae4d43cb6..076828d2883 100644
--- a/src/mame/drivers/popobear.c
+++ b/src/mame/drivers/popobear.c
@@ -95,6 +95,7 @@ public:
DECLARE_READ8_MEMBER(popo_620000_r);
DECLARE_WRITE8_MEMBER(popobear_irq_ack_w);
virtual void video_start();
+ UINT32 screen_update_popobear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
void popobear_state::video_start()
@@ -256,13 +257,12 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const re
}
}
-SCREEN_UPDATE_IND16( popobear )
+UINT32 popobear_state::screen_update_popobear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
-// popobear_state *state = screen.machine().driver_data<popobear_state>();
bitmap.fill(0, cliprect);
- //popmessage("%04x",state->m_vregs[0/2]);
+ //popmessage("%04x",m_vregs[0/2]);
draw_layer(screen.machine(),bitmap,cliprect,3);
draw_layer(screen.machine(),bitmap,cliprect,2);
@@ -465,7 +465,7 @@ static MACHINE_CONFIG_START( popobear, popobear_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_UPDATE_STATIC(popobear)
+ MCFG_SCREEN_UPDATE_DRIVER(popobear_state, screen_update_popobear)
// MCFG_GFXDECODE(popobear)
diff --git a/src/mame/drivers/popper.c b/src/mame/drivers/popper.c
index 22431a138bf..7e268e19d60 100644
--- a/src/mame/drivers/popper.c
+++ b/src/mame/drivers/popper.c
@@ -357,7 +357,7 @@ static MACHINE_CONFIG_START( popper, popper_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(33*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 33*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(popper)
+ MCFG_SCREEN_UPDATE_DRIVER(popper_state, screen_update_popper)
MCFG_GFXDECODE(popper)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/portrait.c b/src/mame/drivers/portrait.c
index 81a71d0c93d..8ef875ee8b2 100644
--- a/src/mame/drivers/portrait.c
+++ b/src/mame/drivers/portrait.c
@@ -256,7 +256,7 @@ static MACHINE_CONFIG_START( portrait, portrait_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 0*8, 40*8-1)
- MCFG_SCREEN_UPDATE_STATIC(portrait)
+ MCFG_SCREEN_UPDATE_DRIVER(portrait_state, screen_update_portrait)
MCFG_GFXDECODE(portrait)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/powerbal.c b/src/mame/drivers/powerbal.c
index 01c7ce0b49e..1337e46a414 100644
--- a/src/mame/drivers/powerbal.c
+++ b/src/mame/drivers/powerbal.c
@@ -426,11 +426,10 @@ VIDEO_START_MEMBER(playmark_state,powerbal)
m_bg_tilemap->set_scrolly(0, m_bg_yoffset);
}
-static SCREEN_UPDATE_IND16( powerbal )
+UINT32 playmark_state::screen_update_powerbal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- playmark_state *state = screen.machine().driver_data<playmark_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
@@ -496,7 +495,7 @@ static MACHINE_CONFIG_START( powerbal, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(powerbal)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_powerbal)
MCFG_GFXDECODE(powerbal)
MCFG_PALETTE_LENGTH(512)
@@ -529,7 +528,7 @@ static MACHINE_CONFIG_START( magicstk, playmark_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(powerbal)
+ MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_powerbal)
MCFG_GFXDECODE(powerbal)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/powerins.c b/src/mame/drivers/powerins.c
index 978a6ecee15..0a44d73ad0c 100644
--- a/src/mame/drivers/powerins.c
+++ b/src/mame/drivers/powerins.c
@@ -356,7 +356,7 @@ static MACHINE_CONFIG_START( powerins, powerins_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(powerins)
+ MCFG_SCREEN_UPDATE_DRIVER(powerins_state, screen_update_powerins)
MCFG_GFXDECODE(powerins)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ppmast93.c b/src/mame/drivers/ppmast93.c
index 185cbd0bebc..081bb98ef0e 100644
--- a/src/mame/drivers/ppmast93.c
+++ b/src/mame/drivers/ppmast93.c
@@ -155,6 +155,7 @@ public:
TILE_GET_INFO_MEMBER(get_ppmast93_bg_tile_info);
TILE_GET_INFO_MEMBER(get_ppmast93_fg_tile_info);
virtual void video_start();
+ UINT32 screen_update_ppmast93(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -353,11 +354,10 @@ void ppmast93_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( ppmast93 )
+UINT32 ppmast93_state::screen_update_ppmast93(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ppmast93_state *state = screen.machine().driver_data<ppmast93_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0,0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( ppmast93, ppmast93_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(ppmast93)
+ MCFG_SCREEN_UPDATE_DRIVER(ppmast93_state, screen_update_ppmast93)
MCFG_GFXDECODE(ppmast93)
diff --git a/src/mame/drivers/prehisle.c b/src/mame/drivers/prehisle.c
index f8ad1f5102a..20e903d8f43 100644
--- a/src/mame/drivers/prehisle.c
+++ b/src/mame/drivers/prehisle.c
@@ -222,7 +222,7 @@ static MACHINE_CONFIG_START( prehisle, prehisle_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(prehisle)
+ MCFG_SCREEN_UPDATE_DRIVER(prehisle_state, screen_update_prehisle)
MCFG_GFXDECODE(prehisle)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/progolf.c b/src/mame/drivers/progolf.c
index 98bfbcecf33..e2f65bbe484 100644
--- a/src/mame/drivers/progolf.c
+++ b/src/mame/drivers/progolf.c
@@ -86,6 +86,7 @@ public:
DECLARE_DRIVER_INIT(progolf);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_progolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -101,14 +102,13 @@ void progolf_state::video_start()
}
-static SCREEN_UPDATE_IND16( progolf )
+UINT32 progolf_state::screen_update_progolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- progolf_state *state = screen.machine().driver_data<progolf_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
int count,color,x,y,xi,yi;
{
- int scroll = (state->m_scrollx_lo | ((state->m_scrollx_hi & 0x03) << 8));
+ int scroll = (m_scrollx_lo | ((m_scrollx_hi & 0x03) << 8));
count = 0;
@@ -139,7 +139,7 @@ static SCREEN_UPDATE_IND16( progolf )
{
for (xi=0;xi<8;xi++)
{
- color = state->m_fg_fb[(xi+yi*8)+count*0x40];
+ color = m_fg_fb[(xi+yi*8)+count*0x40];
if(color != 0 && cliprect.contains(x+yi, 256-y+xi))
bitmap.pix16(x+yi, 256-y+xi) = screen.machine().pens[(color & 0x7)];
@@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( progolf, progolf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(progolf)
+ MCFG_SCREEN_UPDATE_DRIVER(progolf_state, screen_update_progolf)
MCFG_GFXDECODE(progolf)
MCFG_PALETTE_LENGTH(32*3)
diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c
index 9f3c368ec30..bd6f0da995e 100644
--- a/src/mame/drivers/psattack.c
+++ b/src/mame/drivers/psattack.c
@@ -90,6 +90,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_psattack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_psattack(screen_device &screen, bool state);
};
@@ -124,12 +126,12 @@ void psattack_state::video_start()
}
-static SCREEN_UPDATE_IND16(psattack)
+UINT32 psattack_state::screen_update_psattack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
-static SCREEN_VBLANK(psattack)
+void psattack_state::screen_eof_psattack(screen_device &screen, bool state)
{
}
@@ -186,8 +188,8 @@ static MACHINE_CONFIG_START( psattack, psattack_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(psattack)
- MCFG_SCREEN_VBLANK_STATIC(psattack)
+ MCFG_SCREEN_UPDATE_DRIVER(psattack_state, screen_update_psattack)
+ MCFG_SCREEN_VBLANK_DRIVER(psattack_state, screen_eof_psattack)
MCFG_PALETTE_INIT(RRRRR_GGGGGG_BBBBB)
diff --git a/src/mame/drivers/psikyo.c b/src/mame/drivers/psikyo.c
index 7abba4bbf9d..b59c17cabdf 100644
--- a/src/mame/drivers/psikyo.c
+++ b/src/mame/drivers/psikyo.c
@@ -1062,8 +1062,8 @@ static MACHINE_CONFIG_START( sngkace, psikyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_VBLANK_STATIC(psikyo)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo)
+ MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1111,8 +1111,8 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_VBLANK_STATIC(psikyo)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo)
+ MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1144,8 +1144,8 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo_bootleg)
- MCFG_SCREEN_VBLANK_STATIC(psikyo)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo_bootleg)
+ MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1198,8 +1198,8 @@ static MACHINE_CONFIG_START( s1945, psikyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_VBLANK_STATIC(psikyo)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo)
+ MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/psikyo4.c b/src/mame/drivers/psikyo4.c
index c2d4c3a54ed..5483aa4c304 100644
--- a/src/mame/drivers/psikyo4.c
+++ b/src/mame/drivers/psikyo4.c
@@ -697,14 +697,14 @@ static MACHINE_CONFIG_START( ps4big, psikyo4_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo4_left)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo4_state, screen_update_psikyo4_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyo4_right)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyo4_state, screen_update_psikyo4_right)
/* sound hardware */
diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c
index bc8d51213d5..8dd2f2fd2f8 100644
--- a/src/mame/drivers/psikyosh.c
+++ b/src/mame/drivers/psikyosh.c
@@ -822,7 +822,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(psikyosh)
+ MCFG_SCREEN_UPDATE_DRIVER(psikyosh_state, screen_update_psikyosh)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram32_device, vblank_copy_rising)
MCFG_GFXDECODE(psikyosh)
diff --git a/src/mame/drivers/psychic5.c b/src/mame/drivers/psychic5.c
index d650e951951..ca2fbef83ab 100644
--- a/src/mame/drivers/psychic5.c
+++ b/src/mame/drivers/psychic5.c
@@ -678,7 +678,7 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
/* frames per second hand tuned to match game and music speed */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(psychic5)
+ MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_psychic5)
MCFG_GFXDECODE(psychic5)
MCFG_PALETTE_LENGTH(768)
@@ -722,7 +722,7 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bombsa)
+ MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_bombsa)
MCFG_GFXDECODE(bombsa)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/pturn.c b/src/mame/drivers/pturn.c
index d8500ed2436..356cc88ecd0 100644
--- a/src/mame/drivers/pturn.c
+++ b/src/mame/drivers/pturn.c
@@ -117,6 +117,7 @@ public:
TILE_GET_INFO_MEMBER(get_pturn_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_pturn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -163,16 +164,15 @@ void pturn_state::video_start()
m_bgmap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(pturn)
+UINT32 pturn_state::screen_update_pturn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pturn_state *state = screen.machine().driver_data<pturn_state>();
- UINT8 *spriteram = state->m_spriteram;
+ UINT8 *spriteram = m_spriteram;
int offs;
int sx, sy;
int flipx, flipy;
- bitmap.fill(state->m_bgcolor, cliprect);
- state->m_bgmap->draw(bitmap, cliprect, 0,0);
+ bitmap.fill(m_bgcolor, cliprect);
+ m_bgmap->draw(bitmap, cliprect, 0,0);
for ( offs = 0x80-4 ; offs >=0 ; offs -= 4)
{
sy=256-spriteram[offs]-16 ;
@@ -182,13 +182,13 @@ static SCREEN_UPDATE_IND16(pturn)
flipy=spriteram[offs+1]&0x80;
- if (state->flip_screen_x())
+ if (flip_screen_x())
{
sx = 224 - sx;
flipx ^= 0x40;
}
- if (state->flip_screen_y())
+ if (flip_screen_y())
{
flipy ^= 0x80;
sy = 224 - sy;
@@ -203,7 +203,7 @@ static SCREEN_UPDATE_IND16(pturn)
sx,sy,0);
}
}
- state->m_fgmap->draw(bitmap, cliprect, 0,0);
+ m_fgmap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -498,7 +498,7 @@ static MACHINE_CONFIG_START( pturn, pturn_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pturn)
+ MCFG_SCREEN_UPDATE_DRIVER(pturn_state, screen_update_pturn)
MCFG_PALETTE_LENGTH(0x100)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
diff --git a/src/mame/drivers/punchout.c b/src/mame/drivers/punchout.c
index aae65e815d7..bdcb8a27d17 100644
--- a/src/mame/drivers/punchout.c
+++ b/src/mame/drivers/punchout.c
@@ -962,14 +962,14 @@ static MACHINE_CONFIG_START( punchout, punchout_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(punchout_top)
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_punchout_top)
MCFG_SCREEN_ADD("bottom", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(punchout_bottom)
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_punchout_bottom)
/* sound hardware */
@@ -996,9 +996,9 @@ static MACHINE_CONFIG_DERIVED( armwrest, punchout )
MCFG_VIDEO_START_OVERRIDE(punchout_state,armwrest)
MCFG_SCREEN_MODIFY("top")
- MCFG_SCREEN_UPDATE_STATIC(armwrest_top)
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_armwrest_top)
MCFG_SCREEN_MODIFY("bottom")
- MCFG_SCREEN_UPDATE_STATIC(armwrest_bottom)
+ MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_armwrest_bottom)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pushman.c b/src/mame/drivers/pushman.c
index 6768200a03a..b0edf6818a5 100644
--- a/src/mame/drivers/pushman.c
+++ b/src/mame/drivers/pushman.c
@@ -449,7 +449,7 @@ static MACHINE_CONFIG_START( pushman, pushman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pushman)
+ MCFG_SCREEN_UPDATE_DRIVER(pushman_state, screen_update_pushman)
MCFG_GFXDECODE(pushman)
MCFG_PALETTE_LENGTH(1024)
@@ -495,7 +495,7 @@ static MACHINE_CONFIG_START( bballs, pushman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pushman)
+ MCFG_SCREEN_UPDATE_DRIVER(pushman_state, screen_update_pushman)
MCFG_GFXDECODE(pushman)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/pzletime.c b/src/mame/drivers/pzletime.c
index dd498d7af46..63c8451b3e3 100644
--- a/src/mame/drivers/pzletime.c
+++ b/src/mame/drivers/pzletime.c
@@ -59,6 +59,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -91,21 +92,20 @@ void pzletime_state::video_start()
m_txt_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16( pzletime )
+UINT32 pzletime_state::screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pzletime_state *state = screen.machine().driver_data<pzletime_state>();
int count;
int y, x;
bitmap.fill(screen.machine().pens[0], cliprect); //bg pen
- state->m_txt_tilemap->set_scrolly(0, state->m_tilemap_regs[0] - 3);
- state->m_txt_tilemap->set_scrollx(0, state->m_tilemap_regs[1]);
+ m_txt_tilemap->set_scrolly(0, m_tilemap_regs[0] - 3);
+ m_txt_tilemap->set_scrollx(0, m_tilemap_regs[1]);
- state->m_mid_tilemap->set_scrolly(0, state->m_tilemap_regs[2] - 3);
- state->m_mid_tilemap->set_scrollx(0, state->m_tilemap_regs[3] - 7);
+ m_mid_tilemap->set_scrolly(0, m_tilemap_regs[2] - 3);
+ m_mid_tilemap->set_scrollx(0, m_tilemap_regs[3] - 7);
- if (state->m_video_regs[2] & 1)
+ if (m_video_regs[2] & 1)
{
count = 0;
@@ -113,18 +113,18 @@ static SCREEN_UPDATE_IND16( pzletime )
{
for (x = 0; x < 512; x++)
{
- if (state->m_bg_videoram[count] & 0x8000)
- bitmap.pix16((y - 18) & 0xff, (x - 32) & 0x1ff) = 0x300 + (state->m_bg_videoram[count] & 0x7fff);
+ if (m_bg_videoram[count] & 0x8000)
+ bitmap.pix16((y - 18) & 0xff, (x - 32) & 0x1ff) = 0x300 + (m_bg_videoram[count] & 0x7fff);
count++;
}
}
}
- state->m_mid_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_mid_tilemap->draw(bitmap, cliprect, 0, 0);
{
- UINT16 *spriteram = state->m_spriteram;
+ UINT16 *spriteram = m_spriteram;
int offs, spr_offs, colour, sx, sy;
for(offs = 0; offs < 0x2000 / 2; offs += 4)
@@ -143,9 +143,9 @@ static SCREEN_UPDATE_IND16( pzletime )
}
}
- state->m_txt_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_txt_tilemap->draw(bitmap, cliprect, 0, 0);
if ((screen.frame_number() % 16) != 0)
- state->m_txt_tilemap->draw(bitmap, cliprect, 1, 0);
+ m_txt_tilemap->draw(bitmap, cliprect, 1, 0);
return 0;
}
@@ -333,7 +333,7 @@ static MACHINE_CONFIG_START( pzletime, pzletime_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pzletime)
+ MCFG_SCREEN_UPDATE_DRIVER(pzletime_state, screen_update_pzletime)
MCFG_GFXDECODE(pzletime)
MCFG_PALETTE_LENGTH(0x300 + 32768)
MCFG_EEPROM_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/qdrmfgp.c b/src/mame/drivers/qdrmfgp.c
index c1354d1de44..17c622bd487 100644
--- a/src/mame/drivers/qdrmfgp.c
+++ b/src/mame/drivers/qdrmfgp.c
@@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(qdrmfgp)
+ MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
MCFG_PALETTE_LENGTH(2048)
@@ -731,7 +731,7 @@ static MACHINE_CONFIG_START( qdrmfgp2, qdrmfgp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE_STATIC(qdrmfgp)
+ MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/quakeat.c b/src/mame/drivers/quakeat.c
index 0e248a46d09..43e07c73087 100644
--- a/src/mame/drivers/quakeat.c
+++ b/src/mame/drivers/quakeat.c
@@ -76,6 +76,7 @@ public:
DECLARE_READ8_MEMBER(get_slave_ack);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_quake(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -83,7 +84,7 @@ void quakeat_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(quake)
+UINT32 quakeat_state::screen_update_quake(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -182,7 +183,7 @@ static MACHINE_CONFIG_START( quake, quakeat_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(quake)
+ MCFG_SCREEN_UPDATE_DRIVER(quakeat_state, screen_update_quake)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/quasar.c b/src/mame/drivers/quasar.c
index f5a767dc6ce..db0a14624d4 100644
--- a/src/mame/drivers/quasar.c
+++ b/src/mame/drivers/quasar.c
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( quasar, quasar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8+1, 29*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(quasar)
+ MCFG_SCREEN_UPDATE_DRIVER(quasar_state, screen_update_quasar)
MCFG_GFXDECODE(quasar)
MCFG_PALETTE_LENGTH((64+1)*8+(4*256))
diff --git a/src/mame/drivers/quizdna.c b/src/mame/drivers/quizdna.c
index e5db26bde80..88801eda608 100644
--- a/src/mame/drivers/quizdna.c
+++ b/src/mame/drivers/quizdna.c
@@ -455,7 +455,7 @@ static MACHINE_CONFIG_START( quizdna, quizdna_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(quizdna)
+ MCFG_SCREEN_UPDATE_DRIVER(quizdna_state, screen_update_quizdna)
MCFG_GFXDECODE(quizdna)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/quizo.c b/src/mame/drivers/quizo.c
index ab6d5b3a12f..b0758c7ea80 100644
--- a/src/mame/drivers/quizo.c
+++ b/src/mame/drivers/quizo.c
@@ -42,6 +42,7 @@ public:
DECLARE_WRITE8_MEMBER(port60_w);
DECLARE_DRIVER_INIT(quizo);
virtual void palette_init();
+ UINT32 screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -79,10 +80,9 @@ void quizo_state::palette_init()
}
}
-static SCREEN_UPDATE_IND16( quizo )
+UINT32 quizo_state::screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- quizo_state *state = screen.machine().driver_data<quizo_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
int x,y;
for(y=0;y<200;y++)
{
@@ -216,7 +216,7 @@ static MACHINE_CONFIG_START( quizo, quizo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 200)
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(quizo)
+ MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update_quizo)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/quizpani.c b/src/mame/drivers/quizpani.c
index 73ca7a5de9e..f70b03f2b37 100644
--- a/src/mame/drivers/quizpani.c
+++ b/src/mame/drivers/quizpani.c
@@ -208,7 +208,7 @@ static MACHINE_CONFIG_START( quizpani, quizpani_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(quizpani)
+ MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update_quizpani)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/quizpun2.c b/src/mame/drivers/quizpun2.c
index 42ef66c9fab..60d8271c31a 100644
--- a/src/mame/drivers/quizpun2.c
+++ b/src/mame/drivers/quizpun2.c
@@ -112,6 +112,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_quizpun2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -155,9 +156,8 @@ void quizpun2_state::video_start()
m_fg_tmap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(quizpun2)
+UINT32 quizpun2_state::screen_update_quizpun2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- quizpun2_state *state = screen.machine().driver_data<quizpun2_state>();
int layers_ctrl = -1;
#ifdef MAME_DEBUG
@@ -170,11 +170,11 @@ static SCREEN_UPDATE_IND16(quizpun2)
}
#endif
- if (layers_ctrl & 1) state->m_bg_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_bg_tmap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
else bitmap.fill(get_black_pen(screen.machine()), cliprect);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (layers_ctrl & 2) state->m_fg_tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_fg_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( quizpun2, quizpun2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(quizpun2)
+ MCFG_SCREEN_UPDATE_DRIVER(quizpun2_state, screen_update_quizpun2)
MCFG_GFXDECODE(quizpun2)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/quizshow.c b/src/mame/drivers/quizshow.c
index 46548f401a6..c8dba468706 100644
--- a/src/mame/drivers/quizshow.c
+++ b/src/mame/drivers/quizshow.c
@@ -63,6 +63,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_quizshow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -106,10 +107,9 @@ void quizshow_state::video_start()
m_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(quizshow_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 16, 32, 16);
}
-SCREEN_UPDATE_IND16( quizshow )
+UINT32 quizshow_state::screen_update_quizshow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- quizshow_state *state = screen.machine().driver_data<quizshow_state>();
- state->m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ m_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
return 0;
}
@@ -382,7 +382,7 @@ static MACHINE_CONFIG_START( quizshow, quizshow_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(quizshow)
+ MCFG_SCREEN_UPDATE_DRIVER(quizshow_state, screen_update_quizshow)
MCFG_GFXDECODE(quizshow)
MCFG_PALETTE_LENGTH(8*2)
diff --git a/src/mame/drivers/r2dx_v33.c b/src/mame/drivers/r2dx_v33.c
index e90a9d67178..c24c4ce1d66 100644
--- a/src/mame/drivers/r2dx_v33.c
+++ b/src/mame/drivers/r2dx_v33.c
@@ -70,6 +70,7 @@ public:
tilemap_t *m_fg_tilemap;
tilemap_t *m_tx_tilemap;
virtual void video_start();
+ UINT32 screen_update_rdx_v33(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -213,18 +214,17 @@ void r2dx_v33_state::video_start()
m_tx_tilemap->set_transparent_pen(15);
}
-static SCREEN_UPDATE_IND16( rdx_v33 )
+UINT32 r2dx_v33_state::screen_update_rdx_v33(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- r2dx_v33_state *state = screen.machine().driver_data<r2dx_v33_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_md_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_md_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
draw_sprites(screen.machine(),bitmap,cliprect,0);
- state->m_tx_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tx_tilemap->draw(bitmap, cliprect, 0, 0);
/* debug DMA processing */
if(0)
@@ -258,7 +258,7 @@ static SCREEN_UPDATE_IND16( rdx_v33 )
}
popmessage("%08x 1",src_addr);
- state->m_bg_tilemap->mark_all_dirty();
+ m_bg_tilemap->mark_all_dirty();
frame = 0;
src_addr+=0x800;
}
@@ -704,7 +704,7 @@ static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rdx_v33)
+ MCFG_SCREEN_UPDATE_DRIVER(r2dx_v33_state, screen_update_rdx_v33)
MCFG_GFXDECODE(rdx_v33)
MCFG_PALETTE_LENGTH(2048)
@@ -737,7 +737,7 @@ static MACHINE_CONFIG_START( nzerotea, r2dx_v33_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rdx_v33)
+ MCFG_SCREEN_UPDATE_DRIVER(r2dx_v33_state, screen_update_rdx_v33)
MCFG_GFXDECODE(rdx_v33)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/rabbit.c b/src/mame/drivers/rabbit.c
index 9d580e32f25..c7aad838471 100644
--- a/src/mame/drivers/rabbit.c
+++ b/src/mame/drivers/rabbit.c
@@ -137,6 +137,7 @@ public:
TILE_GET_INFO_MEMBER(get_rabbit_tilemap2_tile_info);
TILE_GET_INFO_MEMBER(get_rabbit_tilemap3_tile_info);
virtual void video_start();
+ UINT32 screen_update_rabbit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -461,33 +462,32 @@ static void rabbit_drawtilemap( running_machine &machine, bitmap_ind16 &bitmap,
tran ? 0 : TILEMAP_DRAW_OPAQUE,0);
}
-static SCREEN_UPDATE_IND16(rabbit)
+UINT32 rabbit_state::screen_update_rabbit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- rabbit_state *state = screen.machine().driver_data<rabbit_state>();
int prilevel;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
-// popmessage("%08x %08x", state->m_viewregs0[0], state->m_viewregs0[1]);
-// popmessage("%08x %08x %08x %08x %08x %08x", state->m_tilemap_regs[0][0],state->m_tilemap_regs[0][1],state->m_tilemap_regs[0][2],state->m_tilemap_regs[0][3],state->m_tilemap_regs[0][4],state->m_tilemap_regs[0][5]);
-// popmessage("%08x %08x %08x %08x %08x %08x", state->m_tilemap_regs[1][0],state->m_tilemap_regs[1][1],state->m_tilemap_regs[1][2],state->m_tilemap_regs[1][3],state->m_tilemap_regs[1][4],state->m_tilemap_regs[1][5]);
-// popmessage("%08x %08x %08x %08x %08x %08x", state->m_tilemap_regs[2][0],state->m_tilemap_regs[2][1],state->m_tilemap_regs[2][2],state->m_tilemap_regs[2][3],state->m_tilemap_regs[2][4],state->m_tilemap_regs[2][5]);
-// popmessage("%08x %08x %08x %08x %08x %08x", state->m_tilemap_regs[3][0],state->m_tilemap_regs[3][1],state->m_tilemap_regs[3][2],state->m_tilemap_regs[3][3],state->m_tilemap_regs[3][4],state->m_tilemap_regs[3][5]);
-// popmessage("%08x %08x %08x %08x %08x %08x %08x", state->m_spriteregs[0],state->m_spriteregs[1],state->m_spriteregs[2],state->m_spriteregs[3],state->m_spriteregs[4],state->m_spriteregs[5], state->m_spriteregs[6]);
-// popmessage("%08x %08x %08x %08x %08x", state->m_viewregs6[0],state->m_viewregs6[1],state->m_viewregs6[2],state->m_viewregs6[3],state->m_viewregs6[4]);
-// popmessage("%08x", state->m_viewregs7[0]);
-// popmessage("%08x %08x %08x %08x", state->m_blitterregs[0],state->m_blitterregs[1],state->m_blitterregs[2],state->m_blitterregs[3]);
-// popmessage("%08x %08x %08x %08x", state->m_viewregs9[0],state->m_viewregs9[1],state->m_viewregs9[2],state->m_viewregs9[3]);
+// popmessage("%08x %08x", m_viewregs0[0], m_viewregs0[1]);
+// popmessage("%08x %08x %08x %08x %08x %08x", m_tilemap_regs[0][0],m_tilemap_regs[0][1],m_tilemap_regs[0][2],m_tilemap_regs[0][3],m_tilemap_regs[0][4],m_tilemap_regs[0][5]);
+// popmessage("%08x %08x %08x %08x %08x %08x", m_tilemap_regs[1][0],m_tilemap_regs[1][1],m_tilemap_regs[1][2],m_tilemap_regs[1][3],m_tilemap_regs[1][4],m_tilemap_regs[1][5]);
+// popmessage("%08x %08x %08x %08x %08x %08x", m_tilemap_regs[2][0],m_tilemap_regs[2][1],m_tilemap_regs[2][2],m_tilemap_regs[2][3],m_tilemap_regs[2][4],m_tilemap_regs[2][5]);
+// popmessage("%08x %08x %08x %08x %08x %08x", m_tilemap_regs[3][0],m_tilemap_regs[3][1],m_tilemap_regs[3][2],m_tilemap_regs[3][3],m_tilemap_regs[3][4],m_tilemap_regs[3][5]);
+// popmessage("%08x %08x %08x %08x %08x %08x %08x", m_spriteregs[0],m_spriteregs[1],m_spriteregs[2],m_spriteregs[3],m_spriteregs[4],m_spriteregs[5], m_spriteregs[6]);
+// popmessage("%08x %08x %08x %08x %08x", m_viewregs6[0],m_viewregs6[1],m_viewregs6[2],m_viewregs6[3],m_viewregs6[4]);
+// popmessage("%08x", m_viewregs7[0]);
+// popmessage("%08x %08x %08x %08x", m_blitterregs[0],m_blitterregs[1],m_blitterregs[2],m_blitterregs[3]);
+// popmessage("%08x %08x %08x %08x", m_viewregs9[0],m_viewregs9[1],m_viewregs9[2],m_viewregs9[3]);
-// popmessage("%08x %08x %08x %08x %08x", state->m_viewregs10[0],state->m_viewregs10[1],state->m_viewregs10[2],state->m_viewregs10[3],state->m_viewregs10[4]);
+// popmessage("%08x %08x %08x %08x %08x", m_viewregs10[0],m_viewregs10[1],m_viewregs10[2],m_viewregs10[3],m_viewregs10[4]);
/* prio isnt certain but seems to work.. */
for (prilevel = 0xf; prilevel >0; prilevel--)
{
- if (prilevel == ((state->m_tilemap_regs[3][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 3);
- if (prilevel == ((state->m_tilemap_regs[2][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 2);
- if (prilevel == ((state->m_tilemap_regs[1][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 1);
- if (prilevel == ((state->m_tilemap_regs[0][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 0);
+ if (prilevel == ((m_tilemap_regs[3][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 3);
+ if (prilevel == ((m_tilemap_regs[2][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 2);
+ if (prilevel == ((m_tilemap_regs[1][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 1);
+ if (prilevel == ((m_tilemap_regs[0][0]&0x0f000000)>>24)) rabbit_drawtilemap(screen.machine(),bitmap,cliprect, 0);
if (prilevel == 0x09) // should it be selectable?
{
@@ -891,7 +891,7 @@ static MACHINE_CONFIG_START( rabbit, rabbit_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 64*16-1, 0*16, 64*16-1)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 20*16-1, 32*16, 48*16-1)
- MCFG_SCREEN_UPDATE_STATIC(rabbit)
+ MCFG_SCREEN_UPDATE_DRIVER(rabbit_state, screen_update_rabbit)
MCFG_PALETTE_LENGTH(0x4000)
MCFG_PALETTE_INIT( all_black )
diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c
index 5e65ad7583b..725ed7d5e02 100644
--- a/src/mame/drivers/raiden.c
+++ b/src/mame/drivers/raiden.c
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(raiden)
+ MCFG_SCREEN_UPDATE_DRIVER(raiden_state, screen_update_raiden)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(raiden)
diff --git a/src/mame/drivers/raiden2.c b/src/mame/drivers/raiden2.c
index 037a9ec88ee..1ff619a0a0f 100644
--- a/src/mame/drivers/raiden2.c
+++ b/src/mame/drivers/raiden2.c
@@ -936,39 +936,38 @@ VIDEO_START_MEMBER(raiden2_state,raiden2)
/* SCREEN_UPDATE_IND16 (move to video file) */
-static SCREEN_UPDATE_IND16( raiden2 )
+UINT32 raiden2_state::screen_update_raiden2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- raiden2_state *state = screen.machine().driver_data<raiden2_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
//if (!screen.machine().input().code_pressed(KEYCODE_Q))
{
- if (!(state->raiden2_tilemap_enable & 1))
- state->background_layer->draw(bitmap, cliprect, 0, 0);
+ if (!(raiden2_tilemap_enable & 1))
+ background_layer->draw(bitmap, cliprect, 0, 0);
}
//if (!screen.machine().input().code_pressed(KEYCODE_W))
{
- if (!(state->raiden2_tilemap_enable & 2))
- state->midground_layer->draw(bitmap, cliprect, 0, 0);
+ if (!(raiden2_tilemap_enable & 2))
+ midground_layer->draw(bitmap, cliprect, 0, 0);
}
//if (!screen.machine().input().code_pressed(KEYCODE_E))
{
- if (!(state->raiden2_tilemap_enable & 4))
- state->foreground_layer->draw(bitmap, cliprect, 0, 0);
+ if (!(raiden2_tilemap_enable & 4))
+ foreground_layer->draw(bitmap, cliprect, 0, 0);
}
//if (!screen.machine().input().code_pressed(KEYCODE_S))
{
//if (!(raiden2_tilemap_enable & 0x10))
- state->draw_sprites(screen.machine(), bitmap, cliprect, 0);
+ draw_sprites(screen.machine(), bitmap, cliprect, 0);
}
//if (!screen.machine().input().code_pressed(KEYCODE_A))
{
- if (!(state->raiden2_tilemap_enable & 8))
- state->text_layer->draw(bitmap, cliprect, 0, 0);
+ if (!(raiden2_tilemap_enable & 8))
+ text_layer->draw(bitmap, cliprect, 0, 0);
}
return 0;
@@ -1816,7 +1815,7 @@ static MACHINE_CONFIG_START( raiden2, raiden2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(raiden2)
+ MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
MCFG_GFXDECODE(raiden2)
MCFG_PALETTE_LENGTH(2048)
@@ -1872,7 +1871,7 @@ static MACHINE_CONFIG_START( zeroteam, raiden2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(raiden2)
+ MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
MCFG_GFXDECODE(raiden2)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/rainbow.c b/src/mame/drivers/rainbow.c
index b3f3acd33fe..749841458e8 100644
--- a/src/mame/drivers/rainbow.c
+++ b/src/mame/drivers/rainbow.c
@@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( rbisland, rbisland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rainbow)
+ MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_rainbow)
MCFG_GFXDECODE(rbisland)
MCFG_PALETTE_LENGTH(8192)
@@ -730,7 +730,7 @@ static MACHINE_CONFIG_START( jumping, rbisland_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jumping)
+ MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_jumping)
MCFG_GFXDECODE(jumping)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/rallyx.c b/src/mame/drivers/rallyx.c
index 0c9ea1308ce..ce740be1b14 100644
--- a/src/mame/drivers/rallyx.c
+++ b/src/mame/drivers/rallyx.c
@@ -923,7 +923,7 @@ static MACHINE_CONFIG_START( rallyx, rallyx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rallyx)
+ MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_rallyx)
MCFG_GFXDECODE(rallyx)
MCFG_PALETTE_LENGTH(64*4+4)
@@ -961,7 +961,7 @@ static MACHINE_CONFIG_START( jungler, rallyx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jungler)
+ MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_jungler)
MCFG_GFXDECODE(jungler)
MCFG_PALETTE_LENGTH(64*4+4+64)
@@ -981,7 +981,7 @@ static MACHINE_CONFIG_DERIVED( tactcian, jungler )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(locomotn)
+ MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MACHINE_CONFIG_END
@@ -992,7 +992,7 @@ static MACHINE_CONFIG_DERIVED( locomotn, jungler )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(locomotn)
+ MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
MACHINE_CONFIG_END
@@ -1004,7 +1004,7 @@ static MACHINE_CONFIG_DERIVED( commsega, jungler )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(locomotn)
+ MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,commsega)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rampart.c b/src/mame/drivers/rampart.c
index 0b81887cb84..aef16c1fb9e 100644
--- a/src/mame/drivers/rampart.c
+++ b/src/mame/drivers/rampart.c
@@ -362,7 +362,7 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 456, 0+12, 336+12, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(rampart)
+ MCFG_SCREEN_UPDATE_DRIVER(rampart_state, screen_update_rampart)
MCFG_VIDEO_START_OVERRIDE(rampart_state,rampart)
diff --git a/src/mame/drivers/rastan.c b/src/mame/drivers/rastan.c
index b044b628c16..d1ce6b13d4f 100644
--- a/src/mame/drivers/rastan.c
+++ b/src/mame/drivers/rastan.c
@@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( rastan, rastan_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rastan)
+ MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan)
MCFG_GFXDECODE(rastan)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/rbmk.c b/src/mame/drivers/rbmk.c
index f98ae2f8117..a71618e8cbb 100644
--- a/src/mame/drivers/rbmk.c
+++ b/src/mame/drivers/rbmk.c
@@ -78,6 +78,7 @@ public:
DECLARE_WRITE8_MEMBER(mcu_io_mux_w);
DECLARE_WRITE16_MEMBER(eeprom_w);
virtual void video_start();
+ UINT32 screen_update_rbmk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -497,9 +498,8 @@ void rbmk_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(rbmk)
+UINT32 rbmk_state::screen_update_rbmk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- rbmk_state *state = screen.machine().driver_data<rbmk_state>();
int x,y;
int count = 0;
@@ -507,8 +507,8 @@ static SCREEN_UPDATE_IND16(rbmk)
{
for (x=0;x<64;x++)
{
- int tile = state->m_gms_vidram2[count+0x600];
- drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],(tile&0xfff)+((state->m_tilebank&0x10)>>4)*0x1000,tile>>12,0,0,x*8,y*32);
+ int tile = m_gms_vidram2[count+0x600];
+ drawgfx_opaque(bitmap,cliprect,screen.machine().gfx[0],(tile&0xfff)+((m_tilebank&0x10)>>4)*0x1000,tile>>12,0,0,x*8,y*32);
count++;
}
}
@@ -519,8 +519,8 @@ static SCREEN_UPDATE_IND16(rbmk)
{
for (x=0;x<64;x++)
{
- int tile = state->m_gms_vidram[count];
- drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[1],(tile&0xfff)+((state->m_tilebank>>1)&3)*0x1000,tile>>12,0,0,x*8,y*8,0);
+ int tile = m_gms_vidram[count];
+ drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[1],(tile&0xfff)+((m_tilebank>>1)&3)*0x1000,tile>>12,0,0,x*8,y*8,0);
count++;
}
}
@@ -550,7 +550,7 @@ static MACHINE_CONFIG_START( rbmk, rbmk_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rbmk)
+ MCFG_SCREEN_UPDATE_DRIVER(rbmk_state, screen_update_rbmk)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/realbrk.c b/src/mame/drivers/realbrk.c
index 94c651ee180..8ee1af6fad4 100644
--- a/src/mame/drivers/realbrk.c
+++ b/src/mame/drivers/realbrk.c
@@ -768,7 +768,7 @@ static MACHINE_CONFIG_START( realbrk, realbrk_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(realbrk)
+ MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update_realbrk)
MCFG_GFXDECODE(realbrk)
MCFG_PALETTE_LENGTH(0x8000)
@@ -802,7 +802,7 @@ static MACHINE_CONFIG_DERIVED( dai2kaku, realbrk )
MCFG_GFXDECODE(dai2kaku)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(dai2kaku)
+ MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update_dai2kaku)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/redclash.c b/src/mame/drivers/redclash.c
index 7574cb45799..49ddbd88151 100644
--- a/src/mame/drivers/redclash.c
+++ b/src/mame/drivers/redclash.c
@@ -365,8 +365,8 @@ static MACHINE_CONFIG_START( zerohour, ladybug_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(redclash)
- MCFG_SCREEN_VBLANK_STATIC(redclash)
+ MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_redclash)
+ MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_redclash)
MCFG_GFXDECODE(redclash)
MCFG_PALETTE_LENGTH(4*8+4*16+32)
@@ -393,8 +393,8 @@ static MACHINE_CONFIG_START( redclash, ladybug_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(redclash)
- MCFG_SCREEN_VBLANK_STATIC(redclash)
+ MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_redclash)
+ MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_redclash)
MCFG_GFXDECODE(redclash)
MCFG_PALETTE_LENGTH(4*8+4*16+32)
diff --git a/src/mame/drivers/relief.c b/src/mame/drivers/relief.c
index ba554a764e5..d7b828bae5a 100644
--- a/src/mame/drivers/relief.c
+++ b/src/mame/drivers/relief.c
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( relief, relief_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(relief)
+ MCFG_SCREEN_UPDATE_DRIVER(relief_state, screen_update_relief)
MCFG_VIDEO_START_OVERRIDE(relief_state,relief)
diff --git a/src/mame/drivers/renegade.c b/src/mame/drivers/renegade.c
index 0b7467aa3f7..cad46273909 100644
--- a/src/mame/drivers/renegade.c
+++ b/src/mame/drivers/renegade.c
@@ -950,7 +950,7 @@ static MACHINE_CONFIG_START( renegade, renegade_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)*2) /* not accurate */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(renegade)
+ MCFG_SCREEN_UPDATE_DRIVER(renegade_state, screen_update_renegade)
MCFG_GFXDECODE(renegade)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/retofinv.c b/src/mame/drivers/retofinv.c
index d463414c6c3..ec5cec4f981 100644
--- a/src/mame/drivers/retofinv.c
+++ b/src/mame/drivers/retofinv.c
@@ -388,7 +388,7 @@ static MACHINE_CONFIG_START( retofinv, retofinv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(retofinv)
+ MCFG_SCREEN_UPDATE_DRIVER(retofinv_state, screen_update_retofinv)
MCFG_GFXDECODE(retofinv)
MCFG_PALETTE_LENGTH(256*2+64*16+64*16)
diff --git a/src/mame/drivers/rgum.c b/src/mame/drivers/rgum.c
index 2e2d1b2d1ed..22388013368 100644
--- a/src/mame/drivers/rgum.c
+++ b/src/mame/drivers/rgum.c
@@ -32,6 +32,7 @@ public:
UINT8 m_hbeat;
DECLARE_CUSTOM_INPUT_MEMBER(rgum_heartbeat_r);
virtual void video_start();
+ UINT32 screen_update_royalgum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -39,9 +40,8 @@ void rgum_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(royalgum)
+UINT32 rgum_state::screen_update_royalgum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- rgum_state *state = screen.machine().driver_data<rgum_state>();
int x,y,count;
gfx_element *gfx = screen.machine().gfx[0];
@@ -51,7 +51,7 @@ static SCREEN_UPDATE_IND16(royalgum)
{
for(x=0;x<66;x++)
{
- int tile = state->m_vram[count] | ((state->m_cram[count] & 0xf) <<8);
+ int tile = m_vram[count] | ((m_cram[count] & 0xf) <<8);
drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8);
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( rgum, rgum_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(royalgum)
+ MCFG_SCREEN_UPDATE_DRIVER(rgum_state, screen_update_royalgum)
MCFG_MC6845_ADD("crtc", MC6845, 24000000/16, mc6845_intf) /* unknown clock & type, hand tuned to get ~50 fps (?) */
diff --git a/src/mame/drivers/rltennis.c b/src/mame/drivers/rltennis.c
index df980cfda15..27f465668de 100644
--- a/src/mame/drivers/rltennis.c
+++ b/src/mame/drivers/rltennis.c
@@ -192,7 +192,7 @@ static MACHINE_CONFIG_START( rltennis, rltennis_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0,319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(rltennis)
+ MCFG_SCREEN_UPDATE_DRIVER(rltennis_state, screen_update_rltennis)
MCFG_PALETTE_LENGTH(256)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/rmhaihai.c b/src/mame/drivers/rmhaihai.c
index 88f560f0304..f6350fa50ec 100644
--- a/src/mame/drivers/rmhaihai.c
+++ b/src/mame/drivers/rmhaihai.c
@@ -59,6 +59,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
DECLARE_MACHINE_RESET(themj);
+ UINT32 screen_update_rmhaihai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -90,10 +91,9 @@ void rmhaihai_state::video_start()
8, 8, 64, 32);
}
-static SCREEN_UPDATE_IND16( rmhaihai )
+UINT32 rmhaihai_state::screen_update_rmhaihai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- rmhaihai_state *state = screen.machine().driver_data<rmhaihai_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -477,7 +477,7 @@ static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rmhaihai)
+ MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update_rmhaihai)
MCFG_GFXDECODE(rmhaihai)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/rockrage.c b/src/mame/drivers/rockrage.c
index 494d85c72bd..11ecdf52ffe 100644
--- a/src/mame/drivers/rockrage.c
+++ b/src/mame/drivers/rockrage.c
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rockrage)
+ MCFG_SCREEN_UPDATE_DRIVER(rockrage_state, screen_update_rockrage)
MCFG_K007342_ADD("k007342", rockrage_k007342_intf)
MCFG_K007420_ADD("k007420", rockrage_k007420_intf)
diff --git a/src/mame/drivers/rocnrope.c b/src/mame/drivers/rocnrope.c
index c847b810c40..5f0518770c5 100644
--- a/src/mame/drivers/rocnrope.c
+++ b/src/mame/drivers/rocnrope.c
@@ -208,7 +208,7 @@ static MACHINE_CONFIG_START( rocnrope, rocnrope_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rocnrope)
+ MCFG_SCREEN_UPDATE_DRIVER(rocnrope_state, screen_update_rocnrope)
MCFG_GFXDECODE(rocnrope)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/rohga.c b/src/mame/drivers/rohga.c
index 4537cd717a8..e0ebffc34cd 100644
--- a/src/mame/drivers/rohga.c
+++ b/src/mame/drivers/rohga.c
@@ -813,7 +813,7 @@ static MACHINE_CONFIG_START( rohga, rohga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rohga)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
MCFG_GFXDECODE(rohga)
MCFG_PALETTE_LENGTH(2048)
@@ -864,7 +864,7 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wizdfire)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_wizdfire)
MCFG_GFXDECODE(wizdfire)
MCFG_PALETTE_LENGTH(2048)
@@ -918,7 +918,7 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(nitrobal)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_nitrobal)
MCFG_GFXDECODE(wizdfire)
MCFG_PALETTE_LENGTH(2048)
@@ -971,7 +971,7 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rohga)
+ MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
MCFG_GFXDECODE(schmeisr)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/rollerg.c b/src/mame/drivers/rollerg.c
index 53d7828da7f..b248f1840f5 100644
--- a/src/mame/drivers/rollerg.c
+++ b/src/mame/drivers/rollerg.c
@@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( rollerg, rollerg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(rollerg)
+ MCFG_SCREEN_UPDATE_DRIVER(rollerg_state, screen_update_rollerg)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/rollrace.c b/src/mame/drivers/rollrace.c
index cad90051fb8..c1275843fbc 100644
--- a/src/mame/drivers/rollrace.c
+++ b/src/mame/drivers/rollrace.c
@@ -241,7 +241,7 @@ static MACHINE_CONFIG_START( rollrace, rollrace_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(16,255,16, 255-16)
- MCFG_SCREEN_UPDATE_STATIC(rollrace)
+ MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update_rollrace)
MCFG_GFXDECODE(rollrace)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/rotaryf.c b/src/mame/drivers/rotaryf.c
index 038ff849ee3..d3484574ea6 100644
--- a/src/mame/drivers/rotaryf.c
+++ b/src/mame/drivers/rotaryf.c
@@ -26,6 +26,7 @@ public:
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT8> m_videoram;
+ UINT32 screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -61,18 +62,17 @@ static TIMER_DEVICE_CALLBACK( rotaryf_interrupt )
*
*************************************/
-static SCREEN_UPDATE_RGB32( rotaryf )
+UINT32 rotaryf_state::screen_update_rotaryf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- rotaryf_state *state = screen.machine().driver_data<rotaryf_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 x = offs << 3;
int y = offs >> 5;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -178,7 +178,7 @@ static MACHINE_CONFIG_START( rotaryf, rotaryf_state )
MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess, taken from mw8080bw */
MCFG_SCREEN_VISIBLE_AREA(1*8, 30*8-1, 0*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(rotaryf)
+ MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update_rotaryf)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/roul.c b/src/mame/drivers/roul.c
index ca111e422c5..0469b895395 100644
--- a/src/mame/drivers/roul.c
+++ b/src/mame/drivers/roul.c
@@ -82,6 +82,7 @@ public:
DECLARE_WRITE8_MEMBER(ball_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -214,13 +215,12 @@ void roul_state::video_start()
m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
}
-static SCREEN_UPDATE_IND16(roul)
+UINT32 roul_state::screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- roul_state *state = screen.machine().driver_data<roul_state>();
int i,j;
for (i = 0; i < 256; i++)
for (j = 0; j < 256; j++)
- bitmap.pix16(j, i) = state->m_videobuf[j * 256 + 255 - i];
+ bitmap.pix16(j, i) = m_videobuf[j * 256 + 255 - i];
return 0;
}
@@ -294,7 +294,7 @@ static MACHINE_CONFIG_START( roul, roul_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(roul)
+ MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update_roul)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/route16.c b/src/mame/drivers/route16.c
index 6f82dccb27d..ab4b93508c0 100644
--- a/src/mame/drivers/route16.c
+++ b/src/mame/drivers/route16.c
@@ -612,7 +612,7 @@ static MACHINE_CONFIG_START( route16, route16_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) /* frames per second, vblank duration */
- MCFG_SCREEN_UPDATE_STATIC(route16)
+ MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_route16)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -640,7 +640,7 @@ static MACHINE_CONFIG_DERIVED( stratvox, route16 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(stratvox)
+ MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_stratvox)
/* sound hardware */
MCFG_SOUND_MODIFY("ay8910")
@@ -678,7 +678,7 @@ static MACHINE_CONFIG_DERIVED( ttmahjng, route16 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(ttmahjng)
+ MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_ttmahjng)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c
index 87feb2b05ad..1ab6b4821ce 100644
--- a/src/mame/drivers/royalmah.c
+++ b/src/mame/drivers/royalmah.c
@@ -196,6 +196,7 @@ public:
DECLARE_DRIVER_INIT(ippatsu);
virtual void palette_init();
DECLARE_PALETTE_INIT(mjderngr);
+ UINT32 screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -283,10 +284,9 @@ WRITE8_MEMBER(royalmah_state::mjderngr_palbank_w)
}
-static SCREEN_UPDATE_IND16( royalmah )
+UINT32 royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- royalmah_state *state = screen.machine().driver_data<royalmah_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
offs_t offs;
@@ -304,7 +304,7 @@ static SCREEN_UPDATE_IND16( royalmah )
{
UINT8 pen = ((data2 >> 1) & 0x08) | ((data2 << 2) & 0x04) | ((data1 >> 3) & 0x02) | ((data1 >> 0) & 0x01);
- bitmap.pix16(y, x) = (state->m_palette_base << 4) | pen;
+ bitmap.pix16(y, x) = (m_palette_base << 4) | pen;
x = x - 1;
data1 = data1 >> 1;
@@ -3181,7 +3181,7 @@ static MACHINE_CONFIG_START( royalmah, royalmah_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 247)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE_STATIC(royalmah)
+ MCFG_SCREEN_UPDATE_DRIVER(royalmah_state, screen_update_royalmah)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rpunch.c b/src/mame/drivers/rpunch.c
index 610af4bce61..a46516f3932 100644
--- a/src/mame/drivers/rpunch.c
+++ b/src/mame/drivers/rpunch.c
@@ -476,7 +476,7 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(304, 224)
MCFG_SCREEN_VISIBLE_AREA(8, 303-8, 0, 223-8)
- MCFG_SCREEN_UPDATE_STATIC(rpunch)
+ MCFG_SCREEN_UPDATE_DRIVER(rpunch_state, screen_update_rpunch)
MCFG_GFXDECODE(rpunch)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/runaway.c b/src/mame/drivers/runaway.c
index fc19af335d2..392a20fa8bc 100644
--- a/src/mame/drivers/runaway.c
+++ b/src/mame/drivers/runaway.c
@@ -359,7 +359,7 @@ static MACHINE_CONFIG_START( runaway, runaway_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(runaway)
+ MCFG_SCREEN_UPDATE_DRIVER(runaway_state, screen_update_runaway)
MCFG_GFXDECODE(runaway)
MCFG_PALETTE_LENGTH(16)
@@ -387,7 +387,7 @@ static MACHINE_CONFIG_DERIVED( qwak, runaway )
MCFG_VIDEO_START_OVERRIDE(runaway_state,qwak)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(qwak)
+ MCFG_SCREEN_UPDATE_DRIVER(runaway_state, screen_update_qwak)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c
index b57dada2cc7..25f85113444 100644
--- a/src/mame/drivers/rungun.c
+++ b/src/mame/drivers/rungun.c
@@ -420,7 +420,7 @@ static MACHINE_CONFIG_START( rng, rungun_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(88, 88+384-1, 24, 24+224-1)
- MCFG_SCREEN_UPDATE_STATIC(rng)
+ MCFG_SCREEN_UPDATE_DRIVER(rungun_state, screen_update_rng)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/safarir.c b/src/mame/drivers/safarir.c
index d1ebca0ebee..919e056c97f 100644
--- a/src/mame/drivers/safarir.c
+++ b/src/mame/drivers/safarir.c
@@ -78,6 +78,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_safarir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -200,14 +201,13 @@ void safarir_state::video_start()
}
-static SCREEN_UPDATE_IND16( safarir )
+UINT32 safarir_state::screen_update_safarir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- safarir_state *state = screen.machine().driver_data<safarir_state>();
- state->m_bg_tilemap->set_scrollx(0, *state->m_bg_scroll);
+ m_bg_tilemap->set_scrollx(0, *m_bg_scroll);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -415,7 +415,7 @@ static MACHINE_CONFIG_START( safarir, safarir_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 26*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(safarir)
+ MCFG_SCREEN_UPDATE_DRIVER(safarir_state, screen_update_safarir)
/* audio hardware */
MCFG_FRAGMENT_ADD(safarir_audio)
diff --git a/src/mame/drivers/sandscrp.c b/src/mame/drivers/sandscrp.c
index 42e97c5a285..4d59798f675 100644
--- a/src/mame/drivers/sandscrp.c
+++ b/src/mame/drivers/sandscrp.c
@@ -109,13 +109,14 @@ public:
DECLARE_READ8_MEMBER(sandscrp_soundlatch_r);
DECLARE_WRITE8_MEMBER(sandscrp_soundlatch_w);
virtual void machine_reset();
+ UINT32 screen_update_sandscrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_sandscrp(screen_device &screen, bool state);
};
-SCREEN_UPDATE_IND16( sandscrp )
+UINT32 sandscrp_state::screen_update_sandscrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- sandscrp_state *state = screen.machine().driver_data<sandscrp_state>();
device_t *pandora = screen.machine().device("pandora");
bitmap.fill(0, cliprect);
@@ -123,11 +124,11 @@ SCREEN_UPDATE_IND16( sandscrp )
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_view2_0->kaneko16_prepare(bitmap, cliprect);
+ m_view2_0->kaneko16_prepare(bitmap, cliprect);
for ( i = 0; i < 8; i++ )
{
- state->m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
+ m_view2_0->render_tilemap_chip(bitmap,cliprect,i);
}
// copy sprite bitmap to screen
@@ -167,14 +168,13 @@ static INTERRUPT_GEN( sandscrp_interrupt )
}
-static SCREEN_VBLANK( sandscrp )
+void sandscrp_state::screen_eof_sandscrp(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- sandscrp_state *state = screen.machine().driver_data<sandscrp_state>();
device_t *pandora = screen.machine().device("pandora");
- state->m_sprite_irq = 1;
+ m_sprite_irq = 1;
update_irq_state(screen.machine());
pandora_eof(pandora);
}
@@ -515,8 +515,8 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state )
MCFG_SCREEN_VBLANK_TIME( ATTOSECONDS_IN_USEC(2500) /* not accurate */ )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(sandscrp)
- MCFG_SCREEN_VBLANK_STATIC(sandscrp)
+ MCFG_SCREEN_UPDATE_DRIVER(sandscrp_state, screen_update_sandscrp)
+ MCFG_SCREEN_VBLANK_DRIVER(sandscrp_state, screen_eof_sandscrp)
MCFG_GFXDECODE(sandscrp)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/saturn.c b/src/mame/drivers/saturn.c
index ceba5514e6a..1b4d99328e5 100644
--- a/src/mame/drivers/saturn.c
+++ b/src/mame/drivers/saturn.c
@@ -2207,10 +2207,10 @@ static MACHINE_CONFIG_START( saturn, saturn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
#if NEW_VIDEO_CODE
- MCFG_SCREEN_UPDATE_STATIC(saturn)
+ MCFG_SCREEN_UPDATE_DRIVER(saturn_state, screen_update_saturn)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness. (TODO: remove AT LEAST the latter)
#else
- MCFG_SCREEN_UPDATE_STATIC(stv_vdp2)
+ MCFG_SCREEN_UPDATE_DRIVER(saturn_state, screen_update_stv_vdp2)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
#endif
@@ -2296,10 +2296,10 @@ static MACHINE_CONFIG_START( stv, saturn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
#if NEW_VIDEO_CODE
- MCFG_SCREEN_UPDATE_STATIC(saturn)
+ MCFG_SCREEN_UPDATE_DRIVER(saturn_state, screen_update_saturn)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness. (TODO: remove AT LEAST the latter)
#else
- MCFG_SCREEN_UPDATE_STATIC(stv_vdp2)
+ MCFG_SCREEN_UPDATE_DRIVER(saturn_state, screen_update_stv_vdp2)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
#endif
diff --git a/src/mame/drivers/sauro.c b/src/mame/drivers/sauro.c
index 258905c62a1..be07dd82109 100644
--- a/src/mame/drivers/sauro.c
+++ b/src/mame/drivers/sauro.c
@@ -407,7 +407,7 @@ static MACHINE_CONFIG_DERIVED( trckydoc, tecfri )
MCFG_VIDEO_START_OVERRIDE(sauro_state,trckydoc)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(trckydoc)
+ MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_trckydoc)
MACHINE_CONFIG_END
@@ -425,7 +425,7 @@ static MACHINE_CONFIG_DERIVED( sauro, tecfri )
MCFG_VIDEO_START_OVERRIDE(sauro_state,sauro)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(sauro)
+ MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_sauro)
MCFG_SOUND_ADD("speech", SP0256, 3120000)
MCFG_SOUND_CONFIG(sauro_sp256)
diff --git a/src/mame/drivers/sbasketb.c b/src/mame/drivers/sbasketb.c
index 6cba6571c3b..a354b2e61a2 100644
--- a/src/mame/drivers/sbasketb.c
+++ b/src/mame/drivers/sbasketb.c
@@ -210,7 +210,7 @@ static MACHINE_CONFIG_START( sbasketb, sbasketb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sbasketb)
+ MCFG_SCREEN_UPDATE_DRIVER(sbasketb_state, screen_update_sbasketb)
MCFG_GFXDECODE(sbasketb)
MCFG_PALETTE_LENGTH(16*16+16*16*16)
diff --git a/src/mame/drivers/sbowling.c b/src/mame/drivers/sbowling.c
index d96dacd92e4..7e501f49a7e 100644
--- a/src/mame/drivers/sbowling.c
+++ b/src/mame/drivers/sbowling.c
@@ -73,6 +73,7 @@ public:
TILE_GET_INFO_MEMBER(get_sb_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_sbowling(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(sbowling_state::get_sb_tile_info)
@@ -116,13 +117,12 @@ WRITE8_MEMBER(sbowling_state::sbw_videoram_w)
}
}
-static SCREEN_UPDATE_IND16(sbowling)
+UINT32 sbowling_state::screen_update_sbowling(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- sbowling_state *state = screen.machine().driver_data<sbowling_state>();
bitmap.fill(0x18, cliprect);
- state->m_sb_tilemap->draw(bitmap, cliprect, 0, 0);
- copybitmap_trans(bitmap, *state->m_tmpbitmap, 0, 0, 0, 0, cliprect, state->m_color_prom_address);
+ m_sb_tilemap->draw(bitmap, cliprect, 0, 0);
+ copybitmap_trans(bitmap, *m_tmpbitmap, 0, 0, 0, 0, cliprect, m_color_prom_address);
return 0;
}
@@ -392,7 +392,7 @@ static MACHINE_CONFIG_START( sbowling, sbowling_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 262) /* vert size taken from mw8080bw */
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sbowling)
+ MCFG_SCREEN_UPDATE_DRIVER(sbowling_state, screen_update_sbowling)
MCFG_GFXDECODE(sbowling)
diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c
index 12eec0a6b24..a6f3dace53b 100644
--- a/src/mame/drivers/sbrkout.c
+++ b/src/mame/drivers/sbrkout.c
@@ -66,6 +66,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_sbrkout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -327,13 +328,12 @@ WRITE8_MEMBER(sbrkout_state::sbrkout_videoram_w)
*
*************************************/
-static SCREEN_UPDATE_IND16( sbrkout )
+UINT32 sbrkout_state::screen_update_sbrkout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- sbrkout_state *state = screen.machine().driver_data<sbrkout_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
int ball;
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
for (ball = 2; ball >= 0; ball--)
{
@@ -514,7 +514,7 @@ static MACHINE_CONFIG_START( sbrkout, sbrkout_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(sbrkout)
+ MCFG_SCREEN_UPDATE_DRIVER(sbrkout_state, screen_update_sbrkout)
MCFG_PALETTE_INIT(black_and_white)
diff --git a/src/mame/drivers/sbugger.c b/src/mame/drivers/sbugger.c
index 2f3954343e4..38a765221d7 100644
--- a/src/mame/drivers/sbugger.c
+++ b/src/mame/drivers/sbugger.c
@@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( sbugger, sbugger_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sbugger)
+ MCFG_SCREEN_UPDATE_DRIVER(sbugger_state, screen_update_sbugger)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/scobra.c b/src/mame/drivers/scobra.c
index a4e4b60f213..a1a774e77e1 100644
--- a/src/mame/drivers/scobra.c
+++ b/src/mame/drivers/scobra.c
@@ -681,7 +681,7 @@ static MACHINE_CONFIG_START( type1, scobra_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
MCFG_GFXDECODE(scobra)
MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 1 for background */
@@ -804,7 +804,7 @@ static MACHINE_CONFIG_START( hustler, scobra_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
MCFG_GFXDECODE(scobra)
MCFG_PALETTE_LENGTH(32+64+2) /* 32 for characters, 64 for stars, 2 for bullets */
diff --git a/src/mame/drivers/scotrsht.c b/src/mame/drivers/scotrsht.c
index 8139f024de6..8b77888347d 100644
--- a/src/mame/drivers/scotrsht.c
+++ b/src/mame/drivers/scotrsht.c
@@ -197,7 +197,7 @@ static MACHINE_CONFIG_START( scotrsht, scotrsht_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(scotrsht)
+ MCFG_SCREEN_UPDATE_DRIVER(scotrsht_state, screen_update_scotrsht)
MCFG_GFXDECODE(scotrsht)
MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
diff --git a/src/mame/drivers/scramble.c b/src/mame/drivers/scramble.c
index efa1498f515..0c8b57a74ca 100644
--- a/src/mame/drivers/scramble.c
+++ b/src/mame/drivers/scramble.c
@@ -1344,7 +1344,7 @@ static MACHINE_CONFIG_START( scramble, scramble_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
MCFG_GFXDECODE(scramble)
MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
@@ -1572,7 +1572,7 @@ static MACHINE_CONFIG_START( ad2083, scramble_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(galaxold)
+ MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
MCFG_GFXDECODE(ad2083)
MCFG_PALETTE_LENGTH(32+64+2+8) /* 32 for characters, 64 for stars, 2 for bullets, 8 for background */
diff --git a/src/mame/drivers/scregg.c b/src/mame/drivers/scregg.c
index 76e38a277c2..384e25ac1ca 100644
--- a/src/mame/drivers/scregg.c
+++ b/src/mame/drivers/scregg.c
@@ -270,7 +270,7 @@ static MACHINE_CONFIG_START( dommy, scregg_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz/2, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(eggs)
+ MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
MCFG_GFXDECODE(scregg)
MCFG_PALETTE_LENGTH(8)
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( scregg, scregg_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz/2, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(eggs)
+ MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
MCFG_GFXDECODE(scregg)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/sderby.c b/src/mame/drivers/sderby.c
index e88dbf820f4..6adbff69d79 100644
--- a/src/mame/drivers/sderby.c
+++ b/src/mame/drivers/sderby.c
@@ -506,7 +506,7 @@ static MACHINE_CONFIG_START( sderby, sderby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sderby)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
@@ -529,7 +529,7 @@ static MACHINE_CONFIG_START( luckboom, sderby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sderby)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
@@ -552,7 +552,7 @@ static MACHINE_CONFIG_START( spacewin, sderby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pmroulet)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
@@ -575,7 +575,7 @@ static MACHINE_CONFIG_START( pmroulet, sderby_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pmroulet)
+ MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/seattle.c b/src/mame/drivers/seattle.c
index 5a8b953bffc..4b1b78d49e9 100644
--- a/src/mame/drivers/seattle.c
+++ b/src/mame/drivers/seattle.c
@@ -493,6 +493,7 @@ public:
DECLARE_DRIVER_INIT(blitz99);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_seattle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -519,10 +520,9 @@ static void update_widget_irq(running_machine &machine);
*
*************************************/
-static SCREEN_UPDATE_RGB32( seattle )
+UINT32 seattle_state::screen_update_seattle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- seattle_state *state = screen.machine().driver_data<seattle_state>();
- return voodoo_update(state->m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -2559,7 +2559,7 @@ static MACHINE_CONFIG_START( seattle_common, seattle_state )
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(seattle)
+ MCFG_SCREEN_UPDATE_DRIVER(seattle_state, screen_update_seattle)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index cefaa669259..c1223e90557 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -1273,17 +1273,16 @@ VIDEO_START_MEMBER(segac2_state,segac2_new)
// C2 doesn't use the internal VDP CRAM, instead it uses the digital output of the chip
// and applies it's own external colour circuity
-static SCREEN_UPDATE_RGB32(segac2_new)
+UINT32 segac2_state::screen_update_segac2_new(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *paldata = screen.machine().pens;
- segac2_state *state = screen.machine().driver_data<segac2_state>();
- if (!state->m_segac2_enable_display)
+ if (!m_segac2_enable_display)
{
bitmap.fill(get_black_pen(screen.machine()), cliprect);
return 0;
}
- sega_genesis_vdp_device *vdp = state->m_vdp;
+ sega_genesis_vdp_device *vdp = m_vdp;
/* Copy our screen buffer here */
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -1394,7 +1393,7 @@ static MACHINE_CONFIG_START( segac, segac2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(segac2_new)
+ MCFG_SCREEN_UPDATE_DRIVER(segac2_state, screen_update_segac2_new)
MCFG_SCREEN_VBLANK_STATIC( megadriv )
MCFG_PALETTE_LENGTH(2048*3)
diff --git a/src/mame/drivers/segae.c b/src/mame/drivers/segae.c
index 96d0a0792ec..cf9988a5c10 100644
--- a/src/mame/drivers/segae.c
+++ b/src/mame/drivers/segae.c
@@ -347,6 +347,7 @@ public:
int m_last2;
int m_diff1;
int m_diff2;
+ UINT32 screen_update_systeme(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
class fantzn2_state : public systeme_state
@@ -1074,12 +1075,11 @@ static const sega315_5124_interface _315_5124_2_intf =
};
-static SCREEN_UPDATE_RGB32( systeme )
+UINT32 systeme_state::screen_update_systeme(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- systeme_state *state = screen.machine().driver_data<systeme_state>();
- bitmap_rgb32 &vdp1_bitmap = state->m_vdp1->get_bitmap();
- bitmap_rgb32 &vdp2_bitmap = state->m_vdp2->get_bitmap();
- bitmap_ind8 &vdp2_y1 = state->m_vdp2->get_y1_bitmap();
+ bitmap_rgb32 &vdp1_bitmap = m_vdp1->get_bitmap();
+ bitmap_rgb32 &vdp2_bitmap = m_vdp2->get_bitmap();
+ bitmap_ind8 &vdp2_y1 = m_vdp2->get_y1_bitmap();
for( int y = cliprect.min_y; y <= cliprect.max_y; y++ )
{
@@ -1118,7 +1118,7 @@ static MACHINE_CONFIG_START( systeme, systeme_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \
SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \
SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT + 192)
- MCFG_SCREEN_UPDATE_STATIC( systeme ) /* Combines and copies a bitmap */
+ MCFG_SCREEN_UPDATE_DRIVER(systeme_state, screen_update_systeme)
MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
MCFG_PALETTE_INIT(sega315_5124)
diff --git a/src/mame/drivers/segag80r.c b/src/mame/drivers/segag80r.c
index ac833cbabfd..0272e47ebdc 100644
--- a/src/mame/drivers/segag80r.c
+++ b/src/mame/drivers/segag80r.c
@@ -852,7 +852,7 @@ static MACHINE_CONFIG_START( g80r_base, segag80r_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(segag80r)
+ MCFG_SCREEN_UPDATE_DRIVER(segag80r_state, screen_update_segag80r)
/* sound hardware */
diff --git a/src/mame/drivers/segag80v.c b/src/mame/drivers/segag80v.c
index 9e7f5570933..503e7a3e630 100644
--- a/src/mame/drivers/segag80v.c
+++ b/src/mame/drivers/segag80v.c
@@ -906,7 +906,7 @@ static MACHINE_CONFIG_START( g80v_base, segag80v_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(512, 1536, 640-32, 1408+32)
- MCFG_SCREEN_UPDATE_STATIC(segag80v)
+ MCFG_SCREEN_UPDATE_DRIVER(segag80v_state, screen_update_segag80v)
/* sound hardware */
diff --git a/src/mame/drivers/segald.c b/src/mame/drivers/segald.c
index fac1fb8c11e..a6552629fb7 100644
--- a/src/mame/drivers/segald.c
+++ b/src/mame/drivers/segald.c
@@ -58,6 +58,7 @@ public:
DECLARE_WRITE8_MEMBER(astron_io_bankswitch_w);
DECLARE_DRIVER_INIT(astron);
virtual void machine_start();
+ UINT32 screen_update_astron(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
/* VIDEO GOODS */
@@ -106,7 +107,7 @@ static void astron_draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap,
}
-static SCREEN_UPDATE_RGB32( astron )
+UINT32 segald_state::screen_update_astron(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
@@ -376,7 +377,7 @@ static MACHINE_CONFIG_START( astron, segald_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, astron)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, segald_state, screen_update_astron)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/segas24.c b/src/mame/drivers/segas24.c
index aaaa02b4933..d46954b2c25 100644
--- a/src/mame/drivers/segas24.c
+++ b/src/mame/drivers/segas24.c
@@ -1967,7 +1967,7 @@ static MACHINE_CONFIG_START( system24, segas24_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
- MCFG_SCREEN_UPDATE_STATIC(system24)
+ MCFG_SCREEN_UPDATE_DRIVER(segas24_state, screen_update_system24)
MCFG_PALETTE_LENGTH(8192*2)
diff --git a/src/mame/drivers/segas32.c b/src/mame/drivers/segas32.c
index f38c4e341e3..9f24c46ed67 100644
--- a/src/mame/drivers/segas32.c
+++ b/src/mame/drivers/segas32.c
@@ -2214,7 +2214,7 @@ static MACHINE_CONFIG_START( system32, segas32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(52*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(system32)
+ MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_system32)
MCFG_VIDEO_START_OVERRIDE(segas32_state,system32)
@@ -2274,13 +2274,13 @@ static MACHINE_CONFIG_START( multi32, segas32_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(52*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(multi32_left)
+ MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_multi32_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(52*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(multi32_right)
+ MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_multi32_right)
MCFG_VIDEO_START_OVERRIDE(segas32_state,multi32)
diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c
index 97b8d827a2f..6f62e18ab19 100644
--- a/src/mame/drivers/seibuspi.c
+++ b/src/mame/drivers/seibuspi.c
@@ -1870,7 +1870,7 @@ static MACHINE_CONFIG_START( spi, seibuspi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(spi)
+ MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
MCFG_GFXDECODE(spi)
MCFG_PALETTE_LENGTH(6144)
@@ -2210,7 +2210,7 @@ static MACHINE_CONFIG_START( seibu386, seibuspi_state )
MCFG_PALETTE_LENGTH(6144)
MCFG_VIDEO_START_OVERRIDE(seibuspi_state,spi)
- MCFG_SCREEN_UPDATE_STATIC(spi)
+ MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2265,7 +2265,7 @@ static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
MCFG_PALETTE_LENGTH(8192)
MCFG_VIDEO_START_OVERRIDE(seibuspi_state,sys386f2)
- MCFG_SCREEN_UPDATE_STATIC(sys386f2)
+ MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f2)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/seicross.c b/src/mame/drivers/seicross.c
index 34da218086b..fcd7f8942ad 100644
--- a/src/mame/drivers/seicross.c
+++ b/src/mame/drivers/seicross.c
@@ -419,7 +419,7 @@ static MACHINE_CONFIG_START( nvram, seicross_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seicross)
+ MCFG_SCREEN_UPDATE_DRIVER(seicross_state, screen_update_seicross)
MCFG_GFXDECODE(seicross)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c
index b8094121fd7..006a7322acd 100644
--- a/src/mame/drivers/senjyo.c
+++ b/src/mame/drivers/senjyo.c
@@ -589,7 +589,7 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(senjyo)
+ MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update_senjyo)
MCFG_GFXDECODE(senjyo)
MCFG_PALETTE_LENGTH(512+2) /* 512 real palette + 2 for the radar */
diff --git a/src/mame/drivers/seta.c b/src/mame/drivers/seta.c
index 2bb5985ff8e..e1ebcc5e83a 100644
--- a/src/mame/drivers/seta.c
+++ b/src/mame/drivers/seta.c
@@ -1595,12 +1595,11 @@ READ8_MEMBER(seta_state::dsw2_r)
Sprites Buffering
*/
-static SCREEN_VBLANK( seta_buffer_sprites )
+void seta_state::screen_eof_seta_buffer_sprites(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- //seta_state *state = machine.driver_data<seta_state>();
screen.machine().device<seta001_device>("spritegen")->setac_eof();
}
}
@@ -7499,7 +7498,7 @@ static MACHINE_CONFIG_START( tndrcade, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7549,7 +7548,7 @@ static MACHINE_CONFIG_START( twineagl, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7591,7 +7590,7 @@ static MACHINE_CONFIG_START( downtown, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7650,7 +7649,7 @@ static MACHINE_CONFIG_START( usclssic, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 33*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(usclssic)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_usclssic)
MCFG_GFXDECODE(usclssic)
MCFG_PALETTE_LENGTH(16*32 + 64*32*2) /* sprites, layer */
@@ -7699,7 +7698,7 @@ static MACHINE_CONFIG_START( calibr50, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7739,7 +7738,7 @@ static MACHINE_CONFIG_START( metafox, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7775,7 +7774,7 @@ static MACHINE_CONFIG_START( atehate, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7817,8 +7816,8 @@ static MACHINE_CONFIG_START( blandia, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE(blandia)
MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
@@ -7850,8 +7849,8 @@ static MACHINE_CONFIG_START( blandiap, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE(blandia)
MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
@@ -7888,7 +7887,7 @@ static MACHINE_CONFIG_START( blockcar, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7924,7 +7923,7 @@ static MACHINE_CONFIG_START( daioh, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -7965,8 +7964,8 @@ static MACHINE_CONFIG_START( drgnunit, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -8000,8 +7999,8 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE(qzkklgy2)
MCFG_PALETTE_LENGTH(512)
@@ -8051,8 +8050,8 @@ static MACHINE_CONFIG_START( setaroul, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(setaroul)
- MCFG_SCREEN_VBLANK_STATIC(setaroul) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_setaroul)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_setaroul)
MCFG_GFXDECODE(setaroul)
MCFG_PALETTE_LENGTH(512)
@@ -8089,7 +8088,7 @@ static MACHINE_CONFIG_START( eightfrc, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -8130,7 +8129,7 @@ static MACHINE_CONFIG_START( extdwnhl, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(zingzip)
MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
@@ -8191,7 +8190,7 @@ static MACHINE_CONFIG_START( gundhara, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8232,7 +8231,7 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8264,7 +8263,7 @@ static MACHINE_CONFIG_START( jjsquawb, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8305,7 +8304,7 @@ static MACHINE_CONFIG_START( kamenrid, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8342,7 +8341,7 @@ static MACHINE_CONFIG_START( orbs, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(orbs)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8380,7 +8379,7 @@ static MACHINE_CONFIG_START( keroppi, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(orbs)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8416,7 +8415,7 @@ static MACHINE_CONFIG_START( krzybowl, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8457,7 +8456,7 @@ static MACHINE_CONFIG_START( madshark, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8499,7 +8498,7 @@ static MACHINE_CONFIG_START( magspeed, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8545,8 +8544,8 @@ static MACHINE_CONFIG_START( msgundam, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* msgundam uses sprite buffering */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
+ MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8583,7 +8582,7 @@ static MACHINE_CONFIG_START( oisipuzl, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8620,7 +8619,7 @@ static MACHINE_CONFIG_START( triplfun, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8655,7 +8654,7 @@ static MACHINE_CONFIG_START( kiwame, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8694,7 +8693,7 @@ static MACHINE_CONFIG_START( rezon, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -8733,7 +8732,7 @@ static MACHINE_CONFIG_START( thunderl, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8804,7 +8803,7 @@ static MACHINE_CONFIG_START( wiggie, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(wiggie)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8838,7 +8837,7 @@ static MACHINE_CONFIG_START( wits, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8874,7 +8873,7 @@ static MACHINE_CONFIG_START( umanclub, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512)
@@ -8914,7 +8913,7 @@ static MACHINE_CONFIG_START( utoukond, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8963,7 +8962,7 @@ static MACHINE_CONFIG_START( wrofaero, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -9006,7 +9005,7 @@ static MACHINE_CONFIG_START( zingzip, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(zingzip)
MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
@@ -9059,7 +9058,7 @@ static MACHINE_CONFIG_START( pairlove, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(2048) /* sprites only */
@@ -9107,7 +9106,7 @@ static MACHINE_CONFIG_START( crazyfgt, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE(crazyfgt)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer1, layer2 */
@@ -9204,7 +9203,7 @@ static MACHINE_CONFIG_START( inttoote, seta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(inttoote)
+ MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_inttoote)
MCFG_GFXDECODE(inttoote)
MCFG_PALETTE_LENGTH(512 * 1)
diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c
index 13a4b397f34..af4a6b1e2ce 100644
--- a/src/mame/drivers/seta2.c
+++ b/src/mame/drivers/seta2.c
@@ -2036,8 +2036,8 @@ static MACHINE_CONFIG_START( seta2, seta2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_VBLANK_STATIC(seta2)
+ MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update_seta2)
+ MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE(seta2)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2231,8 +2231,8 @@ static MACHINE_CONFIG_START( funcube, seta2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x0+1, 0x140-1+1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_VBLANK_STATIC(seta2)
+ MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update_seta2)
+ MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE(funcube)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2282,8 +2282,8 @@ static MACHINE_CONFIG_START( namcostr, seta2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_VBLANK_STATIC(seta2)
+ MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update_seta2)
+ MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE(funcube)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
diff --git a/src/mame/drivers/sf.c b/src/mame/drivers/sf.c
index f32f1f40fe3..f9cde4c9b01 100644
--- a/src/mame/drivers/sf.c
+++ b/src/mame/drivers/sf.c
@@ -856,7 +856,7 @@ static MACHINE_CONFIG_START( sf, sf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(sf)
+ MCFG_SCREEN_UPDATE_DRIVER(sf_state, screen_update_sf)
MCFG_GFXDECODE(sf)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/sfbonus.c b/src/mame/drivers/sfbonus.c
index dce17be86a0..0be77ea157d 100644
--- a/src/mame/drivers/sfbonus.c
+++ b/src/mame/drivers/sfbonus.c
@@ -453,6 +453,7 @@ public:
TILE_GET_INFO_MEMBER(get_sfbonus_reel4_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_sfbonus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -1059,13 +1060,12 @@ static void sfbonus_draw_reel_layer(screen_device &screen, bitmap_ind16 &bitmap,
}
-static SCREEN_UPDATE_IND16(sfbonus)
+UINT32 sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- sfbonus_state *state = screen.machine().driver_data<sfbonus_state>();
- int globalyscroll = (state->m_vregs[2] | state->m_vregs[3]<<8);
- int globalxscroll = (state->m_vregs[0] | state->m_vregs[1]<<8);
- UINT8* front_rowscroll = &state->m_videoram[0x200];
+ int globalyscroll = (m_vregs[2] | m_vregs[3]<<8);
+ int globalxscroll = (m_vregs[0] | m_vregs[1]<<8);
+ UINT8* front_rowscroll = &m_videoram[0x200];
ioport_constructor ipt;
int i;
@@ -1074,10 +1074,10 @@ static SCREEN_UPDATE_IND16(sfbonus)
globalxscroll += 8;
bitmap.fill(screen.machine().pens[0], cliprect);
- state->m_temp_reel_bitmap->fill(screen.machine().pens[0], cliprect);
+ m_temp_reel_bitmap->fill(screen.machine().pens[0], cliprect);
/* render reels to bitmap */
- sfbonus_draw_reel_layer(screen,*state->m_temp_reel_bitmap,cliprect,0);
+ sfbonus_draw_reel_layer(screen,*m_temp_reel_bitmap,cliprect,0);
{
int y,x;
@@ -1086,7 +1086,7 @@ static SCREEN_UPDATE_IND16(sfbonus)
{
for (x=0;x<512;x++)
{
- UINT16* src = &state->m_temp_reel_bitmap->pix16(y, x);
+ UINT16* src = &m_temp_reel_bitmap->pix16(y, x);
UINT16* dst = &bitmap.pix16(y, x);
if ((src[0]&0x100)==0x000)
@@ -1096,14 +1096,14 @@ static SCREEN_UPDATE_IND16(sfbonus)
}
/* Normal Tilemap */
- state->m_tilemap->set_scrolly(0, globalyscroll );
+ m_tilemap->set_scrolly(0, globalyscroll );
for (i=0;i<64;i++)
{
int scroll;
scroll = front_rowscroll[(i*2)+0x000] | (front_rowscroll[(i*2)+0x001]<<8);
- state->m_tilemap->set_scrollx(i, scroll+globalxscroll );
+ m_tilemap->set_scrollx(i, scroll+globalxscroll );
}
- state->m_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tilemap->draw(bitmap, cliprect, 0,0);
{
int y,x;
@@ -1112,7 +1112,7 @@ static SCREEN_UPDATE_IND16(sfbonus)
{
for (x=0;x<512;x++)
{
- UINT16* src = &state->m_temp_reel_bitmap->pix16(y, x);
+ UINT16* src = &m_temp_reel_bitmap->pix16(y, x);
UINT16* dst = &bitmap.pix16(y, x);
if ((src[0]&0x100)==0x100)
@@ -1122,52 +1122,52 @@ static SCREEN_UPDATE_IND16(sfbonus)
}
#if 0
popmessage("%02x %02x %02x %02x %02x %02x %02x %02x -- %02x -- %02x %02x -- %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
- state->m_3800_regs[0],
- state->m_3800_regs[1],
- state->m_3800_regs[2],
- state->m_3800_regs[3],
- state->m_3800_regs[4],
- state->m_3800_regs[5],
- state->m_3800_regs[6],
- state->m_3800_regs[7],
- state->m_3000_regs[0],
- state->m_2801_regs[0],
- state->m_2c01_regs[0],
- state->m_vregs[8],
- state->m_vregs[0],
- state->m_vregs[10],
- state->m_vregs[11],
- state->m_vregs[12],
- state->m_vregs[13],
- state->m_vregs[14],
- state->m_vregs[15],
- state->m_vregs[16],
- state->m_vregs[17],
- state->m_vregs[18],
- state->m_vregs[19],
- state->m_vregs[20],
- state->m_vregs[21],
- state->m_vregs[22],
- state->m_vregs[23],
- state->m_vregs[24],
- state->m_vregs[25],
- state->m_vregs[26],
- state->m_vregs[27],
- state->m_vregs[28],
- state->m_vregs[29],
- state->m_vregs[30],
- state->m_vregs[31]
+ m_3800_regs[0],
+ m_3800_regs[1],
+ m_3800_regs[2],
+ m_3800_regs[3],
+ m_3800_regs[4],
+ m_3800_regs[5],
+ m_3800_regs[6],
+ m_3800_regs[7],
+ m_3000_regs[0],
+ m_2801_regs[0],
+ m_2c01_regs[0],
+ m_vregs[8],
+ m_vregs[0],
+ m_vregs[10],
+ m_vregs[11],
+ m_vregs[12],
+ m_vregs[13],
+ m_vregs[14],
+ m_vregs[15],
+ m_vregs[16],
+ m_vregs[17],
+ m_vregs[18],
+ m_vregs[19],
+ m_vregs[20],
+ m_vregs[21],
+ m_vregs[22],
+ m_vregs[23],
+ m_vregs[24],
+ m_vregs[25],
+ m_vregs[26],
+ m_vregs[27],
+ m_vregs[28],
+ m_vregs[29],
+ m_vregs[30],
+ m_vregs[31]
);
popmessage("-- %02x %02x %02x %02x %02x %02x %02x %02x",
- state->m_1800_regs[0],
- state->m_1800_regs[1],
- state->m_1800_regs[2],
- state->m_1800_regs[3],
- state->m_1800_regs[4],
- state->m_1800_regs[5],
- state->m_1800_regs[6],
- state->m_1800_regs[7]);
+ m_1800_regs[0],
+ m_1800_regs[1],
+ m_1800_regs[2],
+ m_1800_regs[3],
+ m_1800_regs[4],
+ m_1800_regs[5],
+ m_1800_regs[6],
+ m_1800_regs[7]);
#endif
ipt = screen.machine().system().ipt;
@@ -1175,22 +1175,22 @@ static SCREEN_UPDATE_IND16(sfbonus)
|| (ipt == INPUT_PORTS_NAME(amcoe2_poker)))
{
// based on pirpok2
- output_set_lamp_value(0, (state->m_1800_regs[6] & 0x1) >> 0);
- output_set_lamp_value(1, (state->m_1800_regs[6] & 0x4) >> 2);
- output_set_lamp_value(2, (state->m_1800_regs[5] & 0x4) >> 2);
- output_set_lamp_value(3, (state->m_1800_regs[5] & 0x1) >> 0);
- output_set_lamp_value(4, (state->m_1800_regs[4] & 0x4) >> 2);
- output_set_lamp_value(5, (state->m_1800_regs[4] & 0x1) >> 0);
+ output_set_lamp_value(0, (m_1800_regs[6] & 0x1) >> 0);
+ output_set_lamp_value(1, (m_1800_regs[6] & 0x4) >> 2);
+ output_set_lamp_value(2, (m_1800_regs[5] & 0x4) >> 2);
+ output_set_lamp_value(3, (m_1800_regs[5] & 0x1) >> 0);
+ output_set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
+ output_set_lamp_value(5, (m_1800_regs[4] & 0x1) >> 0);
}
else if ((ipt == INPUT_PORTS_NAME(amcoe1_reels3)) || (ipt == INPUT_PORTS_NAME(amcoe1_reels4))
|| (ipt == INPUT_PORTS_NAME(amcoe1_poker)))
{
- output_set_lamp_value(0, (state->m_1800_regs[0] & 0x2) >> 1);
- output_set_lamp_value(1, (state->m_1800_regs[4] & 0x2) >> 1);
- output_set_lamp_value(2, (state->m_1800_regs[3] & 0x2) >> 1);
- output_set_lamp_value(3, (state->m_1800_regs[6] & 0x4) >> 2);
- output_set_lamp_value(4, (state->m_1800_regs[4] & 0x4) >> 2);
- output_set_lamp_value(5, (state->m_1800_regs[3] & 0x4) >> 2);
+ output_set_lamp_value(0, (m_1800_regs[0] & 0x2) >> 1);
+ output_set_lamp_value(1, (m_1800_regs[4] & 0x2) >> 1);
+ output_set_lamp_value(2, (m_1800_regs[3] & 0x2) >> 1);
+ output_set_lamp_value(3, (m_1800_regs[6] & 0x4) >> 2);
+ output_set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
+ output_set_lamp_value(5, (m_1800_regs[3] & 0x4) >> 2);
}
return 0;
@@ -1372,7 +1372,7 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 288-1)
- MCFG_SCREEN_UPDATE_STATIC(sfbonus)
+ MCFG_SCREEN_UPDATE_DRIVER(sfbonus_state, screen_update_sfbonus)
MCFG_PALETTE_LENGTH(0x100*2) // *2 for priority workaraound / custom drawing
diff --git a/src/mame/drivers/shadfrce.c b/src/mame/drivers/shadfrce.c
index fe304919b97..8249c20ed89 100644
--- a/src/mame/drivers/shadfrce.c
+++ b/src/mame/drivers/shadfrce.c
@@ -565,8 +565,8 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 432, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE_STATIC(shadfrce)
- MCFG_SCREEN_VBLANK_STATIC(shadfrce)
+ MCFG_SCREEN_UPDATE_DRIVER(shadfrce_state, screen_update_shadfrce)
+ MCFG_SCREEN_VBLANK_DRIVER(shadfrce_state, screen_eof_shadfrce)
MCFG_GFXDECODE(shadfrce)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/shangha3.c b/src/mame/drivers/shangha3.c
index a28e7d0492b..fd7e63199be 100644
--- a/src/mame/drivers/shangha3.c
+++ b/src/mame/drivers/shangha3.c
@@ -481,7 +481,7 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE_STATIC(shangha3)
+ MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
@@ -518,7 +518,7 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE_STATIC(shangha3)
+ MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
@@ -556,7 +556,7 @@ static MACHINE_CONFIG_START( blocken, shangha3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE_STATIC(shangha3)
+ MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/shanghai.c b/src/mame/drivers/shanghai.c
index aaf1b64e7fe..5d048fc6810 100644
--- a/src/mame/drivers/shanghai.c
+++ b/src/mame/drivers/shanghai.c
@@ -38,6 +38,7 @@ public:
DECLARE_READ16_MEMBER(kothello_hd63484_status_r);
virtual void video_start();
DECLARE_PALETTE_INIT(shanghai);
+ UINT32 screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -75,7 +76,7 @@ void shanghai_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( shanghai )
+UINT32 shanghai_state::screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *hd63484 = screen.machine().device("hd63484");
int x, y, b, src;
@@ -452,7 +453,7 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state )
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
- MCFG_SCREEN_UPDATE_STATIC(shanghai)
+ MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
MCFG_PALETTE_LENGTH(256)
@@ -485,7 +486,7 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state )
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
- MCFG_SCREEN_UPDATE_STATIC(shanghai)
+ MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
MCFG_PALETTE_LENGTH(256)
@@ -522,7 +523,7 @@ static MACHINE_CONFIG_START( kothello, shanghai_state )
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(8, 384-1, 0, 250-1) // Base Screen is 376 pixel
- MCFG_SCREEN_UPDATE_STATIC(shanghai)
+ MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shangkid.c b/src/mame/drivers/shangkid.c
index e33ce38559c..7e851a421c5 100644
--- a/src/mame/drivers/shangkid.c
+++ b/src/mame/drivers/shangkid.c
@@ -384,7 +384,7 @@ static MACHINE_CONFIG_START( chinhero, shangkid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(16, 319-16, 0, 223)
- MCFG_SCREEN_UPDATE_STATIC(shangkid)
+ MCFG_SCREEN_UPDATE_DRIVER(shangkid_state, screen_update_shangkid)
MCFG_GFXDECODE(chinhero)
MCFG_PALETTE_LENGTH(256)
@@ -463,7 +463,7 @@ static MACHINE_CONFIG_START( dynamski, shangkid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256+32, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+32, 16, 255-16)
- MCFG_SCREEN_UPDATE_STATIC(dynamski)
+ MCFG_SCREEN_UPDATE_DRIVER(shangkid_state, screen_update_dynamski)
MCFG_GFXDECODE(dynamski)
MCFG_PALETTE_LENGTH(16*4+16*4)
diff --git a/src/mame/drivers/shaolins.c b/src/mame/drivers/shaolins.c
index 755213a7d33..b54fa3e3c6f 100644
--- a/src/mame/drivers/shaolins.c
+++ b/src/mame/drivers/shaolins.c
@@ -215,7 +215,7 @@ static MACHINE_CONFIG_START( shaolins, shaolins_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(shaolins)
+ MCFG_SCREEN_UPDATE_DRIVER(shaolins_state, screen_update_shaolins)
MCFG_GFXDECODE(shaolins)
MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
diff --git a/src/mame/drivers/shisen.c b/src/mame/drivers/shisen.c
index 0f30e42f8d7..ccd3c7fb519 100644
--- a/src/mame/drivers/shisen.c
+++ b/src/mame/drivers/shisen.c
@@ -228,7 +228,7 @@ static MACHINE_CONFIG_START( shisen, shisen_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sichuan2)
+ MCFG_SCREEN_UPDATE_DRIVER(shisen_state, screen_update_sichuan2)
MCFG_GFXDECODE(shisen)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shootout.c b/src/mame/drivers/shootout.c
index cb5678f517a..9bf934243ba 100644
--- a/src/mame/drivers/shootout.c
+++ b/src/mame/drivers/shootout.c
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( shootout, shootout_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(shootout)
+ MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootout)
MCFG_GFXDECODE(shootout)
MCFG_PALETTE_LENGTH(256)
@@ -303,7 +303,7 @@ static MACHINE_CONFIG_START( shootouj, shootout_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(shootouj)
+ MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootouj)
MCFG_GFXDECODE(shootout)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shougi.c b/src/mame/drivers/shougi.c
index 8750846ecaf..b80f0b62d50 100644
--- a/src/mame/drivers/shougi.c
+++ b/src/mame/drivers/shougi.c
@@ -111,6 +111,7 @@ public:
DECLARE_WRITE8_MEMBER(nmi_enable_w);
DECLARE_READ8_MEMBER(dummy_r);
virtual void palette_init();
+ UINT32 screen_update_shougi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -174,9 +175,8 @@ void shougi_state::palette_init()
-static SCREEN_UPDATE_IND16( shougi )
+UINT32 shougi_state::screen_update_shougi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- shougi_state *state = screen.machine().driver_data<shougi_state>();
int offs;
for (offs = 0;offs <0x4000; offs++)
@@ -188,8 +188,8 @@ static SCREEN_UPDATE_IND16( shougi )
//if (flipscreen[0]) sx = 31 - sx;
//if (flipscreen[1]) sy = 31 - sy;
- data1 = state->m_videoram[offs]; /* color */
- data2 = state->m_videoram[0x4000 + offs]; /* pixel data */
+ data1 = m_videoram[offs]; /* color */
+ data2 = m_videoram[0x4000 + offs]; /* pixel data */
for (x=0; x<4; x++) /*4 pixels per byte (2 bitplanes in 2 nibbles: 1st=bits 7-4, 2nd=bits 3-0)*/
{
@@ -425,7 +425,7 @@ static MACHINE_CONFIG_START( shougi, shougi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
- MCFG_SCREEN_UPDATE_STATIC(shougi)
+ MCFG_SCREEN_UPDATE_DRIVER(shougi_state, screen_update_shougi)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/shtzone.c b/src/mame/drivers/shtzone.c
index 5abce8b90eb..419e4279bc1 100644
--- a/src/mame/drivers/shtzone.c
+++ b/src/mame/drivers/shtzone.c
@@ -58,6 +58,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_shtzone(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
static ADDRESS_MAP_START( shtzone_map, AS_PROGRAM, 8, shtzone_state )
@@ -86,7 +87,7 @@ void shtzone_state::video_start()
}
-SCREEN_UPDATE_IND16( shtzone )
+UINT32 shtzone_state::screen_update_shtzone(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
@@ -108,7 +109,7 @@ static MACHINE_CONFIG_START( shtzone, shtzone_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(shtzone)
+ MCFG_SCREEN_UPDATE_DRIVER(shtzone_state, screen_update_shtzone)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/shuuz.c b/src/mame/drivers/shuuz.c
index 3dc37b10902..948c1def5ca 100644
--- a/src/mame/drivers/shuuz.c
+++ b/src/mame/drivers/shuuz.c
@@ -276,7 +276,7 @@ static MACHINE_CONFIG_START( shuuz, shuuz_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(shuuz)
+ MCFG_SCREEN_UPDATE_DRIVER(shuuz_state, screen_update_shuuz)
MCFG_VIDEO_START_OVERRIDE(shuuz_state,shuuz)
diff --git a/src/mame/drivers/sidearms.c b/src/mame/drivers/sidearms.c
index bda44df88bb..91735a088d1 100644
--- a/src/mame/drivers/sidearms.c
+++ b/src/mame/drivers/sidearms.c
@@ -670,7 +670,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(sidearms)
+ MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update_sidearms)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(sidearms)
@@ -714,7 +714,7 @@ static MACHINE_CONFIG_START( turtship, sidearms_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
- MCFG_SCREEN_UPDATE_STATIC(sidearms)
+ MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update_sidearms)
MCFG_GFXDECODE(turtship)
MCFG_PALETTE_LENGTH(1024)
@@ -759,7 +759,7 @@ static MACHINE_CONFIG_START( whizz, sidearms_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(sidearms)
+ MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update_sidearms)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(turtship)
diff --git a/src/mame/drivers/sidepckt.c b/src/mame/drivers/sidepckt.c
index 8b78ab63a11..df0214e1cdb 100644
--- a/src/mame/drivers/sidepckt.c
+++ b/src/mame/drivers/sidepckt.c
@@ -402,7 +402,7 @@ static MACHINE_CONFIG_START( sidepckt, sidepckt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* VERIFY: May be 55 or 56 */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sidepckt)
+ MCFG_SCREEN_UPDATE_DRIVER(sidepckt_state, screen_update_sidepckt)
MCFG_GFXDECODE(sidepckt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c
index b58f76176aa..105c977738c 100644
--- a/src/mame/drivers/sigmab52.c
+++ b/src/mame/drivers/sigmab52.c
@@ -149,6 +149,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_jwildb52(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -165,7 +166,7 @@ void sigmab52_state::video_start()
}
-static SCREEN_UPDATE_IND16( jwildb52 )
+UINT32 sigmab52_state::screen_update_jwildb52(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *hd63484 = screen.machine().device("hd63484");
@@ -605,7 +606,7 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 384-1)
- MCFG_SCREEN_UPDATE_STATIC(jwildb52)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab52_state, screen_update_jwildb52)
MCFG_HD63484_ADD("hd63484", jwildb52_hd63484_intf)
diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c
index 45a1e0be29b..e8e5b38d048 100644
--- a/src/mame/drivers/sigmab98.c
+++ b/src/mame/drivers/sigmab98.c
@@ -175,6 +175,8 @@ public:
DECLARE_DRIVER_INIT(ucytokyu);
DECLARE_DRIVER_INIT(haekaka);
DECLARE_MACHINE_RESET(sammymdl);
+ UINT32 screen_update_sigmab98(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_sammymdl(screen_device &screen, bool state);
};
@@ -302,7 +304,7 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
}
-static SCREEN_UPDATE_IND16(sigmab98)
+UINT32 sigmab98_state::screen_update_sigmab98(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int layers_ctrl = -1;
@@ -680,13 +682,12 @@ WRITE8_MEMBER(sigmab98_state::vblank_w)
m_vblank = (m_vblank & ~0x03) | (data & 0x03);
}
-static SCREEN_VBLANK( sammymdl )
+void sigmab98_state::screen_eof_sammymdl(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- sigmab98_state *state = screen.machine().driver_data<sigmab98_state>();
- state->m_vblank &= ~0x01;
+ m_vblank &= ~0x01;
}
}
@@ -1710,7 +1711,7 @@ static MACHINE_CONFIG_START( gegege, sigmab98_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(sigmab98)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
@@ -1764,8 +1765,8 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(sigmab98)
- MCFG_SCREEN_VBLANK_STATIC(sammymdl)
+ MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
+ MCFG_SCREEN_VBLANK_DRIVER(sigmab98_state, screen_eof_sammymdl)
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/silkroad.c b/src/mame/drivers/silkroad.c
index 8cfb8322d21..e482c5a7448 100644
--- a/src/mame/drivers/silkroad.c
+++ b/src/mame/drivers/silkroad.c
@@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( silkroad, silkroad_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(6*8+2, 64*8-1-(10*8)-2, 2*8, 32*8-1-(2*8))
- MCFG_SCREEN_UPDATE_STATIC(silkroad)
+ MCFG_SCREEN_UPDATE_DRIVER(silkroad_state, screen_update_silkroad)
MCFG_GFXDECODE(silkroad)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/silvmil.c b/src/mame/drivers/silvmil.c
index f6750e63438..a852ac766d4 100644
--- a/src/mame/drivers/silvmil.c
+++ b/src/mame/drivers/silvmil.c
@@ -111,6 +111,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_silvmil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -148,13 +149,12 @@ void silvmil_state::video_start()
m_fg_layer->set_transparent_pen(0);
}
-SCREEN_UPDATE_IND16( silvmil )
+UINT32 silvmil_state::screen_update_silvmil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- silvmil_state *state = screen.machine().driver_data<silvmil_state>();
- state->m_bg_layer->draw(bitmap, cliprect, 0, 0);
- state->m_fg_layer->draw(bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
+ m_bg_layer->draw(bitmap, cliprect, 0, 0);
+ m_fg_layer->draw(bitmap, cliprect, 0, 0);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400);
return 0;
}
@@ -330,7 +330,7 @@ static MACHINE_CONFIG_START( silvmil, silvmil_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(silvmil)
+ MCFG_SCREEN_UPDATE_DRIVER(silvmil_state, screen_update_silvmil)
MCFG_PALETTE_LENGTH(0x300)
MCFG_GFXDECODE(silvmil)
diff --git a/src/mame/drivers/simpl156.c b/src/mame/drivers/simpl156.c
index 6f8d5f671d7..87c51f9a03a 100644
--- a/src/mame/drivers/simpl156.c
+++ b/src/mame/drivers/simpl156.c
@@ -435,7 +435,7 @@ static MACHINE_CONFIG_START( chainrec, simpl156_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(800))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(simpl156)
+ MCFG_SCREEN_UPDATE_DRIVER(simpl156_state, screen_update_simpl156)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(simpl156)
diff --git a/src/mame/drivers/simpsons.c b/src/mame/drivers/simpsons.c
index 6117be53195..2e09a7bafe7 100644
--- a/src/mame/drivers/simpsons.c
+++ b/src/mame/drivers/simpsons.c
@@ -326,7 +326,7 @@ static MACHINE_CONFIG_START( simpsons, simpsons_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(simpsons)
+ MCFG_SCREEN_UPDATE_DRIVER(simpsons_state, screen_update_simpsons)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/skimaxx.c b/src/mame/drivers/skimaxx.c
index 8aa78bcf288..7469ff52019 100644
--- a/src/mame/drivers/skimaxx.c
+++ b/src/mame/drivers/skimaxx.c
@@ -73,6 +73,7 @@ public:
DECLARE_READ32_MEMBER(skimaxx_analog_r);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_skimaxx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -149,9 +150,9 @@ void skimaxx_state::video_start()
membank("bank1")->configure_entry(1, m_bg_buffer_front);
}
-static SCREEN_UPDATE_IND16( skimaxx )
+UINT32 skimaxx_state::screen_update_skimaxx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
-// popmessage("%02x %02x", state->ioport("X")->read(), state->ioport("Y")->read() );
+// popmessage("%02x %02x", ioport("X")->read(), ioport("Y")->read() );
SCREEN_UPDATE16_CALL(tms340x0_ind16);
@@ -542,7 +543,7 @@ static MACHINE_CONFIG_START( skimaxx, skimaxx_state )
MCFG_SCREEN_SIZE(0x400, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x280-1, 0, 0xf0-1)
// MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
- MCFG_SCREEN_UPDATE_STATIC(skimaxx)
+ MCFG_SCREEN_UPDATE_DRIVER(skimaxx_state, screen_update_skimaxx)
// MCFG_GFXDECODE( skimaxx )
diff --git a/src/mame/drivers/skullxbo.c b/src/mame/drivers/skullxbo.c
index 2aaaed51ac9..5b0d710ebdd 100644
--- a/src/mame/drivers/skullxbo.c
+++ b/src/mame/drivers/skullxbo.c
@@ -272,7 +272,7 @@ static MACHINE_CONFIG_START( skullxbo, skullxbo_state )
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz, 456*2, 0, 336*2, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(skullxbo)
+ MCFG_SCREEN_UPDATE_DRIVER(skullxbo_state, screen_update_skullxbo)
MCFG_VIDEO_START_OVERRIDE(skullxbo_state,skullxbo)
diff --git a/src/mame/drivers/skyarmy.c b/src/mame/drivers/skyarmy.c
index 39092d25f0c..77a46d943f4 100644
--- a/src/mame/drivers/skyarmy.c
+++ b/src/mame/drivers/skyarmy.c
@@ -53,6 +53,7 @@ public:
TILE_GET_INFO_MEMBER(get_skyarmy_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w)
@@ -124,17 +125,16 @@ void skyarmy_state::video_start()
}
-static SCREEN_UPDATE_IND16( skyarmy )
+UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- skyarmy_state *state = screen.machine().driver_data<skyarmy_state>();
- UINT8 *spriteram = state->m_spriteram;
+ UINT8 *spriteram = m_spriteram;
int sx, sy, flipx, flipy, offs,pal;
int i;
for(i=0;i<0x20;i++)
- state->m_tilemap->set_scrolly(i,state->m_scrollram[i]);
+ m_tilemap->set_scrolly(i,m_scrollram[i]);
- state->m_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tilemap->draw(bitmap, cliprect, 0,0);
for (offs = 0 ; offs < 0x40; offs+=4)
{
@@ -293,7 +293,7 @@ static MACHINE_CONFIG_START( skyarmy, skyarmy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8,32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(skyarmy)
+ MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy)
MCFG_GFXDECODE(skyarmy)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/skydiver.c b/src/mame/drivers/skydiver.c
index abb0068c184..cbe039a4e26 100644
--- a/src/mame/drivers/skydiver.c
+++ b/src/mame/drivers/skydiver.c
@@ -388,7 +388,7 @@ static MACHINE_CONFIG_START( skydiver, skydiver_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(skydiver)
+ MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update_skydiver)
MCFG_GFXDECODE(skydiver)
MCFG_PALETTE_LENGTH(sizeof(colortable_source) / sizeof(colortable_source[0]))
diff --git a/src/mame/drivers/skyfox.c b/src/mame/drivers/skyfox.c
index ba651450f51..17f8d4f8778 100644
--- a/src/mame/drivers/skyfox.c
+++ b/src/mame/drivers/skyfox.c
@@ -252,7 +252,7 @@ static MACHINE_CONFIG_START( skyfox, skyfox_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0+0x60, 320-1+0x60, 0+16, 256-1-16) // from $30*2 to $CC*2+8
- MCFG_SCREEN_UPDATE_STATIC(skyfox)
+ MCFG_SCREEN_UPDATE_DRIVER(skyfox_state, screen_update_skyfox)
MCFG_GFXDECODE(skyfox)
MCFG_PALETTE_LENGTH(256+256) /* 256 static colors (+256 for the background??) */
diff --git a/src/mame/drivers/skykid.c b/src/mame/drivers/skykid.c
index 4d9488ae873..ca0c47a5df8 100644
--- a/src/mame/drivers/skykid.c
+++ b/src/mame/drivers/skykid.c
@@ -461,7 +461,7 @@ static MACHINE_CONFIG_START( skykid, skykid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(skykid)
+ MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid)
MCFG_GFXDECODE(skykid)
MCFG_PALETTE_LENGTH(64*4+128*4+64*8)
diff --git a/src/mame/drivers/skylncr.c b/src/mame/drivers/skylncr.c
index 8acf1226370..8ef0a478c0c 100644
--- a/src/mame/drivers/skylncr.c
+++ b/src/mame/drivers/skylncr.c
@@ -108,6 +108,7 @@ public:
TILE_GET_INFO_MEMBER(get_reel_3_tile_info);
TILE_GET_INFO_MEMBER(get_reel_4_tile_info);
virtual void video_start();
+ UINT32 screen_update_skylncr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -182,13 +183,12 @@ void skylncr_state::video_start()
}
-static SCREEN_UPDATE_IND16( skylncr )
+UINT32 skylncr_state::screen_update_skylncr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- skylncr_state *state = screen.machine().driver_data<skylncr_state>();
int i;
bitmap.fill(0, cliprect);
- state->m_reel_1_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_reel_1_tilemap->draw(bitmap, cliprect, 0, 0);
// are these hardcoded, or registers?
const rectangle visible1(0*8, (20+48)*8-1, 4*8, (4+7)*8-1);
@@ -197,17 +197,17 @@ static SCREEN_UPDATE_IND16( skylncr )
for (i= 0;i < 64;i++)
{
- state->m_reel_2_tilemap->set_scrolly(i, state->m_reelscroll2[i]);
- state->m_reel_3_tilemap->set_scrolly(i, state->m_reelscroll3[i]);
- state->m_reel_4_tilemap->set_scrolly(i, state->m_reelscroll4[i]);
+ m_reel_2_tilemap->set_scrolly(i, m_reelscroll2[i]);
+ m_reel_3_tilemap->set_scrolly(i, m_reelscroll3[i]);
+ m_reel_4_tilemap->set_scrolly(i, m_reelscroll4[i]);
}
- state->m_reel_2_tilemap->draw(bitmap, visible1, 0, 0);
- state->m_reel_3_tilemap->draw(bitmap, visible2, 0, 0);
- state->m_reel_4_tilemap->draw(bitmap, visible3, 0, 0);
+ m_reel_2_tilemap->draw(bitmap, visible1, 0, 0);
+ m_reel_3_tilemap->draw(bitmap, visible2, 0, 0);
+ m_reel_4_tilemap->draw(bitmap, visible3, 0, 0);
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -726,7 +726,7 @@ static MACHINE_CONFIG_START( skylncr, skylncr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(skylncr)
+ MCFG_SCREEN_UPDATE_DRIVER(skylncr_state, screen_update_skylncr)
MCFG_GFXDECODE(skylncr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/skyraid.c b/src/mame/drivers/skyraid.c
index 8c87c23aeca..6abbd7de96a 100644
--- a/src/mame/drivers/skyraid.c
+++ b/src/mame/drivers/skyraid.c
@@ -229,7 +229,7 @@ static MACHINE_CONFIG_START( skyraid, skyraid_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750))
MCFG_SCREEN_SIZE(512, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(skyraid)
+ MCFG_SCREEN_UPDATE_DRIVER(skyraid_state, screen_update_skyraid)
MCFG_GFXDECODE(skyraid)
diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c
index d1765c5cf7b..93ac56a61fa 100644
--- a/src/mame/drivers/slapfght.c
+++ b/src/mame/drivers/slapfght.c
@@ -767,7 +767,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 34*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(perfrman)
+ MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_perfrman)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(perfrman)
@@ -813,7 +813,7 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slapfight)
+ MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_slapfight)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(slapfght)
@@ -861,7 +861,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slapfight)
+ MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_slapfight)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(slapfght)
@@ -910,7 +910,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slapfight)
+ MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_slapfight)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(slapfght)
diff --git a/src/mame/drivers/slapshot.c b/src/mame/drivers/slapshot.c
index 24c8931feb1..45c19ec7cf9 100644
--- a/src/mame/drivers/slapshot.c
+++ b/src/mame/drivers/slapshot.c
@@ -559,8 +559,8 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slapshot)
- MCFG_SCREEN_VBLANK_STATIC(taito_no_buffer)
+ MCFG_SCREEN_UPDATE_DRIVER(slapshot_state, screen_update_slapshot)
+ MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer)
MCFG_GFXDECODE(slapshot)
MCFG_PALETTE_LENGTH(8192)
@@ -605,8 +605,8 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(slapshot)
- MCFG_SCREEN_VBLANK_STATIC(taito_no_buffer)
+ MCFG_SCREEN_UPDATE_DRIVER(slapshot_state, screen_update_slapshot)
+ MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer)
MCFG_GFXDECODE(slapshot)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/sliver.c b/src/mame/drivers/sliver.c
index 3120246abb1..8228b3597c7 100644
--- a/src/mame/drivers/sliver.c
+++ b/src/mame/drivers/sliver.c
@@ -113,6 +113,7 @@ public:
DECLARE_WRITE16_MEMBER(sound_w);
DECLARE_WRITE8_MEMBER(oki_setbank);
virtual void video_start();
+ UINT32 screen_update_sliver(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
static void plot_pixel_rgb(sliver_state *state, int x, int y, UINT32 r, UINT32 g, UINT32 b)
@@ -373,12 +374,11 @@ void sliver_state::video_start()
machine().primary_screen->register_screen_bitmap(m_bitmap_fg);
}
-static SCREEN_UPDATE_RGB32(sliver)
+UINT32 sliver_state::screen_update_sliver(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- sliver_state *state = screen.machine().driver_data<sliver_state>();
- copybitmap (bitmap, state->m_bitmap_bg, 0, 0, 0, 0, cliprect);
- copybitmap_trans(bitmap, state->m_bitmap_fg, 0, 0, 0, 0, cliprect, 0);
+ copybitmap (bitmap, m_bitmap_bg, 0, 0, 0, 0, cliprect);
+ copybitmap_trans(bitmap, m_bitmap_fg, 0, 0, 0, 0, cliprect, 0);
return 0;
}
@@ -486,7 +486,7 @@ static MACHINE_CONFIG_START( sliver, sliver_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 384-1-16, 0*8, 240-1)
- MCFG_SCREEN_UPDATE_STATIC(sliver)
+ MCFG_SCREEN_UPDATE_DRIVER(sliver_state, screen_update_sliver)
MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
diff --git a/src/mame/drivers/sms.c b/src/mame/drivers/sms.c
index 20931533315..8a5b36ab573 100644
--- a/src/mame/drivers/sms.c
+++ b/src/mame/drivers/sms.c
@@ -245,6 +245,7 @@ public:
virtual void video_start();
virtual void palette_init();
DECLARE_MACHINE_START(sureshot);
+ UINT32 screen_update_sms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -480,10 +481,9 @@ void smsmfg_state::video_start()
state_save_register_global_bitmap(machine(), &m_bitmap);
}
-static SCREEN_UPDATE_IND16( sms )
+UINT32 smsmfg_state::screen_update_sms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- smsmfg_state *state = screen.machine().driver_data<smsmfg_state>();
- copybitmap(bitmap, state->m_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
return 0;
}
@@ -578,7 +578,7 @@ static MACHINE_CONFIG_START( sms, smsmfg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x1b0, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x1af, 0, 0xff)
- MCFG_SCREEN_UPDATE_STATIC(sms)
+ MCFG_SCREEN_UPDATE_DRIVER(smsmfg_state, screen_update_sms)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/snk.c b/src/mame/drivers/snk.c
index 02b9fc4f100..f33d7a5d16e 100644
--- a/src/mame/drivers/snk.c
+++ b/src/mame/drivers/snk.c
@@ -3645,7 +3645,7 @@ static MACHINE_CONFIG_START( marvins, snk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(marvins)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_marvins)
MCFG_GFXDECODE(marvins)
MCFG_PALETTE_LENGTH(0x400)
@@ -3714,7 +3714,7 @@ static MACHINE_CONFIG_START( jcross, snk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnk3)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
MCFG_GFXDECODE(tnk3)
MCFG_PALETTE_LENGTH(0x400)
@@ -3792,7 +3792,7 @@ static MACHINE_CONFIG_START( tnk3, snk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnk3)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
MCFG_GFXDECODE(tnk3)
MCFG_PALETTE_LENGTH(0x400)
@@ -3876,7 +3876,7 @@ static MACHINE_CONFIG_START( ikari, snk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(ikari)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_ikari)
MCFG_GFXDECODE(ikari)
MCFG_PALETTE_LENGTH(0x400)
@@ -3932,7 +3932,7 @@ static MACHINE_CONFIG_START( bermudat, snk_state )
// this visible area matches the psychos pcb
MCFG_SCREEN_SIZE(50*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(gwar)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_gwar)
MCFG_GFXDECODE(gwar)
MCFG_PALETTE_LENGTH(0x400)
@@ -4036,7 +4036,7 @@ static MACHINE_CONFIG_START( tdfever, snk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(50*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tdfever)
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tdfever)
MCFG_GFXDECODE(tdfever)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/snk6502.c b/src/mame/drivers/snk6502.c
index 14a050ca783..c9c3365d939 100644
--- a/src/mame/drivers/snk6502.c
+++ b/src/mame/drivers/snk6502.c
@@ -835,7 +835,7 @@ static MACHINE_CONFIG_START( sasuke, snk6502_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(snk6502)
+ MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update_snk6502)
MCFG_GFXDECODE(sasuke)
MCFG_PALETTE_LENGTH(32)
@@ -908,7 +908,7 @@ static MACHINE_CONFIG_START( vanguard, snk6502_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(snk6502)
+ MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update_snk6502)
MCFG_GFXDECODE(vanguard)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/snk68.c b/src/mame/drivers/snk68.c
index 0187a0580f4..71b7a8fb17a 100644
--- a/src/mame/drivers/snk68.c
+++ b/src/mame/drivers/snk68.c
@@ -605,7 +605,7 @@ static MACHINE_CONFIG_START( pow, snk68_state )
// give a theoretical refresh rate of 59.1856Hz while the measured
// rate on a SAR board is 59.16Hz.
MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 384, 0, 256, 264, 16, 240)
- MCFG_SCREEN_UPDATE_STATIC(pow)
+ MCFG_SCREEN_UPDATE_DRIVER(snk68_state, screen_update_pow)
MCFG_GFXDECODE(pow)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/snookr10.c b/src/mame/drivers/snookr10.c
index 762ba82a899..daf079f2038 100644
--- a/src/mame/drivers/snookr10.c
+++ b/src/mame/drivers/snookr10.c
@@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( snookr10, snookr10_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(96*4, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(snookr10)
+ MCFG_SCREEN_UPDATE_DRIVER(snookr10_state, screen_update_snookr10)
MCFG_GFXDECODE(snookr10)
diff --git a/src/mame/drivers/snowbros.c b/src/mame/drivers/snowbros.c
index c254e7a103c..6a741abb638 100644
--- a/src/mame/drivers/snowbros.c
+++ b/src/mame/drivers/snowbros.c
@@ -82,7 +82,7 @@ WRITE16_MEMBER(snowbros_state::snowbros_flipscreen_w)
}
-static SCREEN_UPDATE_IND16( snowbros )
+UINT32 snowbros_state::screen_update_snowbros(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *pandora = screen.machine().device("pandora");
@@ -93,10 +93,10 @@ static SCREEN_UPDATE_IND16( snowbros )
}
-static SCREEN_VBLANK( snowbros )
+void snowbros_state::screen_eof_snowbros(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
device_t *pandora = screen.machine().device("pandora");
pandora_eof(pandora);
@@ -1556,8 +1556,8 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(snowbros)
- MCFG_SCREEN_VBLANK_STATIC(snowbros)
+ MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_snowbros)
+ MCFG_SCREEN_VBLANK_DRIVER(snowbros_state, screen_eof_snowbros)
MCFG_GFXDECODE(snowbros)
MCFG_PALETTE_LENGTH(256)
@@ -1585,7 +1585,7 @@ static MACHINE_CONFIG_DERIVED( wintbob, snowbros )
/* video hardware */
MCFG_GFXDECODE(wb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(wintbob)
+ MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_wintbob)
MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
@@ -1666,7 +1666,7 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(honeydol)
+ MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_honeydol)
MCFG_GFXDECODE(honeydol)
MCFG_PALETTE_LENGTH(0x800/2)
@@ -1703,7 +1703,7 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(twinadv)
+ MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_twinadv)
MCFG_GFXDECODE(twinadv)
MCFG_PALETTE_LENGTH(0x100)
@@ -1775,7 +1775,7 @@ static MACHINE_CONFIG_START( snowbro3, snowbros_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(snowbro3)
+ MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_snowbro3)
MCFG_GFXDECODE(sb3)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/solomon.c b/src/mame/drivers/solomon.c
index d62e3b805b8..e8aecb72468 100644
--- a/src/mame/drivers/solomon.c
+++ b/src/mame/drivers/solomon.c
@@ -222,7 +222,7 @@ static MACHINE_CONFIG_START( solomon, solomon_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(solomon)
+ MCFG_SCREEN_UPDATE_DRIVER(solomon_state, screen_update_solomon)
MCFG_GFXDECODE(solomon)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/sonson.c b/src/mame/drivers/sonson.c
index 3dc6604d0ec..182b425bf51 100644
--- a/src/mame/drivers/sonson.c
+++ b/src/mame/drivers/sonson.c
@@ -256,7 +256,7 @@ static MACHINE_CONFIG_START( sonson, sonson_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sonson)
+ MCFG_SCREEN_UPDATE_DRIVER(sonson_state, screen_update_sonson)
MCFG_GFXDECODE(sonson)
MCFG_PALETTE_LENGTH(64*4+32*8)
diff --git a/src/mame/drivers/spacefb.c b/src/mame/drivers/spacefb.c
index 7f06f0d2d46..399347abb98 100644
--- a/src/mame/drivers/spacefb.c
+++ b/src/mame/drivers/spacefb.c
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( spacefb, spacefb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(SPACEFB_PIXEL_CLOCK, SPACEFB_HTOTAL, SPACEFB_HBEND, SPACEFB_HBSTART, SPACEFB_VTOTAL, SPACEFB_VBEND, SPACEFB_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(spacefb)
+ MCFG_SCREEN_UPDATE_DRIVER(spacefb_state, screen_update_spacefb)
/* audio hardware */
MCFG_FRAGMENT_ADD(spacefb_audio)
diff --git a/src/mame/drivers/spaceg.c b/src/mame/drivers/spaceg.c
index 2288c6931cb..5e4f2a8fb21 100644
--- a/src/mame/drivers/spaceg.c
+++ b/src/mame/drivers/spaceg.c
@@ -190,6 +190,7 @@ public:
DECLARE_WRITE8_MEMBER(zvideoram_w);
DECLARE_READ8_MEMBER(spaceg_colorram_r);
virtual void palette_init();
+ UINT32 screen_update_spaceg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/*************************************
@@ -297,21 +298,20 @@ READ8_MEMBER(spaceg_state::spaceg_colorram_r)
}
-static SCREEN_UPDATE_IND16( spaceg )
+UINT32 spaceg_state::screen_update_spaceg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- spaceg_state *state = screen.machine().driver_data<spaceg_state>();
offs_t offs;
for (offs = 0; offs < 0x2000; offs++)
{
int i;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
int y = offs & 0xff;
int x = (offs >> 8) << 3;
for (i = 0; i < 8; i++)
{
- bitmap.pix16(y, x) = (data & 0x80) ? state->m_colorram[offs] : 0;
+ bitmap.pix16(y, x) = (data & 0x80) ? m_colorram[offs] : 0;
x++;
data <<= 1;
@@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( spaceg, spaceg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 32, 255)
- MCFG_SCREEN_UPDATE_STATIC( spaceg )
+ MCFG_SCREEN_UPDATE_DRIVER(spaceg_state, screen_update_spaceg)
MCFG_PALETTE_LENGTH(16+128-16)
diff --git a/src/mame/drivers/spbactn.c b/src/mame/drivers/spbactn.c
index a26ce57ff4b..f6867d9a617 100644
--- a/src/mame/drivers/spbactn.c
+++ b/src/mame/drivers/spbactn.c
@@ -360,7 +360,7 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(spbactn)
+ MCFG_SCREEN_UPDATE_DRIVER(spbactn_state, screen_update_spbactn)
MCFG_GFXDECODE(spbactn)
MCFG_PALETTE_LENGTH(0x2800/2)
diff --git a/src/mame/drivers/spcforce.c b/src/mame/drivers/spcforce.c
index f2bec69e55b..6e0f442433f 100644
--- a/src/mame/drivers/spcforce.c
+++ b/src/mame/drivers/spcforce.c
@@ -279,7 +279,7 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(spcforce)
+ MCFG_SCREEN_UPDATE_DRIVER(spcforce_state, screen_update_spcforce)
MCFG_GFXDECODE(spcforce)
MCFG_PALETTE_LENGTH(sizeof(colortable_source) / sizeof(colortable_source[0]))
diff --git a/src/mame/drivers/spdodgeb.c b/src/mame/drivers/spdodgeb.c
index cd2150ea31a..08476c2d906 100644
--- a/src/mame/drivers/spdodgeb.c
+++ b/src/mame/drivers/spdodgeb.c
@@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(12000000/2, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(spdodgeb)
+ MCFG_SCREEN_UPDATE_DRIVER(spdodgeb_state, screen_update_spdodgeb)
MCFG_GFXDECODE(spdodgeb)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/speedatk.c b/src/mame/drivers/speedatk.c
index 4a593880048..6e0e8f60fb3 100644
--- a/src/mame/drivers/speedatk.c
+++ b/src/mame/drivers/speedatk.c
@@ -335,7 +335,7 @@ static MACHINE_CONFIG_START( speedatk, speedatk_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(speedatk)
+ MCFG_SCREEN_UPDATE_DRIVER(speedatk_state, screen_update_speedatk)
MCFG_MC6845_ADD("crtc", H46505, MASTER_CLOCK/16, mc6845_intf) /* hand tuned to get ~60 fps */
diff --git a/src/mame/drivers/speedbal.c b/src/mame/drivers/speedbal.c
index af77aa567d3..18c055eae5d 100644
--- a/src/mame/drivers/speedbal.c
+++ b/src/mame/drivers/speedbal.c
@@ -238,7 +238,7 @@ static MACHINE_CONFIG_START( speedbal, speedbal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(speedbal)
+ MCFG_SCREEN_UPDATE_DRIVER(speedbal_state, screen_update_speedbal)
MCFG_GFXDECODE(speedbal)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/speedspn.c b/src/mame/drivers/speedspn.c
index 293a9636e25..8c1ed3a8ec4 100644
--- a/src/mame/drivers/speedspn.c
+++ b/src/mame/drivers/speedspn.c
@@ -284,7 +284,7 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(speedspn)
+ MCFG_SCREEN_UPDATE_DRIVER(speedspn_state, screen_update_speedspn)
MCFG_GFXDECODE(speedspn)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/speglsht.c b/src/mame/drivers/speglsht.c
index 33f64131653..3c86405eabb 100644
--- a/src/mame/drivers/speglsht.c
+++ b/src/mame/drivers/speglsht.c
@@ -133,6 +133,7 @@ public:
DECLARE_DRIVER_INIT(speglsht);
DECLARE_MACHINE_RESET(speglsht);
DECLARE_VIDEO_START(speglsht);
+ UINT32 screen_update_speglsht(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -348,30 +349,29 @@ VIDEO_START_MEMBER(speglsht_state,speglsht)
bitmap.pix32(y, x) = (b) | ((g)<<8) | ((r)<<16); \
}
-static SCREEN_UPDATE_RGB32(speglsht)
+UINT32 speglsht_state::screen_update_speglsht(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- speglsht_state *state = screen.machine().driver_data<speglsht_state>();
int x,y,dy;
- dy=(state->m_videoreg&0x20)?(256*512):0; //visible frame
+ dy=(m_videoreg&0x20)?(256*512):0; //visible frame
for(y=0;y<256;y++)
{
for(x=0;x<512;x++)
{
int tmp=dy+y*512+x;
- PLOT_PIXEL_RGB(x-67,y-5,(state->m_framebuffer[tmp]>>0)&0xff,(state->m_framebuffer[tmp]>>8)&0xff,(state->m_framebuffer[tmp]>>16)&0xff);
+ PLOT_PIXEL_RGB(x-67,y-5,(m_framebuffer[tmp]>>0)&0xff,(m_framebuffer[tmp]>>8)&0xff,(m_framebuffer[tmp]>>16)&0xff);
}
}
//draw st0016 gfx to temporary bitmap (indexed 16)
- state->m_bitmap->fill(0);
- st0016_draw_screen(screen, *state->m_bitmap, cliprect);
+ m_bitmap->fill(0);
+ st0016_draw_screen(screen, *m_bitmap, cliprect);
//copy temporary bitmap to rgb 32 bit bitmap
for(y=cliprect.min_y; y<cliprect.max_y;y++)
{
- UINT16 *srcline = &state->m_bitmap->pix16(y);
+ UINT16 *srcline = &m_bitmap->pix16(y);
for(x=cliprect.min_x; x<cliprect.max_x;x++)
{
if(srcline[x])
@@ -407,7 +407,7 @@ static MACHINE_CONFIG_START( speglsht, speglsht_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 239-8)
- MCFG_SCREEN_UPDATE_STATIC(speglsht)
+ MCFG_SCREEN_UPDATE_DRIVER(speglsht_state, screen_update_speglsht)
MCFG_GFXDECODE(speglsht)
MCFG_PALETTE_LENGTH(16*16*4+1)
diff --git a/src/mame/drivers/splash.c b/src/mame/drivers/splash.c
index f0b031b9039..ea6cb645086 100644
--- a/src/mame/drivers/splash.c
+++ b/src/mame/drivers/splash.c
@@ -508,7 +508,7 @@ static MACHINE_CONFIG_START( splash, splash_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(splash)
+ MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
@@ -565,7 +565,7 @@ static MACHINE_CONFIG_START( roldfrog, splash_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(splash)
+ MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
@@ -644,7 +644,7 @@ static MACHINE_CONFIG_START( funystrp, splash_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(funystrp)
+ MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_funystrp)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c
index 18562595628..a62c47dd2d5 100644
--- a/src/mame/drivers/spoker.c
+++ b/src/mame/drivers/spoker.c
@@ -58,6 +58,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
WRITE8_MEMBER(spoker_state::bg_tile_w)
@@ -101,13 +102,12 @@ void spoker_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-static SCREEN_UPDATE_IND16(spoker)
+UINT32 spoker_state::screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- spoker_state *state = screen.machine().driver_data<spoker_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -543,7 +543,7 @@ static MACHINE_CONFIG_START( spoker, spoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(spoker)
+ MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update_spoker)
MCFG_GFXDECODE(spoker)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/spool99.c b/src/mame/drivers/spool99.c
index ea130b61147..2483e48fc74 100644
--- a/src/mame/drivers/spool99.c
+++ b/src/mame/drivers/spool99.c
@@ -117,6 +117,7 @@ public:
DECLARE_DRIVER_INIT(spool99);
TILE_GET_INFO_MEMBER(get_spool99_tile_info);
virtual void video_start();
+ UINT32 screen_update_spool99(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(spool99_state::get_spool99_tile_info)
@@ -137,11 +138,10 @@ void spool99_state::video_start()
m_sc0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(spool99_state::get_spool99_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
-static SCREEN_UPDATE_IND16(spool99)
+UINT32 spool99_state::screen_update_spool99(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- spool99_state *state = screen.machine().driver_data<spool99_state>();
- state->m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
+ m_sc0_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( spool99, spool99_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(7*8, 55*8-1, 1*8, 31*8-1) //384x240,raw guess
- MCFG_SCREEN_UPDATE_STATIC(spool99)
+ MCFG_SCREEN_UPDATE_DRIVER(spool99_state, screen_update_spool99)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/sprcros2.c b/src/mame/drivers/sprcros2.c
index ab0e6cccd63..e7eb7007fa3 100644
--- a/src/mame/drivers/sprcros2.c
+++ b/src/mame/drivers/sprcros2.c
@@ -297,7 +297,7 @@ static MACHINE_CONFIG_START( sprcros2, sprcros2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sprcros2)
+ MCFG_SCREEN_UPDATE_DRIVER(sprcros2_state, screen_update_sprcros2)
MCFG_GFXDECODE(sprcros2)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/sprint2.c b/src/mame/drivers/sprint2.c
index 1ab98d5cd22..b4bf7e9c06d 100644
--- a/src/mame/drivers/sprint2.c
+++ b/src/mame/drivers/sprint2.c
@@ -507,8 +507,8 @@ static MACHINE_CONFIG_START( sprint2, sprint2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 223)
- MCFG_SCREEN_UPDATE_STATIC(sprint2)
- MCFG_SCREEN_VBLANK_STATIC(sprint2)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2)
+ MCFG_SCREEN_VBLANK_DRIVER(sprint2_state, screen_eof_sprint2)
MCFG_GFXDECODE(sprint2)
MCFG_PALETTE_LENGTH(12)
diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c
index 7f906f3529a..0c28a4940be 100644
--- a/src/mame/drivers/sprint4.c
+++ b/src/mame/drivers/sprint4.c
@@ -404,8 +404,8 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(sprint4)
- MCFG_SCREEN_VBLANK_STATIC(sprint4)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update_sprint4)
+ MCFG_SCREEN_VBLANK_DRIVER(sprint4_state, screen_eof_sprint4)
MCFG_GFXDECODE(sprint4)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/sprint8.c b/src/mame/drivers/sprint8.c
index 81ad80c662b..d26b8c84429 100644
--- a/src/mame/drivers/sprint8.c
+++ b/src/mame/drivers/sprint8.c
@@ -463,8 +463,8 @@ static MACHINE_CONFIG_START( sprint8, sprint8_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 261)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 231)
- MCFG_SCREEN_UPDATE_STATIC(sprint8)
- MCFG_SCREEN_VBLANK_STATIC(sprint8)
+ MCFG_SCREEN_UPDATE_DRIVER(sprint8_state, screen_update_sprint8)
+ MCFG_SCREEN_VBLANK_DRIVER(sprint8_state, screen_eof_sprint8)
MCFG_GFXDECODE(sprint8)
MCFG_PALETTE_LENGTH(36)
diff --git a/src/mame/drivers/spy.c b/src/mame/drivers/spy.c
index fb4090239da..919893995d0 100644
--- a/src/mame/drivers/spy.c
+++ b/src/mame/drivers/spy.c
@@ -547,7 +547,7 @@ static MACHINE_CONFIG_START( spy, spy_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(spy)
+ MCFG_SCREEN_UPDATE_DRIVER(spy_state, screen_update_spy)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c
index 5d9dd7b5786..f629badac10 100644
--- a/src/mame/drivers/srmp2.c
+++ b/src/mame/drivers/srmp2.c
@@ -1179,7 +1179,7 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(464, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 464-1, 8, 256-1-24)
- MCFG_SCREEN_UPDATE_STATIC(srmp2) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp2)
MCFG_GFXDECODE(srmp2)
MCFG_PALETTE_LENGTH(1024) /* sprites only */
@@ -1220,7 +1220,7 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 8, 256-1-24)
- MCFG_SCREEN_UPDATE_STATIC(srmp3) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp3)
MCFG_GFXDECODE(srmp3)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -1270,7 +1270,7 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 0, 256-1-16)
- MCFG_SCREEN_UPDATE_STATIC(mjyuugi) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_mjyuugi)
MCFG_GFXDECODE(srmp3)
MCFG_PALETTE_LENGTH(512) /* sprites only */
diff --git a/src/mame/drivers/srmp5.c b/src/mame/drivers/srmp5.c
index 86e53487180..ec2abe85204 100644
--- a/src/mame/drivers/srmp5.c
+++ b/src/mame/drivers/srmp5.c
@@ -102,22 +102,22 @@ public:
DECLARE_READ8_MEMBER(cmd2_r);
DECLARE_READ8_MEMBER(cmd_stat8_r);
DECLARE_DRIVER_INIT(srmp5);
+ UINT32 screen_update_srmp5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_RGB32( srmp5 )
+UINT32 srmp5_state::screen_update_srmp5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- srmp5_state *state = screen.machine().driver_data<srmp5_state>();
int x,y,address,xs,xs2,ys,ys2,height,width,xw,yw,xb,yb,sizex,sizey;
- UINT16 *sprite_list=state->m_sprram;
- UINT16 *sprite_list_end=&state->m_sprram[0x4000]; //guess
- UINT8 *pixels=(UINT8 *)state->m_tileram;
+ UINT16 *sprite_list=m_sprram;
+ UINT16 *sprite_list_end=&m_sprram[0x4000]; //guess
+ UINT8 *pixels=(UINT8 *)m_tileram;
//Table surface seems to be tiles, but display corrupts when switching the scene if always ON.
//Currently the tiles are OFF.
#ifdef BG_ENABLE
- UINT8 tile_width = (state->m_vidregs[2] >> 0) & 0xFF;
- UINT8 tile_height = (state->m_vidregs[2] >> 8) & 0xFF;
+ UINT8 tile_width = (m_vidregs[2] >> 0) & 0xFF;
+ UINT8 tile_height = (m_vidregs[2] >> 8) & 0xFF;
if(tile_width && tile_height)
{
// 16x16 tile
@@ -137,7 +137,7 @@ static SCREEN_UPDATE_RGB32( srmp5 )
UINT8 pen = pixels[address];
if(pen)
{
- UINT16 pixdata=state->m_palram[pen];
+ UINT16 pixdata=m_palram[pen];
bitmap.pix32(yw * 16 + y, xw * 16 + x) = ((pixdata&0x7c00)>>7) | ((pixdata&0x3e0)<<6) | ((pixdata&0x1f)<<19);
}
address++;
@@ -152,7 +152,7 @@ static SCREEN_UPDATE_RGB32( srmp5 )
while((sprite_list[SUBLIST_OFFSET]&SPRITE_LIST_END_MARKER)==0 && sprite_list<sprite_list_end)
{
- UINT16 *sprite_sublist=&state->m_sprram[sprite_list[SUBLIST_OFFSET]<<SUBLIST_OFFSET_SHIFT];
+ UINT16 *sprite_sublist=&m_sprram[sprite_list[SUBLIST_OFFSET]<<SUBLIST_OFFSET_SHIFT];
UINT16 sublist_length=sprite_list[SUBLIST_LENGTH];
INT16 global_x,global_y;
@@ -189,7 +189,7 @@ static SCREEN_UPDATE_RGB32( srmp5 )
{
if(cliprect.contains(xb+xs2, yb+ys2))
{
- UINT16 pixdata=state->m_palram[pen+((sprite_sublist[SPRITE_PALETTE]&0xff)<<8)];
+ UINT16 pixdata=m_palram[pen+((sprite_sublist[SPRITE_PALETTE]&0xff)<<8)];
bitmap.pix32(yb+ys2, xb+xs2) = ((pixdata&0x7c00)>>7) | ((pixdata&0x3e0)<<6) | ((pixdata&0x1f)<<19);
}
}
@@ -210,10 +210,10 @@ static SCREEN_UPDATE_RGB32( srmp5 )
int i;
for(i = 0; i < 0x2000; i++)
{
- if (state->m_tileduty[i] == 1)
+ if (m_tileduty[i] == 1)
{
screen.machine().gfx[0]->decode(i);
- state->m_tileduty[i] = 0;
+ m_tileduty[i] = 0;
}
}
}
@@ -573,7 +573,7 @@ static MACHINE_CONFIG_START( srmp5, srmp5_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(96*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(srmp5)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp5_state, screen_update_srmp5)
MCFG_PALETTE_LENGTH(0x1800)
#ifdef DEBUG_CHAR
diff --git a/src/mame/drivers/srmp6.c b/src/mame/drivers/srmp6.c
index 4de22ae59f4..f4248f16f04 100644
--- a/src/mame/drivers/srmp6.c
+++ b/src/mame/drivers/srmp6.c
@@ -105,6 +105,7 @@ public:
DECLARE_READ16_MEMBER(srmp6_irq_ack_r);
DECLARE_DRIVER_INIT(INIT);
virtual void video_start();
+ UINT32 screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
#define VERBOSE 0
@@ -172,12 +173,11 @@ void srmp6_state::video_start()
static int xixi=0;
#endif
-static SCREEN_UPDATE_RGB32(srmp6)
+UINT32 srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- srmp6_state *state = screen.machine().driver_data<srmp6_state>();
int alpha;
int x,y,tileno,height,width,xw,yw,sprite,xb,yb;
- UINT16 *sprite_list = state->m_sprram_old;
+ UINT16 *sprite_list = m_sprram_old;
UINT16 mainlist_offset = 0;
union
@@ -207,7 +207,7 @@ static SCREEN_UPDATE_RGB32(srmp6)
while (mainlist_offset<0x2000/2)
{
- UINT16 *sprite_sublist = &state->m_sprram_old[sprite_list[mainlist_offset+1]<<3];
+ UINT16 *sprite_sublist = &m_sprram_old[sprite_list[mainlist_offset+1]<<3];
UINT16 sublist_length=sprite_list[mainlist_offset+0]&0x7fff; //+1 ?
INT16 global_x,global_y, flip_x, flip_y;
UINT16 global_pal;
@@ -285,12 +285,12 @@ static SCREEN_UPDATE_RGB32(srmp6)
mainlist_offset+=8;
}
- memcpy(state->m_sprram_old, state->m_sprram, 0x80000);
+ memcpy(m_sprram_old, m_sprram, 0x80000);
if(screen.machine().input().code_pressed_once(KEYCODE_Q))
{
FILE *p=fopen("tileram.bin","wb");
- fwrite(state->m_tileram, 1, 0x100000*16, p);
+ fwrite(m_tileram, 1, 0x100000*16, p);
fclose(p);
}
@@ -681,7 +681,7 @@ static MACHINE_CONFIG_START( srmp6, srmp6_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(srmp6)
+ MCFG_SCREEN_UPDATE_DRIVER(srmp6_state, screen_update_srmp6)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c
index 2330139b6bd..ed993146de5 100644
--- a/src/mame/drivers/srumbler.c
+++ b/src/mame/drivers/srumbler.c
@@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(10*8, (64-10)*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(srumbler)
+ MCFG_SCREEN_UPDATE_DRIVER(srumbler_state, screen_update_srumbler)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(srumbler)
diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c
index 324d1d2219f..7626ed74e9e 100644
--- a/src/mame/drivers/ssfindo.c
+++ b/src/mame/drivers/ssfindo.c
@@ -246,6 +246,7 @@ public:
DECLARE_DRIVER_INIT(ppcar);
DECLARE_DRIVER_INIT(tetfight);
virtual void machine_reset();
+ UINT32 screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -253,24 +254,23 @@ static void PS7500_startTimer0(running_machine &machine);
static void PS7500_startTimer1(running_machine &machine);
-static SCREEN_UPDATE_IND16(ssfindo)
+UINT32 ssfindo_state::screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ssfindo_state *state = screen.machine().driver_data<ssfindo_state>();
int s,x,y;
- if( state->m_PS7500_IO[VIDCR]&0x20) //video DMA enabled
+ if( m_PS7500_IO[VIDCR]&0x20) //video DMA enabled
{
- s=( (state->m_PS7500_IO[VIDINITA]&0x1fffffff)-0x10000000)/4;
+ s=( (m_PS7500_IO[VIDINITA]&0x1fffffff)-0x10000000)/4;
if(s>=0 && s<(0x10000000/4))
{
for(y=0;y<256;y++)
for(x=0;x<320;x+=4)
{
- bitmap.pix16(y, x+0) = state->m_vram[s]&0xff;
- bitmap.pix16(y, x+1) = (state->m_vram[s]>>8)&0xff;
- bitmap.pix16(y, x+2) = (state->m_vram[s]>>16)&0xff;
- bitmap.pix16(y, x+3) = (state->m_vram[s]>>24)&0xff;
+ bitmap.pix16(y, x+0) = m_vram[s]&0xff;
+ bitmap.pix16(y, x+1) = (m_vram[s]>>8)&0xff;
+ bitmap.pix16(y, x+2) = (m_vram[s]>>16)&0xff;
+ bitmap.pix16(y, x+3) = (m_vram[s]>>24)&0xff;
s++;
}
}
@@ -765,7 +765,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(ssfindo)
+ MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update_ssfindo)
MCFG_PALETTE_LENGTH(256)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sshangha.c b/src/mame/drivers/sshangha.c
index 3091e19dcd0..5201d733b36 100644
--- a/src/mame/drivers/sshangha.c
+++ b/src/mame/drivers/sshangha.c
@@ -408,7 +408,7 @@ static MACHINE_CONFIG_START( sshangha, sshangha_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sshangha)
+ MCFG_SCREEN_UPDATE_DRIVER(sshangha_state, screen_update_sshangha)
MCFG_GFXDECODE(sshangha)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/sshot.c b/src/mame/drivers/sshot.c
index fe78f4720e6..eeff6398fb9 100644
--- a/src/mame/drivers/sshot.c
+++ b/src/mame/drivers/sshot.c
@@ -174,6 +174,7 @@ public:
TILE_GET_INFO_MEMBER(get_supershot_text_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_supershot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/*************************************
@@ -194,10 +195,9 @@ void supershot_state::video_start()
m_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(supershot_state::get_supershot_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( supershot )
+UINT32 supershot_state::screen_update_supershot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- supershot_state *state = screen.machine().driver_data<supershot_state>();
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -340,7 +340,7 @@ static MACHINE_CONFIG_START( supershot, supershot_state )
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(supershot)
+ MCFG_SCREEN_UPDATE_DRIVER(supershot_state, screen_update_supershot)
MCFG_GFXDECODE(supershot)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/sslam.c b/src/mame/drivers/sslam.c
index 4028a9ab7aa..1c5771d51b8 100644
--- a/src/mame/drivers/sslam.c
+++ b/src/mame/drivers/sslam.c
@@ -718,7 +718,7 @@ static MACHINE_CONFIG_START( sslam, sslam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sslam)
+ MCFG_SCREEN_UPDATE_DRIVER(sslam_state, screen_update_sslam)
MCFG_GFXDECODE(sslam)
MCFG_PALETTE_LENGTH(0x800)
@@ -748,7 +748,7 @@ static MACHINE_CONFIG_START( powerbls, sslam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(powerbls)
+ MCFG_SCREEN_UPDATE_DRIVER(sslam_state, screen_update_powerbls)
MCFG_GFXDECODE(powerbls)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ssozumo.c b/src/mame/drivers/ssozumo.c
index 32ef4ff0931..ae425aeea87 100644
--- a/src/mame/drivers/ssozumo.c
+++ b/src/mame/drivers/ssozumo.c
@@ -205,7 +205,7 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8 - 1, 1*8, 31*8 - 1)
- MCFG_SCREEN_UPDATE_STATIC(ssozumo)
+ MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update_ssozumo)
MCFG_GFXDECODE(ssozumo)
MCFG_PALETTE_LENGTH(64 + 16)
diff --git a/src/mame/drivers/sspeedr.c b/src/mame/drivers/sspeedr.c
index ad634b25afc..c042cef3361 100644
--- a/src/mame/drivers/sspeedr.c
+++ b/src/mame/drivers/sspeedr.c
@@ -198,8 +198,8 @@ static MACHINE_CONFIG_START( sspeedr, sspeedr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(16 * 1000000 / 15680))
MCFG_SCREEN_SIZE(376, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 375, 0, 247)
- MCFG_SCREEN_UPDATE_STATIC(sspeedr)
- MCFG_SCREEN_VBLANK_STATIC(sspeedr)
+ MCFG_SCREEN_UPDATE_DRIVER(sspeedr_state, screen_update_sspeedr)
+ MCFG_SCREEN_VBLANK_DRIVER(sspeedr_state, screen_eof_sspeedr)
MCFG_GFXDECODE(sspeedr)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/ssrj.c b/src/mame/drivers/ssrj.c
index b1a9b9de83d..42942673c22 100644
--- a/src/mame/drivers/ssrj.c
+++ b/src/mame/drivers/ssrj.c
@@ -152,8 +152,8 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res
- MCFG_SCREEN_UPDATE_STATIC(ssrj)
- MCFG_SCREEN_VBLANK_STATIC(ssrj)
+ MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update_ssrj)
+ MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof_ssrj)
MCFG_GFXDECODE(ssrj)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/sstrangr.c b/src/mame/drivers/sstrangr.c
index b096b85a443..67d6823847d 100644
--- a/src/mame/drivers/sstrangr.c
+++ b/src/mame/drivers/sstrangr.c
@@ -24,6 +24,8 @@ public:
UINT8 m_flip_screen;
UINT8 *m_proms;
DECLARE_WRITE8_MEMBER(port_w);
+ UINT32 screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_sstrngr2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -34,9 +36,8 @@ public:
*
*************************************/
-static SCREEN_UPDATE_RGB32( sstrangr )
+UINT32 sstrangr_state::screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- sstrangr_state *state = screen.machine().driver_data<sstrangr_state>();
offs_t offs;
for (offs = 0; offs < 0x2000; offs++)
@@ -45,13 +46,13 @@ static SCREEN_UPDATE_RGB32( sstrangr )
UINT8 x = offs << 3;
int y = offs >> 5;
- UINT8 data = state->m_ram[offs];
+ UINT8 data = m_ram[offs];
for (i = 0; i < 8; i++)
{
pen_t pen;
- if (state->m_flip_screen)
+ if (m_flip_screen)
{
pen = (data & 0x80) ? RGB_WHITE : RGB_BLACK;
data = data << 1;
@@ -83,16 +84,15 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE_RGB32( sstrngr2 )
+UINT32 sstrangr_state::screen_update_sstrngr2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- sstrangr_state *state = screen.machine().driver_data<sstrangr_state>();
pen_t pens[NUM_PENS];
offs_t offs;
UINT8 *color_map_base;
get_pens(pens);
- color_map_base = &state->memregion("proms")->base()[state->m_flip_screen ? 0x0000 : 0x0200];
+ color_map_base = &memregion("proms")->base()[m_flip_screen ? 0x0000 : 0x0200];
for (offs = 0; offs < 0x2000; offs++)
{
@@ -103,14 +103,14 @@ static SCREEN_UPDATE_RGB32( sstrngr2 )
offs_t color_address = (offs >> 9 << 5) | (offs & 0x1f);
- UINT8 data = state->m_ram[offs];
+ UINT8 data = m_ram[offs];
UINT8 fore_color = color_map_base[color_address] & 0x07;
for (i = 0; i < 8; i++)
{
UINT8 color;
- if (state->m_flip_screen)
+ if (m_flip_screen)
{
color = (data & 0x80) ? fore_color : 0;
data = data << 1;
@@ -204,7 +204,7 @@ static MACHINE_CONFIG_START( sstrangr, sstrangr_state )
MCFG_SCREEN_SIZE(32*8, 262) /* vert size is a guess, taken from mw8080bw */
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE_STATIC(sstrangr)
+ MCFG_SCREEN_UPDATE_DRIVER(sstrangr_state, screen_update_sstrangr)
/* sound hardware */
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_DERIVED( sstrngr2, sstrangr )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(sstrngr2)
+ MCFG_SCREEN_UPDATE_DRIVER(sstrangr_state, screen_update_sstrngr2)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c
index 00dc16110d5..210fbb4c4de 100644
--- a/src/mame/drivers/ssv.c
+++ b/src/mame/drivers/ssv.c
@@ -2610,7 +2610,7 @@ static MACHINE_CONFIG_START( ssv, ssv_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(0x1c6, 0x106)
MCFG_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(ssv)
+ MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update_ssv)
MCFG_GFXDECODE(ssv)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2658,7 +2658,7 @@ static MACHINE_CONFIG_DERIVED( gdfs, ssv )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, (0xd5-0x2c)*2-1, 0, (0x102-0x12)-1)
- MCFG_SCREEN_UPDATE_STATIC(gdfs)
+ MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update_gdfs)
MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0)
@@ -2838,7 +2838,7 @@ static MACHINE_CONFIG_DERIVED( eaglshot, ssv )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, (0xca - 0x2a)*2-1, 0, (0xf6 - 0x16)-1)
- MCFG_SCREEN_UPDATE_STATIC(eaglshot)
+ MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update_eaglshot)
MCFG_GFXDECODE(eaglshot)
MCFG_VIDEO_START_OVERRIDE(ssv_state,eaglshot)
diff --git a/src/mame/drivers/st0016.c b/src/mame/drivers/st0016.c
index b174b7bcac1..74a86886b2d 100644
--- a/src/mame/drivers/st0016.c
+++ b/src/mame/drivers/st0016.c
@@ -454,7 +454,7 @@ static MACHINE_CONFIG_START( st0016, st0016_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(48*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(st0016)
+ MCFG_SCREEN_UPDATE_DRIVER(st0016_state, screen_update_st0016)
MCFG_GFXDECODE(st0016)
MCFG_PALETTE_LENGTH(16*16*4+1)
diff --git a/src/mame/drivers/stadhero.c b/src/mame/drivers/stadhero.c
index f24e0e3921e..3baa5082868 100644
--- a/src/mame/drivers/stadhero.c
+++ b/src/mame/drivers/stadhero.c
@@ -240,7 +240,7 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(stadhero)
+ MCFG_SCREEN_UPDATE_DRIVER(stadhero_state, screen_update_stadhero)
MCFG_GFXDECODE(stadhero)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/starcrus.c b/src/mame/drivers/starcrus.c
index d4dd189127c..7488ac11971 100644
--- a/src/mame/drivers/starcrus.c
+++ b/src/mame/drivers/starcrus.c
@@ -148,7 +148,7 @@ static MACHINE_CONFIG_START( starcrus, starcrus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(starcrus)
+ MCFG_SCREEN_UPDATE_DRIVER(starcrus_state, screen_update_starcrus)
MCFG_GFXDECODE(starcrus)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/starfire.c b/src/mame/drivers/starfire.c
index f0499e632be..924756e3015 100644
--- a/src/mame/drivers/starfire.c
+++ b/src/mame/drivers/starfire.c
@@ -268,7 +268,7 @@ static MACHINE_CONFIG_START( starfire, starfire_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(STARFIRE_PIXEL_CLOCK, STARFIRE_HTOTAL, STARFIRE_HBEND, STARFIRE_HBSTART, STARFIRE_VTOTAL, STARFIRE_VBEND, STARFIRE_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(starfire)
+ MCFG_SCREEN_UPDATE_DRIVER(starfire_state, screen_update_starfire)
/* audio hardware */
diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c
index c5c6c1e4283..279c5502828 100644
--- a/src/mame/drivers/starshp1.c
+++ b/src/mame/drivers/starshp1.c
@@ -306,8 +306,8 @@ static MACHINE_CONFIG_START( starshp1, starshp1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(starshp1)
- MCFG_SCREEN_VBLANK_STATIC(starshp1)
+ MCFG_SCREEN_UPDATE_DRIVER(starshp1_state, screen_update_starshp1)
+ MCFG_SCREEN_VBLANK_DRIVER(starshp1_state, screen_eof_starshp1)
MCFG_GFXDECODE(starshp1)
MCFG_PALETTE_LENGTH(19)
diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c
index d73b8b482ed..659152cf539 100644
--- a/src/mame/drivers/statriv2.c
+++ b/src/mame/drivers/statriv2.c
@@ -109,6 +109,7 @@ public:
virtual void video_start();
virtual void palette_init();
DECLARE_VIDEO_START(vertical);
+ UINT32 screen_update_statriv2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -191,13 +192,12 @@ WRITE8_MEMBER(statriv2_state::statriv2_videoram_w)
*
*************************************/
-static SCREEN_UPDATE_IND16( statriv2 )
+UINT32 statriv2_state::screen_update_statriv2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- statriv2_state *state = screen.machine().driver_data<statriv2_state>();
if (tms9927_screen_reset(screen.machine().device("tms")))
bitmap.fill(get_black_pen(screen.machine()), cliprect);
else
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -612,7 +612,7 @@ static MACHINE_CONFIG_START( statriv2, statriv2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 320, 270, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(statriv2)
+ MCFG_SCREEN_UPDATE_DRIVER(statriv2_state, screen_update_statriv2)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/2, tms9927_intf)
diff --git a/src/mame/drivers/stfight.c b/src/mame/drivers/stfight.c
index 841ea911e86..65104628944 100644
--- a/src/mame/drivers/stfight.c
+++ b/src/mame/drivers/stfight.c
@@ -451,7 +451,7 @@ static MACHINE_CONFIG_START( stfight, stfight_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(stfight)
+ MCFG_SCREEN_UPDATE_DRIVER(stfight_state, screen_update_stfight)
MCFG_GFXDECODE(stfight)
MCFG_PALETTE_LENGTH(16*4+16*16+16*16+16*16)
diff --git a/src/mame/drivers/stlforce.c b/src/mame/drivers/stlforce.c
index 40e0c00a2ec..8b88b4131a3 100644
--- a/src/mame/drivers/stlforce.c
+++ b/src/mame/drivers/stlforce.c
@@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( stlforce, stlforce_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 47*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(stlforce)
+ MCFG_SCREEN_UPDATE_DRIVER(stlforce_state, screen_update_stlforce)
MCFG_GFXDECODE(stlforce)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/strnskil.c b/src/mame/drivers/strnskil.c
index e4b5ee0c14f..420363be2d8 100644
--- a/src/mame/drivers/strnskil.c
+++ b/src/mame/drivers/strnskil.c
@@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( strnskil, strnskil_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8+3*8, 32*8+3*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(strnskil)
+ MCFG_SCREEN_UPDATE_DRIVER(strnskil_state, screen_update_strnskil)
MCFG_GFXDECODE(strnskil)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/sub.c b/src/mame/drivers/sub.c
index be67bc11cc4..4eedb6ed0ba 100644
--- a/src/mame/drivers/sub.c
+++ b/src/mame/drivers/sub.c
@@ -133,15 +133,15 @@ public:
DECLARE_WRITE8_MEMBER(nmi_mask_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
void sub_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(sub)
+UINT32 sub_state::screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- sub_state *state = screen.machine().driver_data<sub_state>();
gfx_element *gfx = screen.machine().gfx[0];
gfx_element *gfx_1 = screen.machine().gfx[1];
int y,x;
@@ -151,12 +151,12 @@ static SCREEN_UPDATE_IND16(sub)
{
for (x=0;x<32;x++)
{
- UINT16 tile = state->m_vid[count];
+ UINT16 tile = m_vid[count];
UINT8 col;
- UINT8 y_offs = state->m_scrolly[x];
+ UINT8 y_offs = m_scrolly[x];
- tile += (state->m_attr[count]&0xe0)<<3;
- col = (state->m_attr[count]&0x1f);
+ tile += (m_attr[count]&0xe0)<<3;
+ col = (m_attr[count]&0x1f);
drawgfx_opaque(bitmap,cliprect,gfx,tile,col+0x40,0,0,x*8,(y*8)-y_offs);
drawgfx_opaque(bitmap,cliprect,gfx,tile,col+0x40,0,0,x*8,(y*8)-y_offs+256);
@@ -177,8 +177,8 @@ static SCREEN_UPDATE_IND16(sub)
1 --cc cccc color
*/
{
- UINT8 *spriteram = state->m_spriteram;
- UINT8 *spriteram_2 = state->m_spriteram2;
+ UINT8 *spriteram = m_spriteram;
+ UINT8 *spriteram_2 = m_spriteram2;
UINT8 x,y,spr_offs,i,col,fx,fy;
for(i=0;i<0x40;i+=2)
@@ -202,12 +202,12 @@ static SCREEN_UPDATE_IND16(sub)
{
for (x=0;x<32;x++)
{
- UINT16 tile = state->m_vid[count];
+ UINT16 tile = m_vid[count];
UINT8 col;
- UINT8 y_offs = state->m_scrolly[x];
+ UINT8 y_offs = m_scrolly[x];
- tile += (state->m_attr[count]&0xe0)<<3;
- col = (state->m_attr[count]&0x1f);
+ tile += (m_attr[count]&0xe0)<<3;
+ col = (m_attr[count]&0x1f);
if(x >= 28)
{
@@ -446,7 +446,7 @@ static MACHINE_CONFIG_START( sub, sub_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(sub)
+ MCFG_SCREEN_UPDATE_DRIVER(sub_state, screen_update_sub)
MCFG_GFXDECODE(sub)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/subs.c b/src/mame/drivers/subs.c
index 2fb06c05a46..d963d855d4e 100644
--- a/src/mame/drivers/subs.c
+++ b/src/mame/drivers/subs.c
@@ -192,14 +192,14 @@ static MACHINE_CONFIG_START( subs, subs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(subs_left)
+ MCFG_SCREEN_UPDATE_DRIVER(subs_state, screen_update_subs_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(subs_right)
+ MCFG_SCREEN_UPDATE_DRIVER(subs_state, screen_update_subs_right)
/* sound hardware */
diff --git a/src/mame/drivers/subsino.c b/src/mame/drivers/subsino.c
index 8f0c8a3b693..a60743fd8b5 100644
--- a/src/mame/drivers/subsino.c
+++ b/src/mame/drivers/subsino.c
@@ -306,6 +306,9 @@ public:
DECLARE_PALETTE_INIT(subsino_3proms);
DECLARE_VIDEO_START(subsino_reels);
DECLARE_VIDEO_START(stisub);
+ UINT32 screen_update_subsino(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_subsino_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_stisub_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -483,77 +486,74 @@ VIDEO_START_MEMBER(subsino_state,stisub)
}
-static SCREEN_UPDATE_IND16( subsino )
+UINT32 subsino_state::screen_update_subsino(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- subsino_state *state = screen.machine().driver_data<subsino_state>();
bitmap.fill(0, cliprect);
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
-static SCREEN_UPDATE_IND16( subsino_reels )
+UINT32 subsino_state::screen_update_subsino_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- subsino_state *state = screen.machine().driver_data<subsino_state>();
int i;
bitmap.fill(0, cliprect);
for (i= 0;i < 64;i++)
{
- state->m_reel1_tilemap->set_scrolly(i, state->m_reel1_scroll[i]);
- state->m_reel2_tilemap->set_scrolly(i, state->m_reel2_scroll[i]);
- state->m_reel3_tilemap->set_scrolly(i, state->m_reel3_scroll[i]);
+ m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]);
+ m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i]);
+ m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i]);
}
- if (state->m_out_c&0x08)
+ if (m_out_c&0x08)
{
// are these hardcoded, or registers?
const rectangle visible1(0*8, (14+48)*8-1, 4*8, (4+7)*8-1);
const rectangle visible2(0*8, (14+48)*8-1, 10*8, (10+7)*8-1);
const rectangle visible3(0*8, (14+48)*8-1, 18*8, (18+7)*8-1);
- state->m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
- state->m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
- state->m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
+ m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
+ m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
+ m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
}
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
-static SCREEN_UPDATE_IND16( stisub_reels )
+UINT32 subsino_state::screen_update_stisub_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- subsino_state *state = screen.machine().driver_data<subsino_state>();
int i;
bitmap.fill(0, cliprect);
- if (state->m_reel1_attr)
+ if (m_reel1_attr)
{
- state->m_reel1_tilemap->mark_all_dirty();
- state->m_reel2_tilemap->mark_all_dirty();
- state->m_reel3_tilemap->mark_all_dirty();
+ m_reel1_tilemap->mark_all_dirty();
+ m_reel2_tilemap->mark_all_dirty();
+ m_reel3_tilemap->mark_all_dirty();
}
for (i= 0;i < 64;i++)
{
- state->m_reel1_tilemap->set_scrolly(i, state->m_reel1_scroll[i]);
- state->m_reel2_tilemap->set_scrolly(i, state->m_reel2_scroll[i]);
- state->m_reel3_tilemap->set_scrolly(i, state->m_reel3_scroll[i]);
+ m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]);
+ m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i]);
+ m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i]);
}
- if (state->m_out_c&0x08)
+ if (m_out_c&0x08)
{
// areas based on d-up game in attract mode
const rectangle visible1(0, 511, 0, 87);
const rectangle visible2(0, 511, 88, 143);
const rectangle visible3(0, 511, 144, 223);
- state->m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
- state->m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
- state->m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
+ m_reel1_tilemap->draw(bitmap, visible1, 0, 0);
+ m_reel2_tilemap->draw(bitmap, visible2, 0, 0);
+ m_reel3_tilemap->draw(bitmap, visible3, 0, 0);
}
- state->m_tmap->draw(bitmap, cliprect, 0, 0);
+ m_tmap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -2657,7 +2657,7 @@ static MACHINE_CONFIG_START( victor21, subsino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(subsino)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_subsino)
MCFG_GFXDECODE(subsino_depth3)
@@ -2697,7 +2697,7 @@ static MACHINE_CONFIG_START( crsbingo, subsino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(subsino)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_subsino)
MCFG_GFXDECODE(subsino_depth4)
@@ -2726,7 +2726,7 @@ static MACHINE_CONFIG_START( srider, subsino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(subsino)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_subsino)
MCFG_GFXDECODE(subsino_depth4)
@@ -2765,7 +2765,7 @@ static MACHINE_CONFIG_START( tisub, subsino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(subsino_reels)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_subsino_reels)
MCFG_GFXDECODE(subsino_depth4_reels)
@@ -2793,7 +2793,7 @@ static MACHINE_CONFIG_START( stisub, subsino_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(stisub_reels)
+ MCFG_SCREEN_UPDATE_DRIVER(subsino_state, screen_update_stisub_reels)
MCFG_GFXDECODE(subsino_stisub)
diff --git a/src/mame/drivers/subsino2.c b/src/mame/drivers/subsino2.c
index 358521fde37..98e93fe730f 100644
--- a/src/mame/drivers/subsino2.c
+++ b/src/mame/drivers/subsino2.c
@@ -165,6 +165,7 @@ public:
DECLARE_VIDEO_START(mtrain);
DECLARE_MACHINE_RESET(am188em);
DECLARE_VIDEO_START(xtrain);
+ UINT32 screen_update_subsino2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -631,10 +632,9 @@ VIDEO_START_MEMBER(subsino2_state,xtrain)
m_ss9601_reelrects[2].set(0, 0, 0x18*8, 256-16-1);
}
-static SCREEN_UPDATE_IND16( subsino2 )
+UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- subsino2_state *state = screen.machine().driver_data<subsino2_state>();
- int layers_ctrl = ~state->m_ss9601_disable;
+ int layers_ctrl = ~m_ss9601_disable;
int y;
#ifdef MAME_DEBUG
@@ -650,7 +650,7 @@ static SCREEN_UPDATE_IND16( subsino2 )
// Line Scroll / Reel Control
int mask_y[2] = {0, 0};
bool l0_reel = false;
- switch ( state->m_ss9601_scrollctrl )
+ switch ( m_ss9601_scrollctrl )
{
case 0xbf:
mask_y[0] = ~(32-1);
@@ -669,7 +669,7 @@ static SCREEN_UPDATE_IND16( subsino2 )
// Scroll
for (int i = 0; i < 2; i++)
{
- layer_t *l = &state->m_layers[i];
+ layer_t *l = &m_layers[i];
l->tmap->set_scroll_cols(1);
l->tmap->set_scroll_rows(0x200);
@@ -691,7 +691,7 @@ static SCREEN_UPDATE_IND16( subsino2 )
if (layers_ctrl & 1)
{
- layer_t *l = &state->m_layers[0];
+ layer_t *l = &m_layers[0];
if (l0_reel)
{
@@ -700,7 +700,7 @@ static SCREEN_UPDATE_IND16( subsino2 )
for (int r = 0; r < 3; r++)
{
- rectangle visible = state->m_ss9601_reelrects[r];
+ rectangle visible = m_ss9601_reelrects[r];
for (int x = 0; x < 0x40; x++)
{
@@ -708,7 +708,7 @@ static SCREEN_UPDATE_IND16( subsino2 )
visible.max_x = 8 * (x+1) - 1;
int reeladdr = (visible.min_y / 0x10) * 0x80 + x;
- UINT16 reelscroll = (state->m_ss9601_reelrams[VRAM_HI][reeladdr] << 8) + state->m_ss9601_reelrams[VRAM_LO][reeladdr];
+ UINT16 reelscroll = (m_ss9601_reelrams[VRAM_HI][reeladdr] << 8) + m_ss9601_reelrams[VRAM_LO][reeladdr];
l->tmap->set_scrollx(0, (reelscroll >> 9) * 8 + l->scroll_x - visible.min_x);
@@ -746,9 +746,9 @@ static SCREEN_UPDATE_IND16( subsino2 )
}
}
- if (layers_ctrl & 2) state->m_layers[1].tmap->draw(bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_layers[1].tmap->draw(bitmap, cliprect, 0, 0);
-// popmessage("scrl: %03x,%03x - %03x,%03x dis: %02x siz: %02x ctrl: %02x", state->m_layers[0].scroll_x,state->m_layers[0].scroll_y, state->m_layers[1].scroll_x,state->m_layers[1].scroll_y, state->m_ss9601_disable, state->m_ss9601_tilesize, state->m_ss9601_scrollctrl);
+// popmessage("scrl: %03x,%03x - %03x,%03x dis: %02x siz: %02x ctrl: %02x", m_layers[0].scroll_x,m_layers[0].scroll_y, m_layers[1].scroll_x,m_layers[1].scroll_y, m_ss9601_disable, m_ss9601_tilesize, m_ss9601_scrollctrl);
return 0;
}
@@ -2188,7 +2188,7 @@ static MACHINE_CONFIG_START( bishjan, subsino2_state )
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 60 )
- MCFG_SCREEN_UPDATE_STATIC( subsino2 )
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2216,7 +2216,7 @@ static MACHINE_CONFIG_START( mtrain, subsino2_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-32-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE_STATIC( subsino2 )
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2249,7 +2249,7 @@ static MACHINE_CONFIG_START( saklove, subsino2_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE_STATIC( subsino2 )
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2286,7 +2286,7 @@ static MACHINE_CONFIG_START( xplan, subsino2_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE_STATIC( subsino2 )
+ MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
diff --git a/src/mame/drivers/summit.c b/src/mame/drivers/summit.c
index dbdd5626013..513e45ba2ec 100644
--- a/src/mame/drivers/summit.c
+++ b/src/mame/drivers/summit.c
@@ -32,6 +32,7 @@ public:
DECLARE_WRITE8_MEMBER(out_w);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_summit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -39,9 +40,8 @@ void summit_state::video_start()
{
}
-static SCREEN_UPDATE_IND16(summit)
+UINT32 summit_state::screen_update_summit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- summit_state *state = screen.machine().driver_data<summit_state>();
gfx_element *gfx = screen.machine().gfx[0];
int count = 0x0000;
@@ -52,7 +52,7 @@ static SCREEN_UPDATE_IND16(summit)
{
for (x=0;x<32;x++)
{
- int tile = (state->m_vram[count] | ((state->m_attr[count]&1)<<8) );
+ int tile = (m_vram[count] | ((m_attr[count]&1)<<8) );
drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8);
count++;
@@ -308,7 +308,7 @@ static MACHINE_CONFIG_START( summit, summit_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(summit)
+ MCFG_SCREEN_UPDATE_DRIVER(summit_state, screen_update_summit)
MCFG_GFXDECODE(summit)
diff --git a/src/mame/drivers/suna16.c b/src/mame/drivers/suna16.c
index becf170a4c8..a2aa2ccf72c 100644
--- a/src/mame/drivers/suna16.c
+++ b/src/mame/drivers/suna16.c
@@ -791,7 +791,7 @@ static MACHINE_CONFIG_START( bssoccer, suna16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna16)
+ MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -849,7 +849,7 @@ static MACHINE_CONFIG_START( uballoon, suna16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna16)
+ MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -897,7 +897,7 @@ static MACHINE_CONFIG_START( sunaq, suna16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna16)
+ MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -963,7 +963,7 @@ static MACHINE_CONFIG_START( bestbest, suna16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(bestbest)
+ MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_bestbest)
MCFG_GFXDECODE(bestbest)
MCFG_PALETTE_LENGTH(256*8)
diff --git a/src/mame/drivers/suna8.c b/src/mame/drivers/suna8.c
index 9143442f2ee..2e0e2f0f904 100644
--- a/src/mame/drivers/suna8.c
+++ b/src/mame/drivers/suna8.c
@@ -1637,7 +1637,7 @@ static MACHINE_CONFIG_START( hardhead, suna8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna8)
+ MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1701,7 +1701,7 @@ static MACHINE_CONFIG_START( rranger, suna8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna8)
+ MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1780,7 +1780,7 @@ static MACHINE_CONFIG_START( brickzn, suna8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using PORT_VBLANK
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna8)
+ MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256 * 2) // 2 x Palette RAM
@@ -1881,7 +1881,7 @@ static MACHINE_CONFIG_START( starfigh, suna8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna8)
+ MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1928,7 +1928,7 @@ static MACHINE_CONFIG_START( sparkman, suna8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE_STATIC(suna8)
+ MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/supbtime.c b/src/mame/drivers/supbtime.c
index 51fe59e5af3..54f6f8e3926 100644
--- a/src/mame/drivers/supbtime.c
+++ b/src/mame/drivers/supbtime.c
@@ -357,7 +357,7 @@ static MACHINE_CONFIG_START( supbtime, supbtime_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(supbtime)
+ MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_supbtime)
MCFG_GFXDECODE(supbtime)
MCFG_PALETTE_LENGTH(1024)
@@ -398,7 +398,7 @@ static MACHINE_CONFIG_START( chinatwn, supbtime_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(supbtime)
+ MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_supbtime)
MCFG_GFXDECODE(supbtime)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/supdrapo.c b/src/mame/drivers/supdrapo.c
index 0a330f69f3b..7520f7267c8 100644
--- a/src/mame/drivers/supdrapo.c
+++ b/src/mame/drivers/supdrapo.c
@@ -90,6 +90,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -102,9 +103,8 @@ void supdrapo_state::video_start()
}
-static SCREEN_UPDATE_IND16( supdrapo )
+UINT32 supdrapo_state::screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- supdrapo_state *state = screen.machine().driver_data<supdrapo_state>();
int x, y;
int count;
int color;
@@ -115,9 +115,9 @@ static SCREEN_UPDATE_IND16( supdrapo )
{
for(x = 0; x < 32; x++)
{
- int tile = state->m_videoram[count] + state->m_char_bank[count] * 0x100;
+ int tile = m_videoram[count] + m_char_bank[count] * 0x100;
/* Global Column Coloring, GUESS! */
- color = state->m_col_line[(x*2) + 1] ? (state->m_col_line[(x*2) + 1] - 1) & 7 : 0;
+ color = m_col_line[(x*2) + 1] ? (m_col_line[(x*2) + 1] - 1) & 7 : 0;
drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[0], tile,color, 0, 0, x*8, y*8);
@@ -456,7 +456,7 @@ static MACHINE_CONFIG_START( supdrapo, supdrapo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(supdrapo)
+ MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update_supdrapo)
MCFG_GFXDECODE(supdrapo)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/superchs.c b/src/mame/drivers/superchs.c
index cf9dbfc43a9..79b4e19baba 100644
--- a/src/mame/drivers/superchs.c
+++ b/src/mame/drivers/superchs.c
@@ -344,7 +344,7 @@ static MACHINE_CONFIG_START( superchs, superchs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(superchs)
+ MCFG_SCREEN_UPDATE_DRIVER(superchs_state, screen_update_superchs)
MCFG_GFXDECODE(superchs)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/superdq.c b/src/mame/drivers/superdq.c
index ce3f39fccb1..80dc0183d13 100644
--- a/src/mame/drivers/superdq.c
+++ b/src/mame/drivers/superdq.c
@@ -51,6 +51,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_superdq(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(superdq_state::get_tile_info)
@@ -66,11 +67,10 @@ void superdq_state::video_start()
m_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(superdq_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_RGB32( superdq )
+UINT32 superdq_state::screen_update_superdq(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- superdq_state *state = screen.machine().driver_data<superdq_state>();
- state->m_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -349,7 +349,7 @@ static MACHINE_CONFIG_START( superdq, superdq_state )
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
- MCFG_LASERDISC_OVERLAY_STATIC(256, 256, superdq)
+ MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, superdq_state, screen_update_superdq)
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/superqix.c b/src/mame/drivers/superqix.c
index 44938140d19..d38bb74198e 100644
--- a/src/mame/drivers/superqix.c
+++ b/src/mame/drivers/superqix.c
@@ -1014,7 +1014,7 @@ static MACHINE_CONFIG_START( pbillian, superqix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pbillian)
+ MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_pbillian)
MCFG_GFXDECODE(pbillian)
MCFG_PALETTE_LENGTH(512)
@@ -1048,7 +1048,7 @@ static MACHINE_CONFIG_START( hotsmash, superqix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pbillian)
+ MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_pbillian)
MCFG_GFXDECODE(pbillian)
MCFG_PALETTE_LENGTH(512)
@@ -1086,7 +1086,7 @@ static MACHINE_CONFIG_START( sqix, superqix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(superqix)
+ MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_superqix)
MCFG_GFXDECODE(sqix)
MCFG_PALETTE_LENGTH(256)
@@ -1129,7 +1129,7 @@ static MACHINE_CONFIG_START( sqixbl, superqix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(superqix)
+ MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_superqix)
MCFG_GFXDECODE(sqix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/supertnk.c b/src/mame/drivers/supertnk.c
index c199cb03093..2ef653f7e4d 100644
--- a/src/mame/drivers/supertnk.c
+++ b/src/mame/drivers/supertnk.c
@@ -125,6 +125,7 @@ public:
DECLARE_DRIVER_INIT(supertnk);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_supertnk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -245,9 +246,8 @@ WRITE8_MEMBER(supertnk_state::supertnk_bitplane_select_1_w)
}
-static SCREEN_UPDATE_RGB32( supertnk )
+UINT32 supertnk_state::screen_update_supertnk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- supertnk_state *state = screen.machine().driver_data<supertnk_state>();
offs_t offs;
for (offs = 0; offs < 0x2000; offs++)
@@ -257,14 +257,14 @@ static SCREEN_UPDATE_RGB32( supertnk )
UINT8 y = offs >> 5;
UINT8 x = offs << 3;
- UINT8 data0 = state->m_videoram[0][offs];
- UINT8 data1 = state->m_videoram[1][offs];
- UINT8 data2 = state->m_videoram[2][offs];
+ UINT8 data0 = m_videoram[0][offs];
+ UINT8 data1 = m_videoram[1][offs];
+ UINT8 data2 = m_videoram[2][offs];
for (i = 0; i < 8; i++)
{
UINT8 color = ((data0 & 0x80) >> 5) | ((data1 & 0x80) >> 6) | ((data2 & 0x80) >> 7);
- bitmap.pix32(y, x) = state->m_pens[color];
+ bitmap.pix32(y, x) = m_pens[color];
data0 = data0 << 1;
data1 = data1 << 1;
@@ -439,7 +439,7 @@ static MACHINE_CONFIG_START( supertnk, supertnk_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_UPDATE_STATIC(supertnk)
+ MCFG_SCREEN_UPDATE_DRIVER(supertnk_state, screen_update_supertnk)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/superwng.c b/src/mame/drivers/superwng.c
index e54e73b2ae3..de54f01846c 100644
--- a/src/mame/drivers/superwng.c
+++ b/src/mame/drivers/superwng.c
@@ -73,6 +73,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_superwng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(superwng_state::get_bg_tile_info)
@@ -112,22 +113,21 @@ void superwng_state::video_start()
m_bg_tilemap->set_scrollx(0, 64);
}
-static SCREEN_UPDATE_IND16( superwng )
+UINT32 superwng_state::screen_update_superwng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- superwng_state *state = screen.machine().driver_data<superwng_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
rectangle tmp = cliprect;
- if (state->flip_screen())
+ if (flip_screen())
{
tmp.min_x += 32;
- state->m_fg_tilemap->draw(bitmap, tmp, 0, 0);
+ m_fg_tilemap->draw(bitmap, tmp, 0, 0);
}
else
{
tmp.max_x -= 32;
- state->m_fg_tilemap->draw(bitmap, tmp, 0, 0);
+ m_fg_tilemap->draw(bitmap, tmp, 0, 0);
}
//sprites
@@ -143,14 +143,14 @@ static SCREEN_UPDATE_IND16( superwng )
x ?
xxxx color
*/
- if (~state->m_videoram_bg[i] & 1)
+ if (~m_videoram_bg[i] & 1)
continue;
- int code = (state->m_videoram_bg[i] >> 2) | 0x40;
- int flip = ~state->m_videoram_bg[i] >> 1 & 1;
- int sx = 240 - state->m_videoram_bg[i + 1];
- int sy = state->m_colorram_bg[i];
- int color = state->m_colorram_bg[i + 1] & 0xf;
+ int code = (m_videoram_bg[i] >> 2) | 0x40;
+ int flip = ~m_videoram_bg[i] >> 1 & 1;
+ int sx = 240 - m_videoram_bg[i + 1];
+ int sy = m_colorram_bg[i];
+ int color = m_colorram_bg[i + 1] & 0xf;
drawgfx_transpen(bitmap, cliprect,screen.machine().gfx[1],
code,
@@ -483,7 +483,7 @@ static MACHINE_CONFIG_START( superwng, superwng_state )
MCFG_GFXDECODE(superwng)
MCFG_PALETTE_LENGTH(0x40)
- MCFG_SCREEN_UPDATE_STATIC(superwng)
+ MCFG_SCREEN_UPDATE_DRIVER(superwng_state, screen_update_superwng)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprgolf.c b/src/mame/drivers/suprgolf.c
index 9a84c6d586e..24509cfce8a 100644
--- a/src/mame/drivers/suprgolf.c
+++ b/src/mame/drivers/suprgolf.c
@@ -68,6 +68,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(suprgolf_state::get_tile_info)
@@ -94,9 +95,8 @@ void suprgolf_state::video_start()
m_tilemap->set_transparent_pen(15);
}
-static SCREEN_UPDATE_IND16( suprgolf )
+UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- suprgolf_state *state = screen.machine().driver_data<suprgolf_state>();
int x,y,count,color;
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -107,7 +107,7 @@ static SCREEN_UPDATE_IND16( suprgolf )
{
for(x=0;x<512;x++)
{
- color = state->m_bg_fb[count];
+ color = m_bg_fb[count];
if(x <= cliprect.max_x && y <= cliprect.max_y)
bitmap.pix16(y, x) = screen.machine().pens[(color & 0x7ff)];
@@ -124,9 +124,9 @@ static SCREEN_UPDATE_IND16( suprgolf )
{
for(x=0;x<512;x++)
{
- color = state->m_fg_fb[count];
+ color = m_fg_fb[count];
- if(((state->m_fg_fb[count] & 0x0f) != 0x0f) && (x <= cliprect.max_x && y <= cliprect.max_y))
+ if(((m_fg_fb[count] & 0x0f) != 0x0f) && (x <= cliprect.max_x && y <= cliprect.max_y))
bitmap.pix16(y, x) = screen.machine().pens[(color & 0x7ff)];
count++;
@@ -134,7 +134,7 @@ static SCREEN_UPDATE_IND16( suprgolf )
}
}
- state->m_tilemap->draw(bitmap, cliprect, 0,0);
+ m_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -528,7 +528,7 @@ static MACHINE_CONFIG_START( suprgolf, suprgolf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
- MCFG_SCREEN_UPDATE_STATIC(suprgolf)
+ MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update_suprgolf)
MCFG_GFXDECODE(suprgolf)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/suprloco.c b/src/mame/drivers/suprloco.c
index a40632767d7..2ac9fb7e1bf 100644
--- a/src/mame/drivers/suprloco.c
+++ b/src/mame/drivers/suprloco.c
@@ -183,7 +183,7 @@ static MACHINE_CONFIG_START( suprloco, suprloco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(suprloco)
+ MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update_suprloco)
MCFG_GFXDECODE(suprloco)
MCFG_PALETTE_LENGTH(512+256)
diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c
index 8895d3aa05b..e21abd12a59 100644
--- a/src/mame/drivers/suprnova.c
+++ b/src/mame/drivers/suprnova.c
@@ -777,8 +777,8 @@ static MACHINE_CONFIG_START( skns, skns_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(340,262)
MCFG_SCREEN_VISIBLE_AREA(0,319,0,239)
- MCFG_SCREEN_UPDATE_STATIC(skns)
- MCFG_SCREEN_VBLANK_STATIC(skns)
+ MCFG_SCREEN_UPDATE_DRIVER(skns_state, screen_update_skns)
+ MCFG_SCREEN_VBLANK_DRIVER(skns_state, screen_eof_skns)
MCFG_PALETTE_LENGTH(32768)
MCFG_GFXDECODE(skns_bg)
diff --git a/src/mame/drivers/suprridr.c b/src/mame/drivers/suprridr.c
index 6f05f011564..9d9c1811d6e 100644
--- a/src/mame/drivers/suprridr.c
+++ b/src/mame/drivers/suprridr.c
@@ -372,7 +372,7 @@ static MACHINE_CONFIG_START( suprridr, suprridr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(suprridr)
+ MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update_suprridr)
MCFG_GFXDECODE(suprridr)
MCFG_PALETTE_LENGTH(96)
diff --git a/src/mame/drivers/suprslam.c b/src/mame/drivers/suprslam.c
index f548dd1e7e2..fb939269312 100644
--- a/src/mame/drivers/suprslam.c
+++ b/src/mame/drivers/suprslam.c
@@ -332,7 +332,7 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2300) /* hand-tuned */)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(suprslam)
+ MCFG_SCREEN_UPDATE_DRIVER(suprslam_state, screen_update_suprslam)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/surpratk.c b/src/mame/drivers/surpratk.c
index 2a31a76d128..fff5ee3b484 100644
--- a/src/mame/drivers/surpratk.c
+++ b/src/mame/drivers/surpratk.c
@@ -241,7 +241,7 @@ static MACHINE_CONFIG_START( surpratk, surpratk_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(surpratk)
+ MCFG_SCREEN_UPDATE_DRIVER(surpratk_state, screen_update_surpratk)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c
index f24a73e730f..d104083d158 100644
--- a/src/mame/drivers/system1.c
+++ b/src/mame/drivers/system1.c
@@ -2163,7 +2163,7 @@ static MACHINE_CONFIG_START( sys1ppi, system1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 260, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(system1)
+ MCFG_SCREEN_UPDATE_DRIVER(system1_state, screen_update_system1)
MCFG_GFXDECODE(system1)
MCFG_PALETTE_LENGTH(2048)
@@ -2252,7 +2252,7 @@ static MACHINE_CONFIG_DERIVED( sys2, sys1ppi )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(system1_state,system2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(system2)
+ MCFG_SCREEN_UPDATE_DRIVER(system1_state, screen_update_system2)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sys2m, sys2 )
@@ -2264,7 +2264,7 @@ static MACHINE_CONFIG_DERIVED( sys2row, sys2 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(system2_rowscroll)
+ MCFG_SCREEN_UPDATE_DRIVER(system1_state, screen_update_system2_rowscroll)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sys2rowm, sys2row )
diff --git a/src/mame/drivers/system16.c b/src/mame/drivers/system16.c
index 5892d8570a2..c1316297634 100644
--- a/src/mame/drivers/system16.c
+++ b/src/mame/drivers/system16.c
@@ -2027,7 +2027,7 @@ static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(system16)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_GFXDECODE(sys16)
MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
@@ -2108,7 +2108,7 @@ static MACHINE_CONFIG_DERIVED( shinobib, system16 )
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 )
@@ -2123,7 +2123,7 @@ static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 )
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
MACHINE_CONFIG_END
@@ -2140,7 +2140,7 @@ static MACHINE_CONFIG_DERIVED( passsht4b, system16_7759 )
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg_passht4b )
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wb3bb, system16 )
@@ -2156,7 +2156,7 @@ static MACHINE_CONFIG_DERIVED( wb3bb, system16 )
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
MACHINE_CONFIG_END
@@ -2174,7 +2174,7 @@ static MACHINE_CONFIG_START( goldnaxeb1, segas1x_bootleg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(system16)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_GFXDECODE(sys16)
MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
@@ -2307,7 +2307,7 @@ static MACHINE_CONFIG_START( system18, segas1x_bootleg_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(system18old)
+ MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
MCFG_GFXDECODE(sys16)
MCFG_PALETTE_LENGTH((2048+2048)*SHADOW_COLORS_MULTIPLIER) // 64 extra colours for vdp (but we use 2048 so shadow mask works)
diff --git a/src/mame/drivers/tagteam.c b/src/mame/drivers/tagteam.c
index d62fc9b3c11..2a8465d707d 100644
--- a/src/mame/drivers/tagteam.c
+++ b/src/mame/drivers/tagteam.c
@@ -221,7 +221,7 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tagteam)
+ MCFG_SCREEN_UPDATE_DRIVER(tagteam_state, screen_update_tagteam)
MCFG_GFXDECODE(tagteam)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/tail2nos.c b/src/mame/drivers/tail2nos.c
index 42398978087..5e042b2fc6a 100644
--- a/src/mame/drivers/tail2nos.c
+++ b/src/mame/drivers/tail2nos.c
@@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tail2nos)
+ MCFG_SCREEN_UPDATE_DRIVER(tail2nos_state, screen_update_tail2nos)
MCFG_GFXDECODE(tail2nos)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/taito_b.c b/src/mame/drivers/taito_b.c
index eae7bfb4f24..2b8201885e4 100644
--- a/src/mame/drivers/taito_b.c
+++ b/src/mame/drivers/taito_b.c
@@ -2056,8 +2056,8 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2100,8 +2100,8 @@ static MACHINE_CONFIG_START( ashura, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2144,8 +2144,8 @@ static MACHINE_CONFIG_START( crimec, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2188,8 +2188,8 @@ static MACHINE_CONFIG_START( tetrist, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2231,8 +2231,8 @@ static MACHINE_CONFIG_START( tetrista, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2275,8 +2275,8 @@ static MACHINE_CONFIG_START( hitice, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2324,8 +2324,8 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(rambo3)
MCFG_PALETTE_LENGTH(4096)
@@ -2368,8 +2368,8 @@ static MACHINE_CONFIG_START( rambo3, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2415,8 +2415,8 @@ static MACHINE_CONFIG_START( pbobble, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2463,8 +2463,8 @@ static MACHINE_CONFIG_START( spacedx, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2507,8 +2507,8 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2555,8 +2555,8 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2599,8 +2599,8 @@ static MACHINE_CONFIG_START( viofight, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2646,8 +2646,8 @@ static MACHINE_CONFIG_START( masterw, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2691,8 +2691,8 @@ static MACHINE_CONFIG_START( silentd, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2735,8 +2735,8 @@ static MACHINE_CONFIG_START( selfeena, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2788,8 +2788,8 @@ static MACHINE_CONFIG_START( ryujin, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2839,8 +2839,8 @@ static MACHINE_CONFIG_START( sbm, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2888,14 +2888,14 @@ static MACHINE_CONFIG_START( realpunc, taitob_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_VBLANK_STATIC(taitob)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob)
+ MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
MCFG_VIDEO_START_OVERRIDE(taitob_state,realpunc)
- MCFG_SCREEN_UPDATE_STATIC(realpunc)
+ MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_realpunc)
MCFG_HD63484_ADD("hd63484", realpunc_hd63484_intf)
diff --git a/src/mame/drivers/taito_f2.c b/src/mame/drivers/taito_f2.c
index a3bf1192b49..34d855a9624 100644
--- a/src/mame/drivers/taito_f2.c
+++ b/src/mame/drivers/taito_f2.c
@@ -3053,8 +3053,8 @@ static MACHINE_CONFIG_START( taito_f2, taitof2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitof2)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE(taitof2)
MCFG_PALETTE_LENGTH(4096)
@@ -3099,7 +3099,7 @@ static MACHINE_CONFIG_DERIVED( finalb, taito_f2_tc0220ioc )
MCFG_GFXDECODE(finalb)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_finalb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3116,8 +3116,8 @@ static MACHINE_CONFIG_DERIVED( dondokod, taito_f2_tc0220ioc )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_dondokod)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0280grd", taitof2_tc0280grd_intf)
@@ -3134,7 +3134,7 @@ static MACHINE_CONFIG_DERIVED( megab, taito_f2_tc0220ioc )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3151,8 +3151,8 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc )
MCFG_GFXDECODE(thundfox)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_thundfox)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_thundfox)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_thundfox)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_thundfox)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_thundfox)
MCFG_TC0100SCN_ADD("tc0100scn_1", thundfox_tc0100scn_intf_1)
MCFG_TC0100SCN_ADD("tc0100scn_2", thundfox_tc0100scn_intf_2)
@@ -3170,7 +3170,7 @@ static MACHINE_CONFIG_DERIVED( cameltry, taito_f2_tc0220ioc )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_dondokod)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0280grd", taitof2_tc0280grd_intf)
@@ -3187,7 +3187,7 @@ static MACHINE_CONFIG_DERIVED( qtorimon, taito_f2_tc0220ioc )
/* video hardware */
MCFG_GFXDECODE(yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3203,8 +3203,8 @@ static MACHINE_CONFIG_DERIVED( liquidk, taito_f2_tc0220ioc )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3220,7 +3220,7 @@ static MACHINE_CONFIG_DERIVED( quizhq, taito_f2 )
/* video hardware */
MCFG_GFXDECODE(yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3236,8 +3236,8 @@ static MACHINE_CONFIG_DERIVED( ssi, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_ssi)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_ssi)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_thundfox) // buffer_delayed_thundfox instead of buffer_delayed fixes the butterfly powerup
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_ssi)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_thundfox)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3252,8 +3252,8 @@ static MACHINE_CONFIG_DERIVED( gunfront, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_gunfront)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3269,7 +3269,7 @@ static MACHINE_CONFIG_DERIVED( growl, taito_f2 )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_growl)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3300,8 +3300,8 @@ static MACHINE_CONFIG_DERIVED( footchmp, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_footchmp)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_full_buffer_delayed)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_full_buffer_delayed)
MCFG_TC0480SCP_ADD("tc0480scp", footchmp_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3324,8 +3324,8 @@ static MACHINE_CONFIG_DERIVED( hthero, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_hthero)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_full_buffer_delayed)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_full_buffer_delayed)
MCFG_TC0360PRI_ADD("tc0360pri")
MCFG_TC0480SCP_ADD("tc0480scp", hthero_tc0480scp_intf)
@@ -3341,7 +3341,7 @@ static MACHINE_CONFIG_DERIVED( koshien, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_koshien)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", koshien_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3358,7 +3358,7 @@ static MACHINE_CONFIG_DERIVED( yuyugogo, taito_f2_tc0510nio )
MCFG_GFXDECODE(yuyugogo)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_yesnoj)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_yesnoj)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3373,7 +3373,7 @@ static MACHINE_CONFIG_DERIVED( ninjak, taito_f2 )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_ninjak)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3389,7 +3389,7 @@ static MACHINE_CONFIG_DERIVED( solfigtr, taito_f2 )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_solfigtr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", solfigtr_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3404,7 +3404,7 @@ static MACHINE_CONFIG_DERIVED( qzquest, taito_f2_tc0510nio )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3420,7 +3420,7 @@ static MACHINE_CONFIG_DERIVED( pulirula, taito_f2_tc0510nio )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_pulirula)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf)
@@ -3439,7 +3439,7 @@ static MACHINE_CONFIG_DERIVED( metalb, taito_f2_tc0510nio )
MCFG_PALETTE_LENGTH(8192)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_metalb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_metalb)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_metalb)
MCFG_TC0480SCP_ADD("tc0480scp", metalb_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3455,7 +3455,7 @@ static MACHINE_CONFIG_DERIVED( qzchikyu, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_qzchikyu)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_qzchikyu)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_qzchikyu)
MCFG_TC0100SCN_ADD("tc0100scn", qzchikyu_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3471,7 +3471,7 @@ static MACHINE_CONFIG_DERIVED( yesnoj, taito_f2 )
MCFG_GFXDECODE(yuyugogo)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_yesnoj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_yesnoj)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_yesnoj)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3487,7 +3487,7 @@ static MACHINE_CONFIG_DERIVED( deadconx, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_deadconx)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx)
MCFG_TC0480SCP_ADD("tc0480scp", deadconx_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3504,7 +3504,7 @@ static MACHINE_CONFIG_DERIVED( deadconxj, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_deadconxj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx)
MCFG_TC0480SCP_ADD("tc0480scp", deadconxj_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3520,7 +3520,7 @@ static MACHINE_CONFIG_DERIVED( dinorex, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_dinorex)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3536,7 +3536,7 @@ static MACHINE_CONFIG_DERIVED( qjinsei, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3552,7 +3552,7 @@ static MACHINE_CONFIG_DERIVED( qcrayon, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3568,7 +3568,7 @@ static MACHINE_CONFIG_DERIVED( qcrayon2, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3585,7 +3585,7 @@ static MACHINE_CONFIG_DERIVED( driftout, taito_f2_tc0510nio )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_driftout)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf)
@@ -3613,8 +3613,8 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
MCFG_PALETTE_LENGTH(4096)
@@ -3662,8 +3662,8 @@ static MACHINE_CONFIG_START( driveout, taitof2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
- MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz)
+ MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c
index fb6f96517dd..4253a9d1596 100644
--- a/src/mame/drivers/taito_f3.c
+++ b/src/mame/drivers/taito_f3.c
@@ -441,8 +441,8 @@ static MACHINE_CONFIG_START( f3, taito_f3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(624) /* 58.97 Hz, 624us vblank time */)
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+232-1)
- MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_VBLANK_STATIC(f3)
+ MCFG_SCREEN_UPDATE_DRIVER(taito_f3_state, screen_update_f3)
+ MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3)
MCFG_GFXDECODE(taito_f3)
MCFG_PALETTE_LENGTH(0x2000)
@@ -535,8 +535,8 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(624) /* 58.97 Hz, 624us vblank time */)
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 31, 31+224-1)
- MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_VBLANK_STATIC(f3)
+ MCFG_SCREEN_UPDATE_DRIVER(taito_f3_state, screen_update_f3)
+ MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3)
MCFG_GFXDECODE(bubsympb)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/taito_h.c b/src/mame/drivers/taito_h.c
index 5da35666620..4436c254419 100644
--- a/src/mame/drivers/taito_h.c
+++ b/src/mame/drivers/taito_h.c
@@ -582,7 +582,7 @@ static MACHINE_CONFIG_START( syvalion, taitoh_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 28*16-1)
- MCFG_SCREEN_UPDATE_STATIC(syvalion)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_syvalion)
MCFG_GFXDECODE(syvalion)
MCFG_PALETTE_LENGTH(33*16)
@@ -623,7 +623,7 @@ static MACHINE_CONFIG_START( recordbr, taitoh_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 21*16-1, 2*16, 17*16-1)
- MCFG_SCREEN_UPDATE_STATIC(recordbr)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_recordbr)
MCFG_GFXDECODE(recordbr)
MCFG_PALETTE_LENGTH(32*16)
@@ -664,7 +664,7 @@ static MACHINE_CONFIG_START( dleague, taitoh_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 21*16-1, 2*16, 17*16-1)
- MCFG_SCREEN_UPDATE_STATIC(dleague)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_dleague)
MCFG_GFXDECODE(dleague)
MCFG_PALETTE_LENGTH(33*16)
diff --git a/src/mame/drivers/taito_l.c b/src/mame/drivers/taito_l.c
index d5319b3b974..77fc0f495a8 100644
--- a/src/mame/drivers/taito_l.c
+++ b/src/mame/drivers/taito_l.c
@@ -1864,8 +1864,8 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_VBLANK_STATIC(taitol)
+ MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
+ MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
@@ -1956,8 +1956,8 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_VBLANK_STATIC(taitol)
+ MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
+ MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
@@ -2002,8 +2002,8 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_VBLANK_STATIC(taitol)
+ MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
+ MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE(1)
MCFG_PALETTE_LENGTH(256)
@@ -2095,8 +2095,8 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_VBLANK_STATIC(taitol)
+ MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol)
+ MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/taito_o.c b/src/mame/drivers/taito_o.c
index 94fd3227dba..7f875f9421c 100644
--- a/src/mame/drivers/taito_o.c
+++ b/src/mame/drivers/taito_o.c
@@ -261,7 +261,7 @@ static MACHINE_CONFIG_START( parentj, taitoo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 31*16-1)
- MCFG_SCREEN_UPDATE_STATIC(parentj)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoo_state, screen_update_parentj)
MCFG_GFXDECODE(parentj)
MCFG_PALETTE_LENGTH(33*16)
diff --git a/src/mame/drivers/taito_x.c b/src/mame/drivers/taito_x.c
index 44c25e3a592..c3fabe84d78 100644
--- a/src/mame/drivers/taito_x.c
+++ b/src/mame/drivers/taito_x.c
@@ -847,7 +847,7 @@ static MACHINE_CONFIG_START( superman, taitox_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
+ MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -889,7 +889,7 @@ static MACHINE_CONFIG_START( daisenpu, taitox_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
+ MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -929,7 +929,7 @@ static MACHINE_CONFIG_START( gigandes, taitox_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
+ MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -971,7 +971,7 @@ static MACHINE_CONFIG_START( ballbros, taitox_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
+ MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE(ballbros)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/taito_z.c b/src/mame/drivers/taito_z.c
index 11ce7b4fb99..3692e1e2094 100644
--- a/src/mame/drivers/taito_z.c
+++ b/src/mame/drivers/taito_z.c
@@ -3096,7 +3096,7 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(contcirc)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_contcirc)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3158,7 +3158,7 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(chasehq)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_chasehq)
MCFG_GFXDECODE(chasehq)
MCFG_PALETTE_LENGTH(4096)
@@ -3222,7 +3222,7 @@ static MACHINE_CONFIG_START( enforce, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(contcirc)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_contcirc)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3282,7 +3282,7 @@ static MACHINE_CONFIG_START( bshark, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bshark)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_bshark)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3353,7 +3353,7 @@ static MACHINE_CONFIG_START( sci, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(sci)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_sci)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3415,7 +3415,7 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(chasehq)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_chasehq)
MCFG_GFXDECODE(chasehq)
MCFG_PALETTE_LENGTH(4096)
@@ -3479,7 +3479,7 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(aquajack)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_aquajack)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3540,7 +3540,7 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(spacegun)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_spacegun)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3601,7 +3601,7 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(dblaxle)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_dblaxle)
MCFG_GFXDECODE(dblaxle)
MCFG_PALETTE_LENGTH(4096)
@@ -3663,7 +3663,7 @@ static MACHINE_CONFIG_START( racingb, taitoz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(racingb)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_racingb)
MCFG_GFXDECODE(dblaxle)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/taitoair.c b/src/mame/drivers/taitoair.c
index 9f3a252f02b..a043b9dbd3d 100644
--- a/src/mame/drivers/taitoair.c
+++ b/src/mame/drivers/taitoair.c
@@ -730,7 +730,7 @@ static MACHINE_CONFIG_START( airsys, taitoair_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 28*16-1)
- MCFG_SCREEN_UPDATE_STATIC(taitoair)
+ MCFG_SCREEN_UPDATE_DRIVER(taitoair_state, screen_update_taitoair)
MCFG_GFXDECODE(airsys)
MCFG_PALETTE_LENGTH(512*16+512*16)
diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c
index 1f74c22e415..41bf00b5a3d 100644
--- a/src/mame/drivers/taitojc.c
+++ b/src/mame/drivers/taitojc.c
@@ -1263,7 +1263,7 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_SCREEN_UPDATE_STATIC(taitojc)
+ MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_taitojc)
MCFG_PALETTE_LENGTH(32768)
@@ -1279,7 +1279,7 @@ static MACHINE_CONFIG_DERIVED( dendego, taitojc )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(dendego)
+ MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_dendego)
/* sound hardware */
MCFG_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0)
diff --git a/src/mame/drivers/taitopjc.c b/src/mame/drivers/taitopjc.c
index f90cd3c7916..d3a0aca30a9 100644
--- a/src/mame/drivers/taitopjc.c
+++ b/src/mame/drivers/taitopjc.c
@@ -83,6 +83,7 @@ public:
DECLARE_WRITE8_MEMBER(taitopjc_tlcs900_to1);
DECLARE_WRITE8_MEMBER(taitopjc_tlcs900_to3);
virtual void video_start();
+ UINT32 screen_update_taitopjc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
void taitopjc_state::video_start()
@@ -90,7 +91,7 @@ void taitopjc_state::video_start()
}
-static SCREEN_UPDATE_RGB32( taitopjc )
+UINT32 taitopjc_state::screen_update_taitopjc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
{
UINT8 *s = (UINT8*)jc_char_ram;
@@ -432,7 +433,7 @@ static MACHINE_CONFIG_START( taitopjc, taitopjc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 767)
- MCFG_SCREEN_UPDATE_STATIC(taitopjc)
+ MCFG_SCREEN_UPDATE_DRIVER(taitopjc_state, screen_update_taitopjc)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitosj.c b/src/mame/drivers/taitosj.c
index d5e982fa9fc..52d5ed727bd 100644
--- a/src/mame/drivers/taitosj.c
+++ b/src/mame/drivers/taitosj.c
@@ -1808,7 +1808,7 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taitosj)
+ MCFG_SCREEN_UPDATE_DRIVER(taitosj_state, screen_update_taitosj)
MCFG_GFXDECODE(taitosj)
MCFG_PALETTE_LENGTH(64)
@@ -1859,7 +1859,7 @@ static MACHINE_CONFIG_DERIVED( kikstart, mcu )
MCFG_CPU_PROGRAM_MAP(kikstart_main_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(kikstart)
+ MCFG_SCREEN_UPDATE_DRIVER(taitosj_state, screen_update_kikstart)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitotz.c b/src/mame/drivers/taitotz.c
index 784764b70cf..e2468d4bef1 100644
--- a/src/mame/drivers/taitotz.c
+++ b/src/mame/drivers/taitotz.c
@@ -524,6 +524,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_taitotz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -1279,16 +1280,15 @@ void taitotz_renderer::render_displaylist(running_machine &machine, const rectan
wait("render_polygons");
}
-static SCREEN_UPDATE_RGB32( taitotz )
+UINT32 taitotz_state::screen_update_taitotz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- taitotz_state *state = screen.machine().driver_data<taitotz_state>();
bitmap.fill(0x000000, cliprect);
- state->m_renderer->set_fb(&bitmap);
- state->m_renderer->render_displaylist(screen.machine(), cliprect);
+ m_renderer->set_fb(&bitmap);
+ m_renderer->render_displaylist(screen.machine(), cliprect);
- UINT16 *screen_src = (UINT16*)&state->m_screen_ram[state->m_scr_base];
+ UINT16 *screen_src = (UINT16*)&m_screen_ram[m_scr_base];
for (int j=0; j < 384; j++)
{
@@ -2502,7 +2502,7 @@ static MACHINE_CONFIG_START( taitotz, taitotz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_STATIC(taitotz)
+ MCFG_SCREEN_UPDATE_DRIVER(taitotz_state, screen_update_taitotz)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 1c1f7e246f8..590d7b447c9 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -82,10 +82,11 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
#if !ENABLE_VGA
-static SCREEN_UPDATE_RGB32( taitowlf )
+UINT32 taitowlf_state::screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y,count;
const UINT8 *blit_ram = screen.machine().root_device().memregion("user5")->base();
@@ -656,7 +657,7 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_PALETTE_LENGTH(256)
- MCFG_SCREEN_UPDATE_STATIC(taitowlf)
+ MCFG_SCREEN_UPDATE_DRIVER(taitowlf_state, screen_update_taitowlf)
#endif
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tank8.c b/src/mame/drivers/tank8.c
index 76fe1dc8433..d5ea74f7388 100644
--- a/src/mame/drivers/tank8.c
+++ b/src/mame/drivers/tank8.c
@@ -345,8 +345,8 @@ static MACHINE_CONFIG_START( tank8, tank8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(30 * 1000000 / 15681))
MCFG_SCREEN_SIZE(512, 524)
MCFG_SCREEN_VISIBLE_AREA(16, 495, 0, 463)
- MCFG_SCREEN_UPDATE_STATIC(tank8)
- MCFG_SCREEN_VBLANK_STATIC(tank8)
+ MCFG_SCREEN_UPDATE_DRIVER(tank8_state, screen_update_tank8)
+ MCFG_SCREEN_VBLANK_DRIVER(tank8_state, screen_eof_tank8)
MCFG_GFXDECODE(tank8)
MCFG_PALETTE_LENGTH(20)
diff --git a/src/mame/drivers/tankbatt.c b/src/mame/drivers/tankbatt.c
index c314b1d0525..318fe2b9daf 100644
--- a/src/mame/drivers/tankbatt.c
+++ b/src/mame/drivers/tankbatt.c
@@ -295,7 +295,7 @@ static MACHINE_CONFIG_START( tankbatt, tankbatt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tankbatt)
+ MCFG_SCREEN_UPDATE_DRIVER(tankbatt_state, screen_update_tankbatt)
MCFG_GFXDECODE(tankbatt)
MCFG_PALETTE_LENGTH(256*2)
diff --git a/src/mame/drivers/tankbust.c b/src/mame/drivers/tankbust.c
index 101faf7f6dc..e3d6bce417c 100644
--- a/src/mame/drivers/tankbust.c
+++ b/src/mame/drivers/tankbust.c
@@ -347,7 +347,7 @@ static MACHINE_CONFIG_START( tankbust, tankbust_state )
MCFG_SCREEN_SIZE ( 64*8, 32*8 )
MCFG_SCREEN_VISIBLE_AREA ( 16*8, 56*8-1, 1*8, 31*8-1 )
// MCFG_SCREEN_VISIBLE_AREA ( 0*8, 64*8-1, 1*8, 31*8-1 )
- MCFG_SCREEN_UPDATE_STATIC ( tankbust )
+ MCFG_SCREEN_UPDATE_DRIVER(tankbust_state, screen_update_tankbust)
MCFG_GFXDECODE( tankbust )
diff --git a/src/mame/drivers/taotaido.c b/src/mame/drivers/taotaido.c
index e7922d9d389..55e01e43aff 100644
--- a/src/mame/drivers/taotaido.c
+++ b/src/mame/drivers/taotaido.c
@@ -346,8 +346,8 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taotaido)
- MCFG_SCREEN_VBLANK_STATIC( taotaido )
+ MCFG_SCREEN_UPDATE_DRIVER(taotaido_state, screen_update_taotaido)
+ MCFG_SCREEN_VBLANK_DRIVER(taotaido_state, screen_eof_taotaido)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/targeth.c b/src/mame/drivers/targeth.c
index ff4cb679b41..621e3c44443 100644
--- a/src/mame/drivers/targeth.c
+++ b/src/mame/drivers/targeth.c
@@ -184,7 +184,7 @@ static MACHINE_CONFIG_START( targeth, targeth_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*16, 32*16) /* 1024x512 */
MCFG_SCREEN_VISIBLE_AREA(0, 24*16-1, 16, 16*16-1) /* 400x240 */
- MCFG_SCREEN_UPDATE_STATIC(targeth)
+ MCFG_SCREEN_UPDATE_DRIVER(targeth_state, screen_update_targeth)
MCFG_GFXDECODE(0x080000)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tasman.c b/src/mame/drivers/tasman.c
index 00a5e3c5c68..0720280187b 100644
--- a/src/mame/drivers/tasman.c
+++ b/src/mame/drivers/tasman.c
@@ -36,6 +36,7 @@ public:
DECLARE_WRITE8_MEMBER(kongambl_ff_w);
DECLARE_DRIVER_INIT(kingtut);
DECLARE_VIDEO_START(kongambl);
+ UINT32 screen_update_kongambl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -54,10 +55,9 @@ VIDEO_START_MEMBER(kongambl_state,kongambl)
#endif
}
-static SCREEN_UPDATE_IND16(kongambl)
+UINT32 kongambl_state::screen_update_kongambl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
#if CUSTOM_DRAW
- kongambl_state *state = screen.machine().driver_data<kongambl_state>();
gfx_element *gfx = screen.machine().gfx[0];
UINT32 count;
@@ -67,7 +67,7 @@ static SCREEN_UPDATE_IND16(kongambl)
{
for (int x=0;x<128;x++)
{
- UINT32 tile = state->m_vram[count] & 0xffff;
+ UINT32 tile = m_vram[count] & 0xffff;
if(screen.machine().primary_screen->visible_area().contains(x*8, y*8))
drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8);
@@ -82,7 +82,7 @@ static SCREEN_UPDATE_IND16(kongambl)
{
for (int x=0;x<128;x++)
{
- UINT32 tile = state->m_vram[count] & 0xffff;
+ UINT32 tile = m_vram[count] & 0xffff;
if(screen.machine().primary_screen->visible_area().contains(x*8, y*8))
drawgfx_transpen(bitmap,cliprect,gfx,tile,0,0,0,x*8,y*8,0);
@@ -607,7 +607,7 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(96*8, 64*8+16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 80*8-1, 0*8, 64*8-1)
- MCFG_SCREEN_UPDATE_STATIC(kongambl)
+ MCFG_SCREEN_UPDATE_DRIVER(kongambl_state, screen_update_kongambl)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/tatsumi.c b/src/mame/drivers/tatsumi.c
index 18dd5213dce..1172c37823f 100644
--- a/src/mame/drivers/tatsumi.c
+++ b/src/mame/drivers/tatsumi.c
@@ -893,7 +893,7 @@ static MACHINE_CONFIG_START( apache3, tatsumi_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 280, 0, 240) // TODO: Hook up CRTC
- MCFG_SCREEN_UPDATE_STATIC(apache3)
+ MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_apache3)
MCFG_GFXDECODE(apache3)
MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
@@ -934,7 +934,7 @@ static MACHINE_CONFIG_START( roundup5, tatsumi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(roundup5)
+ MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_roundup5)
MCFG_GFXDECODE(roundup5)
MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
@@ -976,7 +976,7 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cyclwarr)
+ MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_cyclwarr)
MCFG_GFXDECODE(cyclwarr)
MCFG_PALETTE_LENGTH(8192 + 8192)
@@ -1018,7 +1018,7 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(bigfight)
+ MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_bigfight)
MCFG_GFXDECODE(cyclwarr)
MCFG_PALETTE_LENGTH(8192 + 8192)
diff --git a/src/mame/drivers/tattack.c b/src/mame/drivers/tattack.c
index 6ae2424485b..5b96ad4995a 100644
--- a/src/mame/drivers/tattack.c
+++ b/src/mame/drivers/tattack.c
@@ -37,6 +37,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_tattack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -58,11 +59,10 @@ TILE_GET_INFO_MEMBER(tattack_state::get_tile_info)
0);
}
-static SCREEN_UPDATE_IND16( tattack )
+UINT32 tattack_state::screen_update_tattack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tattack_state *state = screen.machine().driver_data<tattack_state>();
- state->m_tmap->mark_all_dirty();
- state->m_tmap->draw(bitmap, cliprect, 0,0);
+ m_tmap->mark_all_dirty();
+ m_tmap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( tattack, tattack_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tattack)
+ MCFG_SCREEN_UPDATE_DRIVER(tattack_state, screen_update_tattack)
MCFG_GFXDECODE(tattack)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/taxidriv.c b/src/mame/drivers/taxidriv.c
index 04893bada5a..17d022284ee 100644
--- a/src/mame/drivers/taxidriv.c
+++ b/src/mame/drivers/taxidriv.c
@@ -395,7 +395,7 @@ static MACHINE_CONFIG_START( taxidriv, taxidriv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 27*8-1)
- MCFG_SCREEN_UPDATE_STATIC(taxidriv)
+ MCFG_SCREEN_UPDATE_DRIVER(taxidriv_state, screen_update_taxidriv)
MCFG_GFXDECODE(taxidriv)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tbowl.c b/src/mame/drivers/tbowl.c
index 4d40cf8bab9..473cbfe4149 100644
--- a/src/mame/drivers/tbowl.c
+++ b/src/mame/drivers/tbowl.c
@@ -482,14 +482,14 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tbowl_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tbowl_state, screen_update_tbowl_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tbowl_right)
+ MCFG_SCREEN_UPDATE_DRIVER(tbowl_state, screen_update_tbowl_right)
diff --git a/src/mame/drivers/tceptor.c b/src/mame/drivers/tceptor.c
index b9adde8e153..81b0ce89e40 100644
--- a/src/mame/drivers/tceptor.c
+++ b/src/mame/drivers/tceptor.c
@@ -398,22 +398,22 @@ static MACHINE_CONFIG_START( tceptor, tceptor_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
- MCFG_SCREEN_UPDATE_STATIC(tceptor_2d)
+ MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_2d)
MCFG_SCREEN_ADD("3dleft", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
- MCFG_SCREEN_UPDATE_STATIC(tceptor_3d_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_3d_left)
MCFG_SCREEN_ADD("3dright", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
- MCFG_SCREEN_UPDATE_STATIC(tceptor_3d_right)
- MCFG_SCREEN_VBLANK_STATIC(tceptor)
+ MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_3d_right)
+ MCFG_SCREEN_VBLANK_DRIVER(tceptor_state, screen_eof_tceptor)
diff --git a/src/mame/drivers/tcl.c b/src/mame/drivers/tcl.c
index b7482bf984e..97a565a16e1 100644
--- a/src/mame/drivers/tcl.c
+++ b/src/mame/drivers/tcl.c
@@ -54,13 +54,14 @@ public:
DECLARE_DRIVER_INIT(tcl);
virtual void video_start();
+ UINT32 screen_update_tcl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
void tcl_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( tcl )
+UINT32 tcl_state::screen_update_tcl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -135,7 +136,7 @@ static MACHINE_CONFIG_START( tcl, tcl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tcl)
+ MCFG_SCREEN_UPDATE_DRIVER(tcl_state, screen_update_tcl)
MCFG_GFXDECODE(tcl)
MCFG_PALETTE_LENGTH(16*16)
diff --git a/src/mame/drivers/tecmo.c b/src/mame/drivers/tecmo.c
index 3961b8fb4f1..9010def04b9 100644
--- a/src/mame/drivers/tecmo.c
+++ b/src/mame/drivers/tecmo.c
@@ -644,7 +644,7 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tecmo)
+ MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
MCFG_GFXDECODE(tecmo)
MCFG_PALETTE_LENGTH(1024)
@@ -703,7 +703,7 @@ static MACHINE_CONFIG_START( backfirt, tecmo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tecmo)
+ MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
MCFG_GFXDECODE(tecmo)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tecmo16.c b/src/mame/drivers/tecmo16.c
index f5ae1357cbe..fa025813321 100644
--- a/src/mame/drivers/tecmo16.c
+++ b/src/mame/drivers/tecmo16.c
@@ -391,7 +391,7 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tecmo16)
+ MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16)
MCFG_GFXDECODE(tecmo16)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/tecmosys.c b/src/mame/drivers/tecmosys.c
index 79f9bd09a6d..171c5fa73c6 100644
--- a/src/mame/drivers/tecmosys.c
+++ b/src/mame/drivers/tecmosys.c
@@ -474,7 +474,7 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tecmosys)
+ MCFG_SCREEN_UPDATE_DRIVER(tecmosys_state, screen_update_tecmosys)
MCFG_PALETTE_LENGTH(0x4000+0x800)
diff --git a/src/mame/drivers/tehkanwc.c b/src/mame/drivers/tehkanwc.c
index 53dc391b3b4..548f99436b9 100644
--- a/src/mame/drivers/tehkanwc.c
+++ b/src/mame/drivers/tehkanwc.c
@@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tehkanwc)
+ MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update_tehkanwc)
MCFG_GFXDECODE(tehkanwc)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/terracre.c b/src/mame/drivers/terracre.c
index 6ca648baebd..4017d40c5fa 100644
--- a/src/mame/drivers/terracre.c
+++ b/src/mame/drivers/terracre.c
@@ -542,7 +542,7 @@ static MACHINE_CONFIG_START( amazon, terracre_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(amazon)
+ MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE(terracre)
MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
@@ -575,7 +575,7 @@ static MACHINE_CONFIG_START( ym3526, terracre_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(amazon)
+ MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE(terracre)
MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
@@ -608,7 +608,7 @@ static MACHINE_CONFIG_START( ym2203, terracre_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(amazon)
+ MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE(terracre)
MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
diff --git a/src/mame/drivers/tetrisp2.c b/src/mame/drivers/tetrisp2.c
index 7b9adf774ad..0ab6d1c40cd 100644
--- a/src/mame/drivers/tetrisp2.c
+++ b/src/mame/drivers/tetrisp2.c
@@ -1340,7 +1340,7 @@ static MACHINE_CONFIG_START( tetrisp2, tetrisp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(tetrisp2)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1371,7 +1371,7 @@ static MACHINE_CONFIG_START( nndmseal, tetrisp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xf0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(tetrisp2)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1401,7 +1401,7 @@ static MACHINE_CONFIG_START( rockn, tetrisp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(rockntread)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1432,7 +1432,7 @@ static MACHINE_CONFIG_START( rockn2, tetrisp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(rockntread)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1472,14 +1472,14 @@ static MACHINE_CONFIG_START( rocknms, tetrisp2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(rocknms_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rocknms_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(rocknms_right)
+ MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rocknms_right)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,rocknms)
@@ -1509,21 +1509,21 @@ static MACHINE_CONFIG_START( stepstag, stepstag_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x160, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(stepstag_left)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_left)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x160, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(stepstag_mid)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_mid)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x160, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE_STATIC(stepstag_right)
+ MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_right)
MCFG_PALETTE_LENGTH(0x8000) // 0x8000 * 3 needed I guess, but it hits an assert
diff --git a/src/mame/drivers/tgtpanic.c b/src/mame/drivers/tgtpanic.c
index be5182416ea..cfc29194bd5 100644
--- a/src/mame/drivers/tgtpanic.c
+++ b/src/mame/drivers/tgtpanic.c
@@ -23,6 +23,7 @@ public:
required_shared_ptr<UINT8> m_ram;
UINT8 m_color;
DECLARE_WRITE8_MEMBER(color_w);
+ UINT32 screen_update_tgtpanic(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -32,21 +33,20 @@ public:
*
*************************************/
-static SCREEN_UPDATE_RGB32( tgtpanic )
+UINT32 tgtpanic_state::screen_update_tgtpanic(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- tgtpanic_state *state = screen.machine().driver_data<tgtpanic_state>();
UINT32 colors[4];
UINT32 offs;
UINT32 x, y;
colors[0] = 0;
colors[1] = 0xffffffff;
- colors[2] = MAKE_RGB(pal1bit(state->m_color >> 2), pal1bit(state->m_color >> 1), pal1bit(state->m_color >> 0));
- colors[3] = MAKE_RGB(pal1bit(state->m_color >> 6), pal1bit(state->m_color >> 5), pal1bit(state->m_color >> 4));
+ colors[2] = MAKE_RGB(pal1bit(m_color >> 2), pal1bit(m_color >> 1), pal1bit(m_color >> 0));
+ colors[3] = MAKE_RGB(pal1bit(m_color >> 6), pal1bit(m_color >> 5), pal1bit(m_color >> 4));
for (offs = 0; offs < 0x2000; ++offs)
{
- UINT8 val = state->m_ram[offs];
+ UINT8 val = m_ram[offs];
y = (offs & 0x7f) << 1;
x = (offs >> 7) << 2;
@@ -142,7 +142,7 @@ static MACHINE_CONFIG_START( tgtpanic, tgtpanic_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* Unverified */
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 192 - 1, 0, 192 - 1)
- MCFG_SCREEN_UPDATE_STATIC(tgtpanic)
+ MCFG_SCREEN_UPDATE_DRIVER(tgtpanic_state, screen_update_tgtpanic)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thedeep.c b/src/mame/drivers/thedeep.c
index 3a921e0f9e1..4fb033be25c 100644
--- a/src/mame/drivers/thedeep.c
+++ b/src/mame/drivers/thedeep.c
@@ -468,7 +468,7 @@ static MACHINE_CONFIG_START( thedeep, thedeep_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x100, 0xf8)
MCFG_SCREEN_VISIBLE_AREA(0, 0x100-1, 0, 0xf8-1)
- MCFG_SCREEN_UPDATE_STATIC(thedeep)
+ MCFG_SCREEN_UPDATE_DRIVER(thedeep_state, screen_update_thedeep)
MCFG_GFXDECODE(thedeep)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/thepit.c b/src/mame/drivers/thepit.c
index ccc38c8e062..ba9265eb31c 100644
--- a/src/mame/drivers/thepit.c
+++ b/src/mame/drivers/thepit.c
@@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( thepit, thepit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(thepit)
+ MCFG_SCREEN_UPDATE_DRIVER(thepit_state, screen_update_thepit)
/* sound hardware */
diff --git a/src/mame/drivers/thief.c b/src/mame/drivers/thief.c
index c197f17f49d..f8d5f30e11d 100644
--- a/src/mame/drivers/thief.c
+++ b/src/mame/drivers/thief.c
@@ -447,7 +447,7 @@ static MACHINE_CONFIG_START( sharkatt, thief_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE_STATIC(thief)
+ MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
@@ -482,7 +482,7 @@ static MACHINE_CONFIG_START( thief, thief_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(thief)
+ MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
@@ -517,7 +517,7 @@ static MACHINE_CONFIG_START( natodef, thief_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(thief)
+ MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
diff --git a/src/mame/drivers/thoop2.c b/src/mame/drivers/thoop2.c
index 61492c96cbb..ee4f35e27f8 100644
--- a/src/mame/drivers/thoop2.c
+++ b/src/mame/drivers/thoop2.c
@@ -199,7 +199,7 @@ static MACHINE_CONFIG_START( thoop2, thoop2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(thoop2)
+ MCFG_SCREEN_UPDATE_DRIVER(thoop2_state, screen_update_thoop2)
MCFG_GFXDECODE(thoop2)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/thunderj.c b/src/mame/drivers/thunderj.c
index d4c5b32ecbc..fbe87f0dbe5 100644
--- a/src/mame/drivers/thunderj.c
+++ b/src/mame/drivers/thunderj.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( thunderj, thunderj_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a VAD chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(thunderj)
+ MCFG_SCREEN_UPDATE_DRIVER(thunderj_state, screen_update_thunderj)
MCFG_VIDEO_START_OVERRIDE(thunderj_state,thunderj)
diff --git a/src/mame/drivers/thunderx.c b/src/mame/drivers/thunderx.c
index 6615295592e..7ca009fd0a1 100644
--- a/src/mame/drivers/thunderx.c
+++ b/src/mame/drivers/thunderx.c
@@ -674,7 +674,7 @@ static MACHINE_CONFIG_START( scontra, thunderx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(scontra)
+ MCFG_SCREEN_UPDATE_DRIVER(thunderx_state, screen_update_scontra)
MCFG_PALETTE_LENGTH(1024)
@@ -717,7 +717,7 @@ static MACHINE_CONFIG_START( thunderx, thunderx_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(scontra)
+ MCFG_SCREEN_UPDATE_DRIVER(thunderx_state, screen_update_scontra)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tiamc1.c b/src/mame/drivers/tiamc1.c
index bb63512628c..1b8e56b35b0 100644
--- a/src/mame/drivers/tiamc1.c
+++ b/src/mame/drivers/tiamc1.c
@@ -233,7 +233,7 @@ static MACHINE_CONFIG_START( tiamc1, tiamc1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1600))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(tiamc1)
+ MCFG_SCREEN_UPDATE_DRIVER(tiamc1_state, screen_update_tiamc1)
MCFG_GFXDECODE(tiamc1)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c
index 25a7012ac17..af81d962a94 100644
--- a/src/mame/drivers/tigeroad.c
+++ b/src/mame/drivers/tigeroad.c
@@ -536,7 +536,7 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tigeroad)
+ MCFG_SCREEN_UPDATE_DRIVER(tigeroad_state, screen_update_tigeroad)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(tigeroad)
diff --git a/src/mame/drivers/timelimt.c b/src/mame/drivers/timelimt.c
index d28826cd056..a55630dff9f 100644
--- a/src/mame/drivers/timelimt.c
+++ b/src/mame/drivers/timelimt.c
@@ -245,7 +245,7 @@ static MACHINE_CONFIG_START( timelimt, timelimt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(timelimt)
+ MCFG_SCREEN_UPDATE_DRIVER(timelimt_state, screen_update_timelimt)
MCFG_GFXDECODE(timelimt)
MCFG_PALETTE_LENGTH(64+32)
diff --git a/src/mame/drivers/timeplt.c b/src/mame/drivers/timeplt.c
index 4b89fbe269b..e19acad6a45 100644
--- a/src/mame/drivers/timeplt.c
+++ b/src/mame/drivers/timeplt.c
@@ -480,7 +480,7 @@ static MACHINE_CONFIG_START( timeplt, timeplt_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(timeplt)
+ MCFG_SCREEN_UPDATE_DRIVER(timeplt_state, screen_update_timeplt)
MCFG_GFXDECODE(timeplt)
MCFG_PALETTE_LENGTH(32*4+64*4)
diff --git a/src/mame/drivers/timetrv.c b/src/mame/drivers/timetrv.c
index 4c54e7b8888..64c381353ce 100644
--- a/src/mame/drivers/timetrv.c
+++ b/src/mame/drivers/timetrv.c
@@ -42,6 +42,7 @@ public:
DECLARE_READ8_MEMBER(in_r);
DECLARE_READ8_MEMBER(ld_r);
virtual void video_start();
+ UINT32 screen_update_timetrv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -51,10 +52,9 @@ void timetrv_state::video_start()
}
-static SCREEN_UPDATE_RGB32( timetrv )
+UINT32 timetrv_state::screen_update_timetrv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- timetrv_state *state = screen.machine().driver_data<timetrv_state>();
- popmessage("%s%s",reinterpret_cast<char *>(state->m_led_vram_lo.target()),reinterpret_cast<char *>(state->m_led_vram_hi.target()));
+ popmessage("%s%s",reinterpret_cast<char *>(m_led_vram_lo.target()),reinterpret_cast<char *>(m_led_vram_hi.target()));
return 0;
}
@@ -159,7 +159,7 @@ static MACHINE_CONFIG_START( timetrv, timetrv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE_STATIC(timetrv)
+ MCFG_SCREEN_UPDATE_DRIVER(timetrv_state, screen_update_timetrv)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c
index e931fa46354..9ac49733637 100644
--- a/src/mame/drivers/tmaster.c
+++ b/src/mame/drivers/tmaster.c
@@ -183,6 +183,7 @@ public:
DECLARE_VIDEO_START(tmaster);
DECLARE_MACHINE_RESET(galgames);
DECLARE_VIDEO_START(galgames);
+ UINT32 screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -357,9 +358,8 @@ VIDEO_START_MEMBER(tmaster_state,galgames)
m_compute_addr = galgames_compute_addr;
}
-static SCREEN_UPDATE_IND16( tmaster )
+UINT32 tmaster_state::screen_update_tmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tmaster_state *state = screen.machine().driver_data<tmaster_state>();
int layers_ctrl = -1;
#ifdef MAME_DEBUG
@@ -375,8 +375,8 @@ static SCREEN_UPDATE_IND16( tmaster )
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- if (layers_ctrl & 1) copybitmap_trans(bitmap, state->m_bitmap[0][(state->m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
- if (layers_ctrl & 2) copybitmap_trans(bitmap, state->m_bitmap[1][(state->m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
+ if (layers_ctrl & 1) copybitmap_trans(bitmap, m_bitmap[0][(m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
+ if (layers_ctrl & 2) copybitmap_trans(bitmap, m_bitmap[1][(m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
return 0;
}
@@ -941,7 +941,7 @@ static MACHINE_CONFIG_START( tm3k, tmaster_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(tmaster)
+ MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
MCFG_PALETTE_LENGTH(0x1000)
@@ -998,7 +998,7 @@ static MACHINE_CONFIG_START( galgames, tmaster_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(tmaster)
+ MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
MCFG_PALETTE_LENGTH(0x1000) // only 0x100 used
diff --git a/src/mame/drivers/tmmjprd.c b/src/mame/drivers/tmmjprd.c
index 51eb5bd627e..648c28e25f4 100644
--- a/src/mame/drivers/tmmjprd.c
+++ b/src/mame/drivers/tmmjprd.c
@@ -67,6 +67,8 @@ public:
DECLARE_WRITE32_MEMBER(tmmjprd_brt_2_w);
DECLARE_WRITE32_MEMBER(tmmjprd_eeprom_write);
virtual void video_start();
+ UINT32 screen_update_tmmjprd_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_tmmjprd_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -289,51 +291,49 @@ static void ttmjprd_draw_tilemap(running_machine &machine, bitmap_ind16 &bitmap,
}
-static SCREEN_UPDATE_IND16( tmmjprd_left )
+UINT32 tmmjprd_state::screen_update_tmmjprd_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tmmjprd_state *state = screen.machine().driver_data<tmmjprd_state>();
- UINT8* gfxroms = state->memregion("gfx2")->base();
+ UINT8* gfxroms = memregion("gfx2")->base();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, state->m_tilemap_ram[3], state->m_tilemap_regs[3], gfxroms );
+ ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, m_tilemap_ram[3], m_tilemap_regs[3], gfxroms );
draw_sprites(screen.machine(),bitmap,cliprect, 1);
- ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, state->m_tilemap_ram[2], state->m_tilemap_regs[2], gfxroms );
+ ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, m_tilemap_ram[2], m_tilemap_regs[2], gfxroms );
/*
popmessage("%08x %08x %08x %08x %08x %08x",
- state->m_tilemap_regs[2][0],
- state->m_tilemap_regs[2][1],
- state->m_tilemap_regs[2][2],
- state->m_tilemap_regs[2][3],
- state->m_tilemap_regs[2][4],
- state->m_tilemap_regs[2][5]);
+ m_tilemap_regs[2][0],
+ m_tilemap_regs[2][1],
+ m_tilemap_regs[2][2],
+ m_tilemap_regs[2][3],
+ m_tilemap_regs[2][4],
+ m_tilemap_regs[2][5]);
*/
/*
popmessage("%08x %08x %08x %08x %08x %08x %08x",
- state->m_spriteregs[0],
- state->m_spriteregs[1],
- state->m_spriteregs[2],
- state->m_spriteregs[3],
- state->m_spriteregs[4],
- state->m_spriteregs[5],
- state->m_spriteregs[6]);
+ m_spriteregs[0],
+ m_spriteregs[1],
+ m_spriteregs[2],
+ m_spriteregs[3],
+ m_spriteregs[4],
+ m_spriteregs[5],
+ m_spriteregs[6]);
*/
return 0;
}
-static SCREEN_UPDATE_IND16( tmmjprd_right )
+UINT32 tmmjprd_state::screen_update_tmmjprd_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tmmjprd_state *state = screen.machine().driver_data<tmmjprd_state>();
- UINT8* gfxroms = state->memregion("gfx2")->base();
+ UINT8* gfxroms = memregion("gfx2")->base();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, state->m_tilemap_ram[1], state->m_tilemap_regs[1], gfxroms );
+ ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, m_tilemap_ram[1], m_tilemap_regs[1], gfxroms );
draw_sprites(screen.machine(),bitmap,cliprect, 0);
- ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, state->m_tilemap_ram[0], state->m_tilemap_regs[0], gfxroms );
+ ttmjprd_draw_tilemap( screen.machine(), bitmap, cliprect, m_tilemap_ram[0], m_tilemap_regs[0], gfxroms );
return 0;
}
@@ -770,7 +770,7 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state )
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
//MCFG_SCREEN_VISIBLE_AREA(0*8, 64*16-1, 0*8, 64*16-1)
- MCFG_SCREEN_UPDATE_STATIC(tmmjprd_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tmmjprd_state, screen_update_tmmjprd_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -778,7 +778,7 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state )
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
//MCFG_SCREEN_VISIBLE_AREA(0*8, 64*16-1, 0*8, 64*16-1)
- MCFG_SCREEN_UPDATE_STATIC(tmmjprd_right)
+ MCFG_SCREEN_UPDATE_DRIVER(tmmjprd_state, screen_update_tmmjprd_right)
/* sound hardware */
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index 3d6e984c815..3d9e01dd412 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -2269,7 +2269,7 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(mia)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia)
MCFG_PALETTE_LENGTH(1024)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -2310,7 +2310,7 @@ static MACHINE_CONFIG_START( mia, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(mia)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia)
MCFG_PALETTE_LENGTH(1024)
@@ -2363,7 +2363,7 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
//MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_VISIBLE_AREA(13*8-8, (64-13)*8-1+8, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(tmnt)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt)
// We see something strange in the left 8 pixels and the right 8 pixels, but it is same as real PCB.
MCFG_PALETTE_LENGTH(1024)
@@ -2415,7 +2415,7 @@ static MACHINE_CONFIG_START( punkshot, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(punkshot)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_punkshot)
MCFG_PALETTE_LENGTH(2048)
@@ -2456,7 +2456,7 @@ static MACHINE_CONFIG_START( lgtnfght, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(lgtnfght)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght)
MCFG_PALETTE_LENGTH(2048)
@@ -2503,8 +2503,8 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-15)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(lgtnfght)
- MCFG_SCREEN_VBLANK_STATIC( blswhstl )
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght)
+ MCFG_SCREEN_VBLANK_DRIVER(tmnt_state, screen_eof_blswhstl)
MCFG_PALETTE_LENGTH(2048)
@@ -2567,7 +2567,7 @@ static MACHINE_CONFIG_START( glfgreat, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(glfgreat)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat)
MCFG_GFXDECODE(glfgreat)
MCFG_PALETTE_LENGTH(2048)
@@ -2632,7 +2632,7 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(glfgreat)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat)
MCFG_GFXDECODE(glfgreat)
MCFG_PALETTE_LENGTH(2048)
@@ -2681,7 +2681,7 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(tmnt2)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2728,7 +2728,7 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(tmnt2)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2771,7 +2771,7 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(tmnt2)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2811,7 +2811,7 @@ static MACHINE_CONFIG_START( thndrx2, tmnt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(thndrx2)
+ MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_thndrx2)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/tmspoker.c b/src/mame/drivers/tmspoker.c
index 1c69ee2a22d..92604f68fac 100644
--- a/src/mame/drivers/tmspoker.c
+++ b/src/mame/drivers/tmspoker.c
@@ -232,6 +232,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_tmspoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -264,10 +265,9 @@ void tmspoker_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(tmspoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( tmspoker )
+UINT32 tmspoker_state::screen_update_tmspoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tmspoker_state *state = screen.machine().driver_data<tmspoker_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -583,7 +583,7 @@ static MACHINE_CONFIG_START( tmspoker, tmspoker_state )
MCFG_PALETTE_LENGTH(256)
- MCFG_SCREEN_UPDATE_STATIC(tmspoker)
+ MCFG_SCREEN_UPDATE_DRIVER(tmspoker_state, screen_update_tmspoker)
MCFG_MC6845_ADD("crtc", MC6845, MASTER_CLOCK/4, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/tnzs.c b/src/mame/drivers/tnzs.c
index cbcfeab1006..06a88b6f265 100644
--- a/src/mame/drivers/tnzs.c
+++ b/src/mame/drivers/tnzs.c
@@ -1639,8 +1639,8 @@ static MACHINE_CONFIG_START( arknoid2, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1680,8 +1680,8 @@ static MACHINE_CONFIG_START( drtoppel, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1724,8 +1724,8 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1764,8 +1764,8 @@ static MACHINE_CONFIG_START( insectx, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(insectx)
MCFG_PALETTE_LENGTH(512)
@@ -1803,8 +1803,8 @@ static MACHINE_CONFIG_START( kageki, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1852,8 +1852,8 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1911,8 +1911,8 @@ static MACHINE_CONFIG_START( jpopnics, tnzs_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_VBLANK_STATIC(tnzs)
+ MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
+ MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/toaplan1.c b/src/mame/drivers/toaplan1.c
index 24b7946dc98..eb6e5f3f8b7 100644
--- a/src/mame/drivers/toaplan1.c
+++ b/src/mame/drivers/toaplan1.c
@@ -1547,8 +1547,8 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(rallybik)
- MCFG_SCREEN_VBLANK_STATIC(rallybik)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_rallybik)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_rallybik)
MCFG_GFXDECODE(rallybik)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1584,8 +1584,8 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1621,8 +1621,8 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1658,8 +1658,8 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1699,8 +1699,8 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1734,8 +1734,8 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(samesame)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_samesame)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1771,8 +1771,8 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(outzone)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1806,8 +1806,8 @@ static MACHINE_CONFIG_START( vimana, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_VBLANK_STATIC(toaplan1)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE(vm)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index bb222689dc0..b16634f73fb 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -3045,8 +3045,8 @@ static MACHINE_CONFIG_START( tekipaki, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3086,8 +3086,8 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3176,8 +3176,8 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(dogyuun)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_dogyuun)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(t2dualvdp)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3220,8 +3220,8 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3257,8 +3257,8 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3294,8 +3294,8 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(truxton2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3349,8 +3349,8 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3390,8 +3390,8 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3471,8 +3471,8 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(truxton2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3508,8 +3508,8 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(fixeightbl)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3548,8 +3548,8 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* verified on pcb */
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3586,8 +3586,8 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(batsugun)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_batsugun)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(t2dualvdp)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3624,8 +3624,8 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3667,8 +3667,8 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3710,8 +3710,8 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3764,8 +3764,8 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_VBLANK_STATIC(toaplan2)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
+ MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3814,7 +3814,7 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(batrider)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_batrider)
MCFG_GFXDECODE(batrider)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3865,7 +3865,7 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(batrider)
+ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_batrider)
MCFG_GFXDECODE(batrider)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c
index a8efe3789ef..5bd29ccc6d9 100644
--- a/src/mame/drivers/toki.c
+++ b/src/mame/drivers/toki.c
@@ -431,7 +431,7 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu *
MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */
- MCFG_SCREEN_UPDATE_STATIC(toki)
+ MCFG_SCREEN_UPDATE_DRIVER(toki_state, screen_update_toki)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(toki)
@@ -460,7 +460,7 @@ static MACHINE_CONFIG_START( tokib, toki_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */
- MCFG_SCREEN_UPDATE_STATIC(tokib)
+ MCFG_SCREEN_UPDATE_DRIVER(toki_state, screen_update_tokib)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(tokib)
diff --git a/src/mame/drivers/toobin.c b/src/mame/drivers/toobin.c
index 099576096ed..a8dab47e9f7 100644
--- a/src/mame/drivers/toobin.c
+++ b/src/mame/drivers/toobin.c
@@ -237,7 +237,7 @@ static MACHINE_CONFIG_START( toobin, toobin_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384)
- MCFG_SCREEN_UPDATE_STATIC(toobin)
+ MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update_toobin)
MCFG_GFXDECODE(toobin)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/topspeed.c b/src/mame/drivers/topspeed.c
index 4d021fcdb6f..ca726e20ae3 100644
--- a/src/mame/drivers/topspeed.c
+++ b/src/mame/drivers/topspeed.c
@@ -769,7 +769,7 @@ static MACHINE_CONFIG_START( topspeed, topspeed_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(topspeed)
+ MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed)
MCFG_GFXDECODE(topspeed)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/toratora.c b/src/mame/drivers/toratora.c
index 613d1d99de4..4e9f95dc180 100644
--- a/src/mame/drivers/toratora.c
+++ b/src/mame/drivers/toratora.c
@@ -57,6 +57,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(sn2_ca2_u2_u3_w);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_toratora(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -79,18 +80,17 @@ WRITE_LINE_MEMBER(toratora_state::cb2_u3_w)
*
*************************************/
-static SCREEN_UPDATE_RGB32( toratora )
+UINT32 toratora_state::screen_update_toratora(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- toratora_state *state = screen.machine().driver_data<toratora_state>();
offs_t offs;
- for (offs = 0; offs < state->m_videoram.bytes(); offs++)
+ for (offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
UINT8 y = offs >> 5;
UINT8 x = offs << 3;
- UINT8 data = state->m_videoram[offs];
+ UINT8 data = m_videoram[offs];
for (i = 0; i < 8; i++)
{
@@ -102,11 +102,11 @@ static SCREEN_UPDATE_RGB32( toratora )
}
/* the video system clears as it writes out the pixels */
- if (state->m_clear_tv)
- state->m_videoram[offs] = 0;
+ if (m_clear_tv)
+ m_videoram[offs] = 0;
}
- state->m_clear_tv = 0;
+ m_clear_tv = 0;
return 0;
}
@@ -462,7 +462,7 @@ static MACHINE_CONFIG_START( toratora, toratora_state )
MCFG_SCREEN_VISIBLE_AREA(0,256-1,8,248-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_UPDATE_STATIC(toratora)
+ MCFG_SCREEN_UPDATE_DRIVER(toratora_state, screen_update_toratora)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/toypop.c b/src/mame/drivers/toypop.c
index 8181fd60618..9510cade6ba 100644
--- a/src/mame/drivers/toypop.c
+++ b/src/mame/drivers/toypop.c
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( liblrabl, toypop_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(toypop)
+ MCFG_SCREEN_UPDATE_DRIVER(toypop_state, screen_update_toypop)
MCFG_GFXDECODE(toypop)
MCFG_PALETTE_LENGTH(128*4+64*4+16*2)
diff --git a/src/mame/drivers/tp84.c b/src/mame/drivers/tp84.c
index 6c7cb710f16..4b0fbec9f92 100644
--- a/src/mame/drivers/tp84.c
+++ b/src/mame/drivers/tp84.c
@@ -328,7 +328,7 @@ static MACHINE_CONFIG_START( tp84, tp84_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tp84)
+ MCFG_SCREEN_UPDATE_DRIVER(tp84_state, screen_update_tp84)
MCFG_GFXDECODE(tp84)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/trackfld.c b/src/mame/drivers/trackfld.c
index c8519b735ec..12cef41fa1a 100644
--- a/src/mame/drivers/trackfld.c
+++ b/src/mame/drivers/trackfld.c
@@ -928,7 +928,7 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(trackfld)
+ MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_GFXDECODE(trackfld)
MCFG_PALETTE_LENGTH(16*16+16*16)
@@ -983,7 +983,7 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(trackfld)
+ MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_GFXDECODE(trackfld)
MCFG_PALETTE_LENGTH(16*16+16*16)
diff --git a/src/mame/drivers/travrusa.c b/src/mame/drivers/travrusa.c
index 3673da60531..bd015c1d9bd 100644
--- a/src/mame/drivers/travrusa.c
+++ b/src/mame/drivers/travrusa.c
@@ -312,7 +312,7 @@ static MACHINE_CONFIG_START( travrusa, travrusa_state )
/* talks about 55Hz and 1790ms vblank duration. */
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(travrusa)
+ MCFG_SCREEN_UPDATE_DRIVER(travrusa_state, screen_update_travrusa)
MCFG_GFXDECODE(travrusa)
diff --git a/src/mame/drivers/triforce.c b/src/mame/drivers/triforce.c
index df904ade008..9d95f8b601b 100644
--- a/src/mame/drivers/triforce.c
+++ b/src/mame/drivers/triforce.c
@@ -421,6 +421,7 @@ public:
DECLARE_WRITE64_MEMBER(gc_exi_w);
virtual void machine_start();
virtual void video_start();
+ UINT32 screen_update_triforce(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
READ64_MEMBER(triforce_state::gc_pi_r)
@@ -456,7 +457,7 @@ void triforce_state::video_start()
}
-static SCREEN_UPDATE_RGB32(triforce)
+UINT32 triforce_state::screen_update_triforce(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -541,7 +542,7 @@ static MACHINE_CONFIG_START( triforce_base, triforce_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(triforce)
+ MCFG_SCREEN_UPDATE_DRIVER(triforce_state, screen_update_triforce)
MCFG_PALETTE_LENGTH(65536)
diff --git a/src/mame/drivers/triplhnt.c b/src/mame/drivers/triplhnt.c
index 28f1c78a333..ac4531147cc 100644
--- a/src/mame/drivers/triplhnt.c
+++ b/src/mame/drivers/triplhnt.c
@@ -320,7 +320,7 @@ static MACHINE_CONFIG_START( triplhnt, triplhnt_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(triplhnt)
+ MCFG_SCREEN_UPDATE_DRIVER(triplhnt_state, screen_update_triplhnt)
MCFG_GFXDECODE(triplhnt)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c
index f66d32d3e97..b5f391ca4b1 100644
--- a/src/mame/drivers/truco.c
+++ b/src/mame/drivers/truco.c
@@ -469,7 +469,7 @@ static MACHINE_CONFIG_START( truco, truco_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 192)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
- MCFG_SCREEN_UPDATE_STATIC(truco)
+ MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update_truco)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/trucocl.c b/src/mame/drivers/trucocl.c
index 4d0be1cd6d2..24ee5c4643d 100644
--- a/src/mame/drivers/trucocl.c
+++ b/src/mame/drivers/trucocl.c
@@ -143,7 +143,7 @@ static MACHINE_CONFIG_START( trucocl, trucocl_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(trucocl)
+ MCFG_SCREEN_UPDATE_DRIVER(trucocl_state, screen_update_trucocl)
MCFG_GFXDECODE(trucocl)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/trvmadns.c b/src/mame/drivers/trvmadns.c
index df3e04279ab..0b5294ab413 100644
--- a/src/mame/drivers/trvmadns.c
+++ b/src/mame/drivers/trvmadns.c
@@ -86,6 +86,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_trvmadns(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -291,9 +292,8 @@ void trvmadns_state::video_start()
machine().gfx[0]->set_source(m_gfxram);
}
-static SCREEN_UPDATE_IND16( trvmadns )
+UINT32 trvmadns_state::screen_update_trvmadns(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- trvmadns_state *state = screen.machine().driver_data<trvmadns_state>();
int x,y,count;
gfx_element *gfx = screen.machine().gfx[0];
@@ -305,8 +305,8 @@ static SCREEN_UPDATE_IND16( trvmadns )
{
for (x=0;x<32;x++)
{
- int attr = state->m_tileram[count*2+0];
- int tile = state->m_tileram[count*2+1] | ((attr & 0x01) << 8);
+ int attr = m_tileram[count*2+0];
+ int tile = m_tileram[count*2+1] | ((attr & 0x01) << 8);
int color = (attr & 0x18) >> 3;
int flipx = attr & 4;
int flipy = attr & 2;
@@ -323,8 +323,8 @@ static SCREEN_UPDATE_IND16( trvmadns )
{
for (x=0;x<32;x++)
{
- int attr = state->m_tileram[count*2+0];
- int tile = state->m_tileram[count*2+1] | ((attr & 0x01) << 8);
+ int attr = m_tileram[count*2+0];
+ int tile = m_tileram[count*2+1] | ((attr & 0x01) << 8);
int color = (attr & 0x18) >> 3;
int flipx = attr & 4;
int flipy = attr & 2;
@@ -356,7 +356,7 @@ static MACHINE_CONFIG_START( trvmadns, trvmadns_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(trvmadns)
+ MCFG_SCREEN_UPDATE_DRIVER(trvmadns_state, screen_update_trvmadns)
MCFG_GFXDECODE(trvmadns)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tryout.c b/src/mame/drivers/tryout.c
index dbeb1546b11..496d247bc5b 100644
--- a/src/mame/drivers/tryout.c
+++ b/src/mame/drivers/tryout.c
@@ -200,7 +200,7 @@ static MACHINE_CONFIG_START( tryout, tryout_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tryout)
+ MCFG_SCREEN_UPDATE_DRIVER(tryout_state, screen_update_tryout)
MCFG_GFXDECODE(tryout)
MCFG_PALETTE_LENGTH(0x20)
diff --git a/src/mame/drivers/tsamurai.c b/src/mame/drivers/tsamurai.c
index 9d6d45e82e4..4dfffd946a2 100644
--- a/src/mame/drivers/tsamurai.c
+++ b/src/mame/drivers/tsamurai.c
@@ -696,7 +696,7 @@ static MACHINE_CONFIG_START( tsamurai, tsamurai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE_STATIC(tsamurai)
+ MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
@@ -736,7 +736,7 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE_STATIC(vsgongf)
+ MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_vsgongf)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
@@ -780,7 +780,7 @@ static MACHINE_CONFIG_START( m660, tsamurai_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE_STATIC(tsamurai)
+ MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ttchamp.c b/src/mame/drivers/ttchamp.c
index b419a787ba0..fc54c625f86 100644
--- a/src/mame/drivers/ttchamp.c
+++ b/src/mame/drivers/ttchamp.c
@@ -84,6 +84,7 @@ public:
virtual void video_start();
+ UINT32 screen_update_ttchamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -97,9 +98,8 @@ void ttchamp_state::video_start()
}
-static SCREEN_UPDATE_IND16(ttchamp)
+UINT32 ttchamp_state::screen_update_ttchamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ttchamp_state *state = screen.machine().driver_data<ttchamp_state>();
int y,x,count;
// int i;
static const int xxx=320,yyy=204;
@@ -114,11 +114,11 @@ static SCREEN_UPDATE_IND16(ttchamp)
// b = (dat>>10)&0x1f;
// g = (dat>>5)&0x1f;
// r = (dat>>0)&0x1f;
-// palette_set_color_rgb(machine,i,pal5bit(r),pal5bit(g),pal5bit(b));
+// palette_set_color_rgb(machine(),i,pal5bit(r),pal5bit(g),pal5bit(b));
// }
count=0;
- UINT8 *videoram = (UINT8*)state->m_peno_vram;
+ UINT8 *videoram = (UINT8*)m_peno_vram;
for (y=0;y<yyy;y++)
{
for(x=0;x<xxx;x++)
@@ -287,7 +287,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(ttchamp)
+ MCFG_SCREEN_UPDATE_DRIVER(ttchamp_state, screen_update_ttchamp)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/tubep.c b/src/mame/drivers/tubep.c
index 781bffac627..d0fa497f3ff 100644
--- a/src/mame/drivers/tubep.c
+++ b/src/mame/drivers/tubep.c
@@ -913,7 +913,7 @@ static MACHINE_CONFIG_START( tubep, tubep_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tubep)
+ MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep)
MCFG_PALETTE_LENGTH(32 + 256*64)
@@ -973,7 +973,7 @@ static MACHINE_CONFIG_START( rjammer, tubep_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(rjammer)
+ MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/tugboat.c b/src/mame/drivers/tugboat.c
index 2a9db2f2e47..fbecd3f16dc 100644
--- a/src/mame/drivers/tugboat.c
+++ b/src/mame/drivers/tugboat.c
@@ -49,6 +49,7 @@ public:
DECLARE_WRITE8_MEMBER(tugboat_ctrl_w);
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_tugboat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -132,11 +133,10 @@ static void draw_tilemap(running_machine &machine, bitmap_ind16 &bitmap,const re
}
}
-static SCREEN_UPDATE_IND16( tugboat )
+UINT32 tugboat_state::screen_update_tugboat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- tugboat_state *state = screen.machine().driver_data<tugboat_state>();
- int startaddr0 = state->m_hd46505_0_reg[0x0c]*256 + state->m_hd46505_0_reg[0x0d];
- int startaddr1 = state->m_hd46505_1_reg[0x0c]*256 + state->m_hd46505_1_reg[0x0d];
+ int startaddr0 = m_hd46505_0_reg[0x0c]*256 + m_hd46505_0_reg[0x0d];
+ int startaddr1 = m_hd46505_1_reg[0x0c]*256 + m_hd46505_1_reg[0x0d];
draw_tilemap(screen.machine(), bitmap,cliprect,startaddr0,0,1,FALSE);
@@ -343,7 +343,7 @@ static MACHINE_CONFIG_START( tugboat, tugboat_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(32*8,32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8,31*8-1,2*8,30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tugboat)
+ MCFG_SCREEN_UPDATE_DRIVER(tugboat_state, screen_update_tugboat)
MCFG_GFXDECODE(tugboat)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/tumbleb.c b/src/mame/drivers/tumbleb.c
index abb8cb4260a..c6d76c0372d 100644
--- a/src/mame/drivers/tumbleb.c
+++ b/src/mame/drivers/tumbleb.c
@@ -1988,7 +1988,7 @@ static MACHINE_CONFIG_START( tumblepb, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tumblepb)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_tumblepb)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2023,7 +2023,7 @@ static MACHINE_CONFIG_START( tumbleb2, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(tumblepb)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_tumblepb)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2061,7 +2061,7 @@ static MACHINE_CONFIG_START( jumpkids, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jumpkids)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_jumpkids)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2095,7 +2095,7 @@ static MACHINE_CONFIG_START( fncywld, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(fncywld)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_fncywld)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2165,7 +2165,7 @@ static MACHINE_CONFIG_START( htchctch, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2400)) // ?? cookbib needs it above ~2400 or the Joystick on the How to Play screen is the wrong colour?!
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(semicom)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_semicom)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2191,7 +2191,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib, htchctch )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( semicom_altoffsets )
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_semicom_altoffsets)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib_mcu, htchctch )
@@ -2203,12 +2203,12 @@ static MACHINE_CONFIG_DERIVED( cookbib_mcu, htchctch )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC( semicom_altoffsets )
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_semicom_altoffsets)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bcstory, htchctch )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(bcstory)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_bcstory)
MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
MCFG_SOUND_CONFIG(semicom_ym2151_interface)
@@ -2218,13 +2218,13 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( semibase, bcstory )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(semibase )
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_semibase)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sdfight, bcstory )
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,sdfight)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(sdfight)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_sdfight)
MACHINE_CONFIG_END
@@ -2258,7 +2258,7 @@ static MACHINE_CONFIG_START( suprtrio, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8-1, 31*8-2)
- MCFG_SCREEN_UPDATE_STATIC(suprtrio)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_suprtrio)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
@@ -2293,7 +2293,7 @@ static MACHINE_CONFIG_START( pangpang, tumbleb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(pangpang)
+ MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_pangpang)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
diff --git a/src/mame/drivers/tumblep.c b/src/mame/drivers/tumblep.c
index 6eaa6639d60..b2fea7b8a82 100644
--- a/src/mame/drivers/tumblep.c
+++ b/src/mame/drivers/tumblep.c
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( tumblep, tumblep_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-2, 1*8, 31*8-1) // hmm
- MCFG_SCREEN_UPDATE_STATIC(tumblep)
+ MCFG_SCREEN_UPDATE_DRIVER(tumblep_state, screen_update_tumblep)
MCFG_GFXDECODE(tumblep)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tunhunt.c b/src/mame/drivers/tunhunt.c
index 34a54d94a05..04b1e49d617 100644
--- a/src/mame/drivers/tunhunt.c
+++ b/src/mame/drivers/tunhunt.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( tunhunt, tunhunt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(256, 256-16)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255-16)
- MCFG_SCREEN_UPDATE_STATIC(tunhunt)
+ MCFG_SCREEN_UPDATE_DRIVER(tunhunt_state, screen_update_tunhunt)
MCFG_GFXDECODE(tunhunt)
MCFG_PALETTE_LENGTH(0x1a)
diff --git a/src/mame/drivers/turbo.c b/src/mame/drivers/turbo.c
index 6198ed9ba49..d1c6d9f182e 100644
--- a/src/mame/drivers/turbo.c
+++ b/src/mame/drivers/turbo.c
@@ -946,7 +946,7 @@ static MACHINE_CONFIG_START( turbo, turbo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(turbo)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_turbo)
MCFG_PALETTE_INIT_OVERRIDE(turbo_state,turbo)
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
@@ -975,7 +975,7 @@ static MACHINE_CONFIG_START( subroc3d, turbo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(subroc3d)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_subroc3d)
MCFG_PALETTE_INIT_OVERRIDE(turbo_state,subroc3d)
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
@@ -1011,7 +1011,7 @@ static MACHINE_CONFIG_START( buckrog, turbo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(buckrog)
+ MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_buckrog)
MCFG_PALETTE_INIT_OVERRIDE(turbo_state,buckrog)
MCFG_VIDEO_START_OVERRIDE(turbo_state,buckrog)
diff --git a/src/mame/drivers/tutankhm.c b/src/mame/drivers/tutankhm.c
index c5f25bb5388..98752cc6870 100644
--- a/src/mame/drivers/tutankhm.c
+++ b/src/mame/drivers/tutankhm.c
@@ -232,7 +232,7 @@ static MACHINE_CONFIG_START( tutankhm, tutankhm_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* not sure about the visible area */
- MCFG_SCREEN_UPDATE_STATIC(tutankhm)
+ MCFG_SCREEN_UPDATE_DRIVER(tutankhm_state, screen_update_tutankhm)
/* sound hardware */
MCFG_FRAGMENT_ADD(timeplt_sound)
diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c
index d243bfab69d..97d1d8b7248 100644
--- a/src/mame/drivers/twin16.c
+++ b/src/mame/drivers/twin16.c
@@ -745,8 +745,8 @@ static MACHINE_CONFIG_START( twin16, twin16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2062)) // 32 lines
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(twin16)
- MCFG_SCREEN_VBLANK_STATIC(twin16)
+ MCFG_SCREEN_UPDATE_DRIVER(twin16_state, screen_update_twin16)
+ MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16)
MCFG_GFXDECODE(twin16)
MCFG_PALETTE_LENGTH(0x400)
@@ -799,8 +799,8 @@ static MACHINE_CONFIG_START( fround, twin16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(twin16)
- MCFG_SCREEN_VBLANK_STATIC(twin16)
+ MCFG_SCREEN_UPDATE_DRIVER(twin16_state, screen_update_twin16)
+ MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16)
MCFG_GFXDECODE(twin16)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/twincobr.c b/src/mame/drivers/twincobr.c
index 81e706d87e7..4beb33507d9 100644
--- a/src/mame/drivers/twincobr.c
+++ b/src/mame/drivers/twincobr.c
@@ -587,7 +587,7 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4, 446, 0, 320, 286, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(toaplan0)
+ MCFG_SCREEN_UPDATE_DRIVER(twincobr_state, screen_update_toaplan0)
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(twincobr)
diff --git a/src/mame/drivers/twins.c b/src/mame/drivers/twins.c
index ce79d1fd7b5..7509c169097 100644
--- a/src/mame/drivers/twins.c
+++ b/src/mame/drivers/twins.c
@@ -71,6 +71,8 @@ public:
DECLARE_READ16_MEMBER(twinsa_unk_r);
DECLARE_VIDEO_START(twins);
DECLARE_VIDEO_START(twinsa);
+ UINT32 screen_update_twins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_twinsa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -116,9 +118,8 @@ VIDEO_START_MEMBER(twins_state,twins)
m_pal = auto_alloc_array(machine(), UINT16, 0x100);
}
-static SCREEN_UPDATE_IND16(twins)
+UINT32 twins_state::screen_update_twins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- twins_state *state = screen.machine().driver_data<twins_state>();
int y,x,count;
int i;
static const int xxx=320,yyy=204;
@@ -128,7 +129,7 @@ static SCREEN_UPDATE_IND16(twins)
for (i=0;i<0x100;i++)
{
int dat,r,g,b;
- dat = state->m_pal[i];
+ dat = m_pal[i];
r = dat & 0x1f;
r = BITSWAP8(r,7,6,5,0,1,2,3,4);
@@ -143,7 +144,7 @@ static SCREEN_UPDATE_IND16(twins)
}
count=0;
- UINT8 *videoram = reinterpret_cast<UINT8 *>(state->m_videoram.target());
+ UINT8 *videoram = reinterpret_cast<UINT8 *>(m_videoram.target());
for (y=0;y<yyy;y++)
{
for(x=0;x<xxx;x++)
@@ -200,7 +201,7 @@ static MACHINE_CONFIG_START( twins, twins_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320,256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(twins)
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
MCFG_PALETTE_LENGTH(0x100)
@@ -222,9 +223,8 @@ VIDEO_START_MEMBER(twins_state,twinsa)
m_pal = auto_alloc_array(machine(), UINT16, 0x1000);
}
-static SCREEN_UPDATE_IND16(twinsa)
+UINT32 twins_state::screen_update_twinsa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- twins_state *state = screen.machine().driver_data<twins_state>();
int y,x,count;
int i;
static const int xxx=320,yyy=204;
@@ -234,15 +234,15 @@ static SCREEN_UPDATE_IND16(twinsa)
for (i=0;i<0x1000-3;i+=3)
{
int r,g,b;
- r = state->m_pal[i];
- g = state->m_pal[i+1];
- b = state->m_pal[i+2];
+ r = m_pal[i];
+ g = m_pal[i+1];
+ b = m_pal[i+2];
palette_set_color_rgb(screen.machine(),i/3, pal6bit(r), pal6bit(g), pal6bit(b));
}
count=0;
- UINT8 *videoram = reinterpret_cast<UINT8 *>(state->m_videoram.target());
+ UINT8 *videoram = reinterpret_cast<UINT8 *>(m_videoram.target());
for (y=0;y<yyy;y++)
{
for(x=0;x<xxx;x++)
@@ -289,7 +289,7 @@ static MACHINE_CONFIG_START( twinsa, twins_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320,256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE_STATIC(twinsa)
+ MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twinsa)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index 51d716e762e..29127218b86 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -715,16 +715,16 @@ static MACHINE_CONFIG_START( tx1, tx1_state )
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(tx1_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_left)
MCFG_SCREEN_ADD("cscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(tx1_middle)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(tx1_right)
- MCFG_SCREEN_VBLANK_STATIC(tx1)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_right)
+ MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_tx1)
MCFG_VIDEO_START_OVERRIDE(tx1_state,tx1)
@@ -765,16 +765,16 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state )
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(buggyboy_left)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_left)
MCFG_SCREEN_ADD("cscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(buggyboy_middle)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(buggyboy_right)
- MCFG_SCREEN_VBLANK_STATIC(buggyboy)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_right)
+ MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT_OVERRIDE(tx1_state,buggyboy)
@@ -815,8 +815,8 @@ static MACHINE_CONFIG_START( buggybjr, tx1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(buggybjr)
- MCFG_SCREEN_VBLANK_STATIC(buggyboy)
+ MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggybjr)
+ MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT_OVERRIDE(tx1_state,buggyboy)
diff --git a/src/mame/drivers/ultraman.c b/src/mame/drivers/ultraman.c
index 4c2ff67faa6..248b0030b18 100644
--- a/src/mame/drivers/ultraman.c
+++ b/src/mame/drivers/ultraman.c
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(ultraman)
+ MCFG_SCREEN_UPDATE_DRIVER(ultraman_state, screen_update_ultraman)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c
index 72ea3e7b86f..4bd78da771b 100644
--- a/src/mame/drivers/ultratnk.c
+++ b/src/mame/drivers/ultratnk.c
@@ -301,8 +301,8 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(ultratnk)
- MCFG_SCREEN_VBLANK_STATIC(ultratnk)
+ MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update_ultratnk)
+ MCFG_SCREEN_VBLANK_DRIVER(ultratnk_state, screen_eof_ultratnk)
MCFG_GFXDECODE(ultratnk)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c
index c17e7ff5e15..422f1851d92 100644
--- a/src/mame/drivers/ultrsprt.c
+++ b/src/mame/drivers/ultrsprt.c
@@ -35,17 +35,17 @@ public:
DECLARE_WRITE16_MEMBER(K056800_68k_w);
DECLARE_CUSTOM_INPUT_MEMBER(analog_ctrl_r);
virtual void machine_start();
+ UINT32 screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
-static SCREEN_UPDATE_IND16( ultrsprt )
+UINT32 ultrsprt_state::screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- ultrsprt_state *state = screen.machine().driver_data<ultrsprt_state>();
int i, j;
- UINT8 *ram = reinterpret_cast<UINT8 *>(state->m_vram.target());
+ UINT8 *ram = reinterpret_cast<UINT8 *>(m_vram.target());
for (j=0; j < 400; j++)
{
@@ -243,7 +243,7 @@ static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_SCREEN_UPDATE_STATIC(ultrsprt)
+ MCFG_SCREEN_UPDATE_DRIVER(ultrsprt_state, screen_update_ultrsprt)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/umipoker.c b/src/mame/drivers/umipoker.c
index e930307823f..8edfa66e14e 100644
--- a/src/mame/drivers/umipoker.c
+++ b/src/mame/drivers/umipoker.c
@@ -67,6 +67,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_umipoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
TILE_GET_INFO_MEMBER(umipoker_state::get_tile_info_0)
@@ -132,21 +133,20 @@ void umipoker_state::video_start()
}
-static SCREEN_UPDATE_IND16( umipoker )
+UINT32 umipoker_state::screen_update_umipoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- umipoker_state *state = screen.machine().driver_data<umipoker_state>();
- state->m_tilemap_0->set_scrolly(0, state->m_umipoker_scrolly[0]);
- state->m_tilemap_1->set_scrolly(0, state->m_umipoker_scrolly[1]);
- state->m_tilemap_2->set_scrolly(0, state->m_umipoker_scrolly[2]);
- state->m_tilemap_3->set_scrolly(0, state->m_umipoker_scrolly[3]);
+ m_tilemap_0->set_scrolly(0, m_umipoker_scrolly[0]);
+ m_tilemap_1->set_scrolly(0, m_umipoker_scrolly[1]);
+ m_tilemap_2->set_scrolly(0, m_umipoker_scrolly[2]);
+ m_tilemap_3->set_scrolly(0, m_umipoker_scrolly[3]);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_tilemap_0->draw(bitmap, cliprect, 0,0);
- state->m_tilemap_1->draw(bitmap, cliprect, 0,0);
- state->m_tilemap_2->draw(bitmap, cliprect, 0,0);
- state->m_tilemap_3->draw(bitmap, cliprect, 0,0);
+ m_tilemap_0->draw(bitmap, cliprect, 0,0);
+ m_tilemap_1->draw(bitmap, cliprect, 0,0);
+ m_tilemap_2->draw(bitmap, cliprect, 0,0);
+ m_tilemap_3->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -678,7 +678,7 @@ static MACHINE_CONFIG_START( umipoker, umipoker_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(umipoker)
+ MCFG_SCREEN_UPDATE_DRIVER(umipoker_state, screen_update_umipoker)
MCFG_GFXDECODE(umipoker)
diff --git a/src/mame/drivers/undrfire.c b/src/mame/drivers/undrfire.c
index a72200d2d20..28bbd182751 100644
--- a/src/mame/drivers/undrfire.c
+++ b/src/mame/drivers/undrfire.c
@@ -739,7 +739,7 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(undrfire)
+ MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_undrfire)
MCFG_GFXDECODE(undrfire)
MCFG_PALETTE_LENGTH(16384)
@@ -774,7 +774,7 @@ static MACHINE_CONFIG_START( cbombers, undrfire_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(cbombers)
+ MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_cbombers)
MCFG_GFXDECODE(cbombers)
MCFG_PALETTE_LENGTH(16384)
diff --git a/src/mame/drivers/unico.c b/src/mame/drivers/unico.c
index 96f65fe0939..524a95ab11d 100644
--- a/src/mame/drivers/unico.c
+++ b/src/mame/drivers/unico.c
@@ -603,7 +603,7 @@ static MACHINE_CONFIG_START( burglarx, unico_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(unico)
+ MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_unico)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
@@ -648,7 +648,7 @@ static MACHINE_CONFIG_START( zeropnt, unico_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(unico)
+ MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_unico)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
@@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( zeropnt2, unico_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(zeropnt2)
+ MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_zeropnt2)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/unkhorse.c b/src/mame/drivers/unkhorse.c
index 30369e322c9..54dfd8da620 100644
--- a/src/mame/drivers/unkhorse.c
+++ b/src/mame/drivers/unkhorse.c
@@ -39,6 +39,7 @@ public:
DECLARE_WRITE8_MEMBER(horse_output_w);
DECLARE_WRITE_LINE_MEMBER(horse_timer_out);
virtual void palette_init();
+ UINT32 screen_update_horse(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -55,16 +56,15 @@ void horse_state::palette_init()
palette_set_color_rgb(machine(), i, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
-static SCREEN_UPDATE_IND16( horse )
+UINT32 horse_state::screen_update_horse(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- horse_state *state = screen.machine().driver_data<horse_state>();
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
for (int x = 0; x < 32; x++)
{
- UINT8 data = state->m_video_ram[y << 5 | x];
- UINT8 color = state->m_color_ram[(y << 3 & 0x780) | x] >> 4;
+ UINT8 data = m_video_ram[y << 5 | x];
+ UINT8 color = m_color_ram[(y << 3 & 0x780) | x] >> 4;
for (int i = 0; i < 8; i++)
bitmap.pix16(y, x << 3 | i) = (data >> i & 1) ? color : 0;
@@ -213,7 +213,7 @@ static MACHINE_CONFIG_START( horse, horse_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(horse)
+ MCFG_SCREEN_UPDATE_DRIVER(horse_state, screen_update_horse)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/upscope.c b/src/mame/drivers/upscope.c
index dc4f97c04ca..259888dbc62 100644
--- a/src/mame/drivers/upscope.c
+++ b/src/mame/drivers/upscope.c
@@ -324,7 +324,7 @@ static MACHINE_CONFIG_START( upscope, upscope_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 262)
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
- MCFG_SCREEN_UPDATE_STATIC(amiga)
+ MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT_OVERRIDE(upscope_state,amiga)
diff --git a/src/mame/drivers/usgames.c b/src/mame/drivers/usgames.c
index ee29336a8b3..030cd638681 100644
--- a/src/mame/drivers/usgames.c
+++ b/src/mame/drivers/usgames.c
@@ -244,7 +244,7 @@ static MACHINE_CONFIG_START( usg32, usgames_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(7*8, 57*8-1, 0*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(usgames)
+ MCFG_SCREEN_UPDATE_DRIVER(usgames_state, screen_update_usgames)
MCFG_GFXDECODE(usgames)
MCFG_PALETTE_LENGTH(2*256)
diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c
index 113c8130248..97f96c1bcdc 100644
--- a/src/mame/drivers/vamphalf.c
+++ b/src/mame/drivers/vamphalf.c
@@ -164,6 +164,8 @@ public:
DECLARE_DRIVER_INIT(vamphalf);
DECLARE_DRIVER_INIT(wyvernwg);
DECLARE_DRIVER_INIT(luplup);
+ UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
READ16_MEMBER(vamphalf_state::eeprom_r)
@@ -752,7 +754,7 @@ void vamphalf_handle_flipped_visible_area( screen_device &screen )
}
-static SCREEN_UPDATE_IND16( common )
+UINT32 vamphalf_state::screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
vamphalf_handle_flipped_visible_area(screen);
bitmap.fill(0, cliprect);
@@ -760,7 +762,7 @@ static SCREEN_UPDATE_IND16( common )
return 0;
}
-static SCREEN_UPDATE_IND16( aoh )
+UINT32 vamphalf_state::screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// vamphalf_handle_flipped_visible_area(screen); // not on this?
bitmap.fill(0, cliprect);
@@ -993,7 +995,7 @@ static MACHINE_CONFIG_START( common, vamphalf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(31, 350, 16, 251)
- MCFG_SCREEN_UPDATE_STATIC(common)
+ MCFG_SCREEN_UPDATE_DRIVER(vamphalf_state, screen_update_common)
MCFG_PALETTE_LENGTH(0x8000)
MCFG_GFXDECODE(vamphalf)
@@ -1124,7 +1126,7 @@ static MACHINE_CONFIG_START( aoh, vamphalf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(64, 511-64, 16, 255-16)
- MCFG_SCREEN_UPDATE_STATIC(aoh)
+ MCFG_SCREEN_UPDATE_DRIVER(vamphalf_state, screen_update_aoh)
MCFG_PALETTE_LENGTH(0x8000)
MCFG_GFXDECODE(vamphalf)
diff --git a/src/mame/drivers/vaportra.c b/src/mame/drivers/vaportra.c
index f0088ad350c..2fc18a31de6 100644
--- a/src/mame/drivers/vaportra.c
+++ b/src/mame/drivers/vaportra.c
@@ -278,7 +278,7 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_STATIC(vaportra)
+ MCFG_SCREEN_UPDATE_DRIVER(vaportra_state, screen_update_vaportra)
MCFG_GFXDECODE(vaportra)
MCFG_PALETTE_LENGTH(1280)
diff --git a/src/mame/drivers/vastar.c b/src/mame/drivers/vastar.c
index 83502ae2261..429901a02d3 100644
--- a/src/mame/drivers/vastar.c
+++ b/src/mame/drivers/vastar.c
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( vastar, vastar_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(vastar)
+ MCFG_SCREEN_UPDATE_DRIVER(vastar_state, screen_update_vastar)
MCFG_GFXDECODE(vastar)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vball.c b/src/mame/drivers/vball.c
index e5ed264faf7..5bd206c8d13 100644
--- a/src/mame/drivers/vball.c
+++ b/src/mame/drivers/vball.c
@@ -419,7 +419,7 @@ static MACHINE_CONFIG_START( vball, vball_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE_STATIC(vb)
+ MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
MCFG_GFXDECODE(vb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vcombat.c b/src/mame/drivers/vcombat.c
index 42f74d818bf..51d137df846 100644
--- a/src/mame/drivers/vcombat.c
+++ b/src/mame/drivers/vcombat.c
@@ -124,6 +124,8 @@ public:
DECLARE_DRIVER_INIT(vcombat);
DECLARE_MACHINE_RESET(vcombat);
DECLARE_MACHINE_RESET(shadfgtr);
+ UINT32 screen_update_vcombat_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_vcombat_aux(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
static UINT32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index)
@@ -175,8 +177,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const r
return 0;
}
-static SCREEN_UPDATE_RGB32( vcombat_main ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE_RGB32( vcombat_aux ) { return update_screen(screen, bitmap, cliprect, 1); }
+UINT32 vcombat_state::screen_update_vcombat_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 0); }
+UINT32 vcombat_state::screen_update_vcombat_aux(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 1); }
WRITE16_MEMBER(vcombat_state::main_video_write)
@@ -612,11 +614,11 @@ static MACHINE_CONFIG_START( vcombat, vcombat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz / 2, 400, 0, 256, 291, 0, 208)
- MCFG_SCREEN_UPDATE_STATIC(vcombat_main)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_main)
MCFG_SCREEN_ADD("aux", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz / 2, 400, 0, 256, 291, 0, 208)
- MCFG_SCREEN_UPDATE_STATIC(vcombat_aux)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_aux)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -647,7 +649,7 @@ static MACHINE_CONFIG_START( shadfgtr, vcombat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_20MHz / 4, 320, 0, 256, 277, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(vcombat_main)
+ MCFG_SCREEN_UPDATE_DRIVER(vcombat_state, screen_update_vcombat_main)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/vectrex.c b/src/mame/drivers/vectrex.c
index 977e1f6b7c4..b50e3201651 100644
--- a/src/mame/drivers/vectrex.c
+++ b/src/mame/drivers/vectrex.c
@@ -106,7 +106,7 @@ static MACHINE_CONFIG_START( vectrex, vectrex_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 299)
- MCFG_SCREEN_UPDATE_STATIC(vectrex)
+ MCFG_SCREEN_UPDATE_DRIVER(vectrex_state, screen_update_vectrex)
/* sound hardware */
diff --git a/src/mame/drivers/vega.c b/src/mame/drivers/vega.c
index 9f6b41831f8..e95fa934521 100644
--- a/src/mame/drivers/vega.c
+++ b/src/mame/drivers/vega.c
@@ -148,6 +148,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void palette_init();
+ UINT32 screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
WRITE8_MEMBER(vega_state::extern_w)
@@ -547,26 +548,25 @@ static void draw_tilemap(vega_state *state, screen_device& screen, bitmap_ind16&
}
-static SCREEN_UPDATE_IND16( vega )
+UINT32 vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- vega_state *state = screen.machine().driver_data<vega_state>();
- ++state->m_frame_counter;
+ ++m_frame_counter;
bitmap.fill(0, cliprect);
- draw_tilemap(state, screen, bitmap, cliprect);
+ draw_tilemap(this, screen, bitmap, cliprect);
{
int x,y;
int idx=0;
- UINT8 *color_lookup = state->memregion("proms")->base() + 0x200;
+ UINT8 *color_lookup = memregion("proms")->base() + 0x200;
for(y=0;y<25;++y)
for(x=0;x<40;++x)
{
- int character=state->m_txt_ram[idx];
+ int character=m_txt_ram[idx];
//int color=BITSWAP8(color_lookup[character],7,6,5,4,0,1,2,3)>>1;
int color=color_lookup[character]&0xf;
/*
@@ -593,10 +593,10 @@ static SCREEN_UPDATE_IND16( vega )
for(int i=OBJ_0;i<OBJ_PLAYER;++i)
{
- int x0=255-state->m_obj[i].m_x;
- int y0=255-state->m_obj[i].m_y;
- int num=state->m_obj[i].m_type&7;
- int flip=state->m_obj[i].m_type&8;
+ int x0=255-m_obj[i].m_x;
+ int y0=255-m_obj[i].m_y;
+ int num=m_obj[i].m_type&7;
+ int flip=m_obj[i].m_type&8;
num*=4*8;
for(int x=0;x<8;++x)
@@ -623,20 +623,20 @@ static SCREEN_UPDATE_IND16( vega )
{
- if(BIT(state->m_obj[OBJ_PLAYER].m_type,5))
+ if(BIT(m_obj[OBJ_PLAYER].m_type,5))
{
- int x0=state->m_obj[OBJ_PLAYER].m_x;
- int y0=255-state->m_obj[OBJ_PLAYER].m_y-32;
+ int x0=m_obj[OBJ_PLAYER].m_x;
+ int y0=255-m_obj[OBJ_PLAYER].m_y-32;
- UINT8 *sprite_lookup = state->memregion("proms")->base();
+ UINT8 *sprite_lookup = memregion("proms")->base();
for(int x=0;x<16;++x)
{
- int prom_data=sprite_lookup[ ((state->m_obj[OBJ_PLAYER].m_type&0xf)<<2)|((x>>2)&3)|(((state->m_frame_counter>>1)&3)<<6) ];
+ int prom_data=sprite_lookup[ ((m_obj[OBJ_PLAYER].m_type&0xf)<<2)|((x>>2)&3)|(((m_frame_counter>>1)&3)<<6) ];
int xor_line=( ! (( ! ((BIT(prom_data,1))&(BIT(prom_data,2))&(BIT(prom_data,3))&(BIT(x,2)) ) ) &
- ( (BIT(prom_data,2)) | (BIT(prom_data,3)) | ( BIT(state->m_obj[OBJ_PLAYER].m_type,4)) ) ));
+ ( (BIT(prom_data,2)) | (BIT(prom_data,3)) | ( BIT(m_obj[OBJ_PLAYER].m_type,4)) ) ));
int strip_num=((prom_data)&0x7)|( ((x&3)^(xor_line?0x3:0)) <<3)|((BIT(prom_data,3))<<5);
@@ -860,7 +860,7 @@ static MACHINE_CONFIG_START( vega, vega_state )
MCFG_GFXDECODE(test_decode)
- MCFG_SCREEN_UPDATE_STATIC(vega)
+ MCFG_SCREEN_UPDATE_DRIVER(vega_state, screen_update_vega)
/* sound hardware */
diff --git a/src/mame/drivers/vegaeo.c b/src/mame/drivers/vegaeo.c
index 509ff998828..bcd5f569f6c 100644
--- a/src/mame/drivers/vegaeo.c
+++ b/src/mame/drivers/vegaeo.c
@@ -41,6 +41,7 @@ public:
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
DECLARE_DRIVER_INIT(vegaeo);
DECLARE_VIDEO_START(vega);
+ UINT32 screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
READ8_MEMBER( vegaeo_state::qs1000_p1_r )
@@ -194,9 +195,8 @@ VIDEO_START_MEMBER(vegaeo_state,vega)
m_vega_vram = auto_alloc_array(machine(), UINT32, 0x14000*2/4);
}
-static SCREEN_UPDATE_IND16( vega )
+UINT32 vegaeo_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- vegaeo_state *state = screen.machine().driver_data<vegaeo_state>();
int x,y,count;
int color;
@@ -205,16 +205,16 @@ static SCREEN_UPDATE_IND16( vega )
{
for (x=0;x < 320/4;x++)
{
- color = state->m_vega_vram[count + (0x14000/4) * (state->m_vega_vbuffer ^ 1)] & 0xff;
+ color = m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff;
bitmap.pix16(y, x*4 + 3) = color;
- color = (state->m_vega_vram[count + (0x14000/4) * (state->m_vega_vbuffer ^ 1)] & 0xff00) >> 8;
+ color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff00) >> 8;
bitmap.pix16(y, x*4 + 2) = color;
- color = (state->m_vega_vram[count + (0x14000/4) * (state->m_vega_vbuffer ^ 1)] & 0xff0000) >> 16;
+ color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff0000) >> 16;
bitmap.pix16(y, x*4 + 1) = color;
- color = (state->m_vega_vram[count + (0x14000/4) * (state->m_vega_vbuffer ^ 1)] & 0xff000000) >> 24;
+ color = (m_vega_vram[count + (0x14000/4) * (m_vega_vbuffer ^ 1)] & 0xff000000) >> 24;
bitmap.pix16(y, x*4 + 0) = color;
count++;
@@ -261,7 +261,7 @@ static MACHINE_CONFIG_START( vega, vegaeo_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE_STATIC(vega)
+ MCFG_SCREEN_UPDATE_DRIVER(vegaeo_state, screen_update_vega)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vegas.c b/src/mame/drivers/vegas.c
index 50c3b7b5585..456b590581a 100644
--- a/src/mame/drivers/vegas.c
+++ b/src/mame/drivers/vegas.c
@@ -501,6 +501,7 @@ public:
DECLARE_DRIVER_INIT(sf2049se);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_vegas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -523,10 +524,9 @@ static void remap_dynamic_addresses(running_machine &machine);
*
*************************************/
-static SCREEN_UPDATE_RGB32( vegas )
+UINT32 vegas_state::screen_update_vegas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- vegas_state *state = screen.machine().driver_data<vegas_state>();
- return voodoo_update(state->m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -2264,7 +2264,7 @@ static MACHINE_CONFIG_START( vegascore, vegas_state )
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_STATIC(vegas)
+ MCFG_SCREEN_UPDATE_DRIVER(vegas_state, screen_update_vegas)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vendetta.c b/src/mame/drivers/vendetta.c
index dc24040f873..2bf27c405da 100644
--- a/src/mame/drivers/vendetta.c
+++ b/src/mame/drivers/vendetta.c
@@ -521,7 +521,7 @@ static MACHINE_CONFIG_START( vendetta, vendetta_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(vendetta)
+ MCFG_SCREEN_UPDATE_DRIVER(vendetta_state, screen_update_vendetta)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/vicdual.c b/src/mame/drivers/vicdual.c
index 36a7d0209bb..de8b9e9511f 100644
--- a/src/mame/drivers/vicdual.c
+++ b/src/mame/drivers/vicdual.c
@@ -295,7 +295,7 @@ static MACHINE_CONFIG_DERIVED( depthch, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -383,7 +383,7 @@ static MACHINE_CONFIG_DERIVED( safari, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw)
MACHINE_CONFIG_END
@@ -486,7 +486,7 @@ static MACHINE_CONFIG_DERIVED( frogs, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -674,7 +674,7 @@ static MACHINE_CONFIG_DERIVED( headon, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw_or_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw_or_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -686,7 +686,7 @@ static MACHINE_CONFIG_DERIVED( headons, headon )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw) // no colour prom on PCB, must be bw?
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw)
MACHINE_CONFIG_END
@@ -700,7 +700,7 @@ static MACHINE_CONFIG_DERIVED( sspaceat, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw_or_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw_or_color)
MACHINE_CONFIG_END
@@ -894,7 +894,7 @@ static MACHINE_CONFIG_DERIVED( headon2, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -907,7 +907,7 @@ static MACHINE_CONFIG_DERIVED( headon2bw, headon2 )
/* basic machine hardware */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw)
MACHINE_CONFIG_END
@@ -920,7 +920,7 @@ static MACHINE_CONFIG_DERIVED( digger, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
MACHINE_CONFIG_END
@@ -1904,7 +1904,7 @@ static MACHINE_CONFIG_DERIVED( vicdual_dualgame_root, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
MACHINE_CONFIG_END
@@ -2151,7 +2151,7 @@ static MACHINE_CONFIG_DERIVED( samurai, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
MACHINE_CONFIG_END
@@ -2246,7 +2246,7 @@ static MACHINE_CONFIG_DERIVED( nsub, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
MACHINE_CONFIG_END
@@ -2345,7 +2345,7 @@ static MACHINE_CONFIG_DERIVED( invinco, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
+ MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/victory.c b/src/mame/drivers/victory.c
index 5748e8d15e7..d0956445f5f 100644
--- a/src/mame/drivers/victory.c
+++ b/src/mame/drivers/victory.c
@@ -224,7 +224,7 @@ static MACHINE_CONFIG_START( victory, victory_state )
MCFG_SCREEN_ADD("screen", RASTER)
/* using the standard Exidy video parameters for now, needs to be confirmed */
MCFG_SCREEN_RAW_PARAMS(VICTORY_PIXEL_CLOCK, VICTORY_HTOTAL, VICTORY_HBEND, VICTORY_HBSTART, VICTORY_VTOTAL, VICTORY_VBEND, VICTORY_VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(victory)
+ MCFG_SCREEN_UPDATE_DRIVER(victory_state, screen_update_victory)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/videopin.c b/src/mame/drivers/videopin.c
index a738fef45d7..2813fac4a33 100644
--- a/src/mame/drivers/videopin.c
+++ b/src/mame/drivers/videopin.c
@@ -333,7 +333,7 @@ static MACHINE_CONFIG_START( videopin, videopin_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(304, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 303, 0, 255)
- MCFG_SCREEN_UPDATE_STATIC(videopin)
+ MCFG_SCREEN_UPDATE_DRIVER(videopin_state, screen_update_videopin)
MCFG_GFXDECODE(videopin)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/videopkr.c b/src/mame/drivers/videopkr.c
index b1befb82467..58615e4ba68 100644
--- a/src/mame/drivers/videopkr.c
+++ b/src/mame/drivers/videopkr.c
@@ -363,6 +363,7 @@ public:
DECLARE_VIDEO_START(vidadcba);
DECLARE_PALETTE_INIT(babypkr);
DECLARE_PALETTE_INIT(fortune1);
+ UINT32 screen_update_videopkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -520,11 +521,10 @@ VIDEO_START_MEMBER(videopkr_state,vidadcba)
}
-static SCREEN_UPDATE_IND16( videopkr )
+UINT32 videopkr_state::screen_update_videopkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- videopkr_state *state = screen.machine().driver_data<videopkr_state>();
- state->m_bg_tilemap->mark_all_dirty();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->mark_all_dirty();
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -1254,7 +1254,7 @@ static MACHINE_CONFIG_START( videopkr, videopkr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(2080)
- MCFG_SCREEN_UPDATE_STATIC(videopkr)
+ MCFG_SCREEN_UPDATE_DRIVER(videopkr_state, screen_update_videopkr)
MCFG_GFXDECODE(videopkr)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c
index 8bee571540e..69873e4831e 100644
--- a/src/mame/drivers/vigilant.c
+++ b/src/mame/drivers/vigilant.c
@@ -496,7 +496,7 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(16*8, (64-16)*8-1, 0*8, 32*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(vigilant)
+ MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant)
MCFG_GFXDECODE(vigilant)
MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
@@ -536,7 +536,7 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(16*8, (64-16)*8-1, 0*8, 32*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(vigilant)
+ MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant)
MCFG_GFXDECODE(buccanrs)
MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
@@ -592,7 +592,7 @@ static MACHINE_CONFIG_START( kikcubic, vigilant_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 )
- MCFG_SCREEN_UPDATE_STATIC(kikcubic)
+ MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_kikcubic)
MCFG_GFXDECODE(kikcubic)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vindictr.c b/src/mame/drivers/vindictr.c
index a68d3ebbba6..4afbbdea3bd 100644
--- a/src/mame/drivers/vindictr.c
+++ b/src/mame/drivers/vindictr.c
@@ -211,7 +211,7 @@ static MACHINE_CONFIG_START( vindictr, vindictr_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(vindictr)
+ MCFG_SCREEN_UPDATE_DRIVER(vindictr_state, screen_update_vindictr)
MCFG_VIDEO_START_OVERRIDE(vindictr_state,vindictr)
diff --git a/src/mame/drivers/viper.c b/src/mame/drivers/viper.c
index 0d2c5e3aa93..c26ff9ef220 100644
--- a/src/mame/drivers/viper.c
+++ b/src/mame/drivers/viper.c
@@ -303,12 +303,6 @@ static emu_timer *ds2430_timer;
static timer_device *ds2430_bit_timer;
-static SCREEN_UPDATE_RGB32(viper)
-{
- device_t *device = screen.machine().device("voodoo");
- return voodoo_update(device, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
-}
-
class viper_state : public driver_device
{
public:
@@ -352,8 +346,15 @@ public:
DECLARE_DRIVER_INIT(vipercf);
virtual void machine_start();
virtual void machine_reset();
+ UINT32 screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
+UINT32 viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ device_t *device = screen.machine().device("voodoo");
+ return voodoo_update(device, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+}
+
UINT32 m_mpc8240_regs[256/4];
/*****************************************************************************/
@@ -2010,7 +2011,7 @@ static MACHINE_CONFIG_START( viper, viper_state )
MCFG_PALETTE_LENGTH(65536)
- MCFG_SCREEN_UPDATE_STATIC(viper)
+ MCFG_SCREEN_UPDATE_DRIVER(viper_state, screen_update_viper)
MCFG_TIMER_ADD("ds2430_timer2", NULL)
diff --git a/src/mame/drivers/vmetal.c b/src/mame/drivers/vmetal.c
index 6693884e486..97f17e020e6 100644
--- a/src/mame/drivers/vmetal.c
+++ b/src/mame/drivers/vmetal.c
@@ -120,6 +120,7 @@ public:
TILE_GET_INFO_MEMBER(get_vmetal_mid1tilemap_tile_info);
TILE_GET_INFO_MEMBER(get_vmetal_mid2tilemap_tile_info);
DECLARE_VIDEO_START(varia);
+ UINT32 screen_update_varia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -456,25 +457,24 @@ VIDEO_START_MEMBER(vmetal_state,varia)
expand_gfx1(machine());
}
-static SCREEN_UPDATE_IND16(varia)
+UINT32 vmetal_state::screen_update_varia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- vmetal_state *state = screen.machine().driver_data<vmetal_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_mid2tilemap->set_scrollx(0, state->m_vmetal_videoregs[0x06a/2]-64 /*+ state->m_vmetal_videoregs[0x066/2]*/);
- state->m_mid1tilemap->set_scrollx(0, state->m_vmetal_videoregs[0x07a/2]-64 /*+ state->m_vmetal_videoregs[0x076/2]*/);
- state->m_texttilemap->set_scrollx(0, -64 /*+ state->m_vmetal_videoregs[0x076/2]*/);
+ m_mid2tilemap->set_scrollx(0, m_vmetal_videoregs[0x06a/2]-64 /*+ m_vmetal_videoregs[0x066/2]*/);
+ m_mid1tilemap->set_scrollx(0, m_vmetal_videoregs[0x07a/2]-64 /*+ m_vmetal_videoregs[0x076/2]*/);
+ m_texttilemap->set_scrollx(0, -64 /*+ m_vmetal_videoregs[0x076/2]*/);
- state->m_mid2tilemap->set_scrolly(0, -64);
- state->m_mid1tilemap->set_scrolly(0, -64);
- state->m_texttilemap->set_scrolly(0, -64);
+ m_mid2tilemap->set_scrolly(0, -64);
+ m_mid1tilemap->set_scrolly(0, -64);
+ m_texttilemap->set_scrolly(0, -64);
- state->m_mid1tilemap->draw(bitmap, cliprect, 0, 0);
- state->m_mid2tilemap->draw(bitmap, cliprect, 0, 0);
+ m_mid1tilemap->draw(bitmap, cliprect, 0, 0);
+ m_mid2tilemap->draw(bitmap, cliprect, 0, 0);
metro_draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_texttilemap->draw(bitmap, cliprect, 0, 0);
+ m_texttilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -492,7 +492,7 @@ static MACHINE_CONFIG_START( varia, vmetal_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(2048, 2048)
MCFG_SCREEN_VISIBLE_AREA(0+64, 319+64, 0+64, 223+64)
- MCFG_SCREEN_UPDATE_STATIC(varia)
+ MCFG_SCREEN_UPDATE_DRIVER(vmetal_state, screen_update_varia)
MCFG_GFXDECODE(vmetal)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/volfied.c b/src/mame/drivers/volfied.c
index 57062e2bfe8..ecefaa91114 100644
--- a/src/mame/drivers/volfied.c
+++ b/src/mame/drivers/volfied.c
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( volfied, volfied_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
- MCFG_SCREEN_UPDATE_STATIC(volfied)
+ MCFG_SCREEN_UPDATE_DRIVER(volfied_state, screen_update_volfied)
MCFG_GFXDECODE(volfied)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c
index a09bcdefc76..3428407b4b4 100644
--- a/src/mame/drivers/vpoker.c
+++ b/src/mame/drivers/vpoker.c
@@ -125,6 +125,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(ptm_irq);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_vpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -133,10 +134,9 @@ void vpoker_state::video_start()
m_videoram = auto_alloc_array(machine(), UINT8, 0x200);
}
-static SCREEN_UPDATE_IND16( vpoker )
+UINT32 vpoker_state::screen_update_vpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- vpoker_state *state = screen.machine().driver_data<vpoker_state>();
- UINT8 *videoram = state->m_videoram;
+ UINT8 *videoram = m_videoram;
gfx_element *gfx = screen.machine().gfx[0];
int count = 0x0000;
@@ -665,7 +665,7 @@ static MACHINE_CONFIG_START( vpoker, vpoker_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 480-1, 0*8, 240-1)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 256-1)
- MCFG_SCREEN_UPDATE_STATIC(vpoker)
+ MCFG_SCREEN_UPDATE_DRIVER(vpoker_state, screen_update_vpoker)
MCFG_GFXDECODE(vpoker)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c
index 3ebd43aac38..23139e58828 100644
--- a/src/mame/drivers/vroulet.c
+++ b/src/mame/drivers/vroulet.c
@@ -62,6 +62,7 @@ public:
DECLARE_WRITE8_MEMBER(ppi8255_c_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
+ UINT32 screen_update_vroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -115,12 +116,11 @@ void vroulet_state::video_start()
8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16(vroulet)
+UINT32 vroulet_state::screen_update_vroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- vroulet_state *state = screen.machine().driver_data<vroulet_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0], 0x320, 1, 0, 0,
- state->m_ball[1], state->m_ball[0] - 12, 0);
+ m_ball[1], m_ball[0] - 12, 0);
return 0;
}
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( vroulet, vroulet_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(vroulet)
+ MCFG_SCREEN_UPDATE_DRIVER(vroulet_state, screen_update_vroulet)
MCFG_GFXDECODE(vroulet)
MCFG_PALETTE_LENGTH(128*4)
diff --git a/src/mame/drivers/vulgus.c b/src/mame/drivers/vulgus.c
index c666d7fd8d4..802c2bfe1c1 100644
--- a/src/mame/drivers/vulgus.c
+++ b/src/mame/drivers/vulgus.c
@@ -225,7 +225,7 @@ static MACHINE_CONFIG_START( vulgus, vulgus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(vulgus)
+ MCFG_SCREEN_UPDATE_DRIVER(vulgus_state, screen_update_vulgus)
MCFG_GFXDECODE(vulgus)
MCFG_PALETTE_LENGTH(64*4+16*16+4*32*8)
diff --git a/src/mame/drivers/wallc.c b/src/mame/drivers/wallc.c
index 14a788b6042..20a1346a6bb 100644
--- a/src/mame/drivers/wallc.c
+++ b/src/mame/drivers/wallc.c
@@ -69,6 +69,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_wallc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -153,10 +154,9 @@ void wallc_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wallc_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( wallc )
+UINT32 wallc_state::screen_update_wallc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- wallc_state *state = screen.machine().driver_data<wallc_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -310,7 +310,7 @@ static MACHINE_CONFIG_START( wallc, wallc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wallc)
+ MCFG_SCREEN_UPDATE_DRIVER(wallc_state, screen_update_wallc)
MCFG_GFXDECODE(wallc)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/wardner.c b/src/mame/drivers/wardner.c
index 948bc07d8e7..81ce2fca050 100644
--- a/src/mame/drivers/wardner.c
+++ b/src/mame/drivers/wardner.c
@@ -414,7 +414,7 @@ static MACHINE_CONFIG_START( wardner, wardner_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_14MHz/2, 446, 0, 320, 286, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(toaplan0)
+ MCFG_SCREEN_UPDATE_DRIVER(wardner_state, screen_update_toaplan0)
MCFG_SCREEN_VBLANK_DEVICE("spriteram8", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE(wardner)
diff --git a/src/mame/drivers/warpsped.c b/src/mame/drivers/warpsped.c
index ea718631fca..dc744364d22 100644
--- a/src/mame/drivers/warpsped.c
+++ b/src/mame/drivers/warpsped.c
@@ -106,6 +106,7 @@ public:
TILE_GET_INFO_MEMBER(get_warpspeed_starfield_tile_info);
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_warpspeed(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
WRITE8_MEMBER(warpspeed_state::warpspeed_hardware_w)
@@ -208,13 +209,12 @@ static void warpspeed_draw_circles(bitmap_ind16 &bitmap, warpspeed_state *state)
}
}
-static SCREEN_UPDATE_IND16( warpspeed )
+UINT32 warpspeed_state::screen_update_warpspeed(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- warpspeed_state *state = screen.machine().driver_data<warpspeed_state>();
- state->m_starfield_tilemap->draw(bitmap, cliprect, 0, 0);
- warpspeed_draw_circles(bitmap, state);
- state->m_text_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_starfield_tilemap->draw(bitmap, cliprect, 0, 0);
+ warpspeed_draw_circles(bitmap, this);
+ m_text_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -318,7 +318,7 @@ static MACHINE_CONFIG_START( warpspeed, warpspeed_state )
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 8*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(warpspeed)
+ MCFG_SCREEN_UPDATE_DRIVER(warpspeed_state, screen_update_warpspeed)
MCFG_GFXDECODE(warpspeed)
MCFG_PALETTE_LENGTH(2+8)
diff --git a/src/mame/drivers/warpwarp.c b/src/mame/drivers/warpwarp.c
index 9e4a79b6cae..aada67ce4b9 100644
--- a/src/mame/drivers/warpwarp.c
+++ b/src/mame/drivers/warpwarp.c
@@ -737,7 +737,7 @@ static MACHINE_CONFIG_START( geebee, warpwarp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(geebee)
+ MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update_geebee)
MCFG_GFXDECODE(1k)
MCFG_PALETTE_LENGTH(4*2)
@@ -772,7 +772,7 @@ static MACHINE_CONFIG_START( bombbee, warpwarp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
- MCFG_SCREEN_UPDATE_STATIC(geebee)
+ MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update_geebee)
MCFG_GFXDECODE(color)
MCFG_PALETTE_LENGTH(2*256+1)
diff --git a/src/mame/drivers/warriorb.c b/src/mame/drivers/warriorb.c
index 0d68349335a..83c9f62e0a0 100644
--- a/src/mame/drivers/warriorb.c
+++ b/src/mame/drivers/warriorb.c
@@ -564,14 +564,14 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(warriorb_left)
+ MCFG_SCREEN_UPDATE_DRIVER(warriorb_state, screen_update_warriorb_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(warriorb_right)
+ MCFG_SCREEN_UPDATE_DRIVER(warriorb_state, screen_update_warriorb_right)
MCFG_TC0100SCN_ADD("tc0100scn_1", darius2d_tc0100scn_intf_l)
@@ -627,14 +627,14 @@ static MACHINE_CONFIG_START( warriorb, warriorb_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(warriorb_left)
+ MCFG_SCREEN_UPDATE_DRIVER(warriorb_state, screen_update_warriorb_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(warriorb_right)
+ MCFG_SCREEN_UPDATE_DRIVER(warriorb_state, screen_update_warriorb_right)
MCFG_TC0100SCN_ADD("tc0100scn_1", warriorb_tc0100scn_intf_l)
diff --git a/src/mame/drivers/wc90.c b/src/mame/drivers/wc90.c
index 2183ba674b3..9956609b5c4 100644
--- a/src/mame/drivers/wc90.c
+++ b/src/mame/drivers/wc90.c
@@ -326,7 +326,7 @@ static MACHINE_CONFIG_START( wc90, wc90_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wc90)
+ MCFG_SCREEN_UPDATE_DRIVER(wc90_state, screen_update_wc90)
MCFG_GFXDECODE(wc90)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/wc90b.c b/src/mame/drivers/wc90b.c
index 398767e3b07..71f9c76bc99 100644
--- a/src/mame/drivers/wc90b.c
+++ b/src/mame/drivers/wc90b.c
@@ -381,7 +381,7 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wc90b)
+ MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update_wc90b)
MCFG_GFXDECODE(wc90b)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/wecleman.c b/src/mame/drivers/wecleman.c
index 76d4999ff20..b6bb5f690a8 100644
--- a/src/mame/drivers/wecleman.c
+++ b/src/mame/drivers/wecleman.c
@@ -1074,7 +1074,7 @@ static MACHINE_CONFIG_START( wecleman, wecleman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320 +16, 256)
MCFG_SCREEN_VISIBLE_AREA(0 +8, 320-1 +8, 0 +8, 224-1 +8)
- MCFG_SCREEN_UPDATE_STATIC(wecleman)
+ MCFG_SCREEN_UPDATE_DRIVER(wecleman_state, screen_update_wecleman)
MCFG_GFXDECODE(wecleman)
@@ -1158,7 +1158,7 @@ static MACHINE_CONFIG_START( hotchase, wecleman_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(320 +16, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_STATIC(hotchase)
+ MCFG_SCREEN_UPDATE_DRIVER(wecleman_state, screen_update_hotchase)
MCFG_GFXDECODE(hotchase)
MCFG_PALETTE_LENGTH(2048*2)
diff --git a/src/mame/drivers/welltris.c b/src/mame/drivers/welltris.c
index 58121e48a00..9466ffb9bd1 100644
--- a/src/mame/drivers/welltris.c
+++ b/src/mame/drivers/welltris.c
@@ -719,7 +719,7 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(15, 367-1, 8, 248-1)
- MCFG_SCREEN_UPDATE_STATIC(welltris)
+ MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update_welltris)
MCFG_GFXDECODE(welltris)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/wgp.c b/src/mame/drivers/wgp.c
index a444fc5a56b..a2f1cc7c40b 100644
--- a/src/mame/drivers/wgp.c
+++ b/src/mame/drivers/wgp.c
@@ -1014,7 +1014,7 @@ static MACHINE_CONFIG_START( wgp, wgp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wgp)
+ MCFG_SCREEN_UPDATE_DRIVER(wgp_state, screen_update_wgp)
MCFG_GFXDECODE(wgp)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c
index 2124ffe08cf..1768fbd8ea9 100644
--- a/src/mame/drivers/wheelfir.c
+++ b/src/mame/drivers/wheelfir.c
@@ -284,6 +284,8 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_wheelfir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void screen_eof_wheelfir(screen_device &screen, bool state);
};
@@ -574,30 +576,29 @@ void wheelfir_state::video_start()
m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine(), 512, 512);
}
-static SCREEN_UPDATE_IND16(wheelfir)
+UINT32 wheelfir_state::screen_update_wheelfir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- wheelfir_state *state = screen.machine().driver_data<wheelfir_state>();
bitmap.fill(0, cliprect);
for(int y=0;y<NUM_SCANLINES;++y)
{
- UINT16 *source = &state->m_tmp_bitmap[LAYER_BG]->pix16(( (state->m_scanlines[y].y)&511));
+ UINT16 *source = &m_tmp_bitmap[LAYER_BG]->pix16(( (m_scanlines[y].y)&511));
UINT16 *dest = &bitmap.pix16(y);
for (int x=0;x<336;x++)
{
- dest[x] = source[ (x+(state->m_scanlines[y].x)) &511];
+ dest[x] = source[ (x+(m_scanlines[y].x)) &511];
}
}
- copybitmap_trans(bitmap, *state->m_tmp_bitmap[LAYER_FG], 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, *m_tmp_bitmap[LAYER_FG], 0, 0, 0, 0, cliprect, 0);
/*
{
- state->m_tmp_bitmap[LAYER_BG]->fill(0, screen.visible_area());
+ m_tmp_bitmap[LAYER_BG]->fill(0, screen.visible_area());
}
*/
@@ -605,13 +606,12 @@ static SCREEN_UPDATE_IND16(wheelfir)
return 0;
}
-static SCREEN_VBLANK( wheelfir )
+void wheelfir_state::screen_eof_wheelfir(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- wheelfir_state *state = screen.machine().driver_data<wheelfir_state>();
- state->m_tmp_bitmap[LAYER_FG]->fill(0, screen.visible_area());
+ m_tmp_bitmap[LAYER_FG]->fill(0, screen.visible_area());
}
}
@@ -828,8 +828,8 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(336, NUM_SCANLINES+NUM_VBLANK_LINES)
MCFG_SCREEN_VISIBLE_AREA(0,335, 0, NUM_SCANLINES-1)
- MCFG_SCREEN_UPDATE_STATIC(wheelfir)
- MCFG_SCREEN_VBLANK_STATIC(wheelfir)
+ MCFG_SCREEN_UPDATE_DRIVER(wheelfir_state, screen_update_wheelfir)
+ MCFG_SCREEN_VBLANK_DRIVER(wheelfir_state, screen_eof_wheelfir)
MCFG_PALETTE_LENGTH(NUM_COLORS)
diff --git a/src/mame/drivers/wildpkr.c b/src/mame/drivers/wildpkr.c
index 568ead9720e..9bd98a83b72 100644
--- a/src/mame/drivers/wildpkr.c
+++ b/src/mame/drivers/wildpkr.c
@@ -176,6 +176,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void palette_init();
+ UINT32 screen_update_wildpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -187,9 +188,8 @@ void wildpkr_state::video_start()
{
}
-static SCREEN_UPDATE_IND16( wildpkr )
+UINT32 wildpkr_state::screen_update_wildpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
-// wildpkr_state *state = screen.machine().driver_data<wildpkr_state>();
return 0;
}
@@ -284,7 +284,7 @@ static MACHINE_CONFIG_START( wildpkr, wildpkr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
- MCFG_SCREEN_UPDATE_STATIC(wildpkr)
+ MCFG_SCREEN_UPDATE_DRIVER(wildpkr_state, screen_update_wildpkr)
// MCFG_HD63484_ADD("hd63484", wildpkr_hd63484_intf)
MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index 84a45416b8c..59b1ac1a0ed 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -1451,7 +1451,7 @@ static MACHINE_CONFIG_START( defender, williams_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 10, 304, 260, 7, 245)
- MCFG_SCREEN_UPDATE_STATIC(williams)
+ MCFG_SCREEN_UPDATE_DRIVER(williams_state, screen_update_williams)
MCFG_VIDEO_START_OVERRIDE(williams_state,williams)
@@ -1590,7 +1590,7 @@ static MACHINE_CONFIG_DERIVED( blastkit, williams )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(williams_state,blaster)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(blaster)
+ MCFG_SCREEN_UPDATE_DRIVER(williams_state, screen_update_blaster)
/* pia */
MCFG_PIA6821_MODIFY("pia_0", williams_49way_muxed_pia_0_intf)
@@ -1643,7 +1643,7 @@ static MACHINE_CONFIG_START( williams2, williams_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 8, 284, 260, 8, 248)
- MCFG_SCREEN_UPDATE_STATIC(williams2)
+ MCFG_SCREEN_UPDATE_DRIVER(williams_state, screen_update_williams2)
MCFG_VIDEO_START_OVERRIDE(williams_state,williams2)
diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c
index 9126bf1978b..fd8c659cb40 100644
--- a/src/mame/drivers/wink.c
+++ b/src/mame/drivers/wink.c
@@ -42,6 +42,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
+ UINT32 screen_update_wink(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -65,10 +66,9 @@ void wink_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wink_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-static SCREEN_UPDATE_IND16( wink )
+UINT32 wink_state::screen_update_wink(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- wink_state *state = screen.machine().driver_data<wink_state>();
- state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
+ m_bg_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@@ -360,7 +360,7 @@ static MACHINE_CONFIG_START( wink, wink_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wink)
+ MCFG_SCREEN_UPDATE_DRIVER(wink_state, screen_update_wink)
MCFG_GFXDECODE(wink)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/wiping.c b/src/mame/drivers/wiping.c
index 22ec05471b2..81bb0c14fc1 100644
--- a/src/mame/drivers/wiping.c
+++ b/src/mame/drivers/wiping.c
@@ -297,7 +297,7 @@ static MACHINE_CONFIG_START( wiping, wiping_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wiping)
+ MCFG_SCREEN_UPDATE_DRIVER(wiping_state, screen_update_wiping)
MCFG_GFXDECODE(wiping)
MCFG_PALETTE_LENGTH(64*4+64*4)
diff --git a/src/mame/drivers/witch.c b/src/mame/drivers/witch.c
index 00ba320310f..ca88359f4a8 100644
--- a/src/mame/drivers/witch.c
+++ b/src/mame/drivers/witch.c
@@ -238,6 +238,7 @@ public:
TILE_GET_INFO_MEMBER(get_gfx0a_tile_info);
TILE_GET_INFO_MEMBER(get_gfx1_tile_info);
virtual void video_start();
+ UINT32 screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -764,18 +765,17 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r
}
-static SCREEN_UPDATE_IND16(witch)
+UINT32 witch_state::screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- witch_state *state = screen.machine().driver_data<witch_state>();
- state->m_gfx1_tilemap->set_scrollx(0, state->m_scrollx-7 ); //offset to have it aligned with the sprites
- state->m_gfx1_tilemap->set_scrolly(0, state->m_scrolly+8 );
+ m_gfx1_tilemap->set_scrollx(0, m_scrollx-7 ); //offset to have it aligned with the sprites
+ m_gfx1_tilemap->set_scrolly(0, m_scrolly+8 );
- state->m_gfx1_tilemap->draw(bitmap, cliprect, 0,0);
- state->m_gfx0a_tilemap->draw(bitmap, cliprect, 0,0);
+ m_gfx1_tilemap->draw(bitmap, cliprect, 0,0);
+ m_gfx0a_tilemap->draw(bitmap, cliprect, 0,0);
draw_sprites(screen.machine(), bitmap, cliprect);
- state->m_gfx0b_tilemap->draw(bitmap, cliprect, 0,0);
+ m_gfx0b_tilemap->draw(bitmap, cliprect, 0,0);
return 0;
}
@@ -808,7 +808,7 @@ static MACHINE_CONFIG_START( witch, witch_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(8, 256-1-8, 8*4, 256-8*4-1)
- MCFG_SCREEN_UPDATE_STATIC(witch)
+ MCFG_SCREEN_UPDATE_DRIVER(witch_state, screen_update_witch)
MCFG_GFXDECODE(witch)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/wiz.c b/src/mame/drivers/wiz.c
index 074f9f55b54..0fa46a2a721 100644
--- a/src/mame/drivers/wiz.c
+++ b/src/mame/drivers/wiz.c
@@ -735,7 +735,7 @@ static MACHINE_CONFIG_START( wiz, wiz_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(wiz)
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_wiz)
MCFG_GFXDECODE(wiz)
MCFG_PALETTE_LENGTH(256)
@@ -765,7 +765,7 @@ static MACHINE_CONFIG_DERIVED( stinger, wiz )
/* video hardware */
MCFG_GFXDECODE(stinger)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(stinger)
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_stinger)
/* sound hardware */
MCFG_DEVICE_REMOVE("8910.3")
@@ -794,7 +794,7 @@ static MACHINE_CONFIG_DERIVED( kungfut, wiz )
/* video hardware */
MCFG_GFXDECODE(stinger)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(kungfut)
+ MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_kungfut)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wolfpack.c b/src/mame/drivers/wolfpack.c
index 3d48fa46565..85266a71638 100644
--- a/src/mame/drivers/wolfpack.c
+++ b/src/mame/drivers/wolfpack.c
@@ -300,8 +300,8 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 239)
- MCFG_SCREEN_UPDATE_STATIC(wolfpack)
- MCFG_SCREEN_VBLANK_STATIC(wolfpack)
+ MCFG_SCREEN_UPDATE_DRIVER(wolfpack_state, screen_update_wolfpack)
+ MCFG_SCREEN_VBLANK_DRIVER(wolfpack_state, screen_eof_wolfpack)
MCFG_GFXDECODE(wolfpack)
MCFG_PALETTE_LENGTH(12)
diff --git a/src/mame/drivers/wrally.c b/src/mame/drivers/wrally.c
index 9e10f44cf3d..499ab78f4c6 100644
--- a/src/mame/drivers/wrally.c
+++ b/src/mame/drivers/wrally.c
@@ -263,7 +263,7 @@ static MACHINE_CONFIG_START( wrally, wrally_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1)
- MCFG_SCREEN_UPDATE_STATIC(wrally)
+ MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update_wrally)
MCFG_GFXDECODE(wrally)
MCFG_PALETTE_LENGTH(1024*8)
diff --git a/src/mame/drivers/wwfsstar.c b/src/mame/drivers/wwfsstar.c
index ecc96580ef7..0f7c46f068c 100644
--- a/src/mame/drivers/wwfsstar.c
+++ b/src/mame/drivers/wwfsstar.c
@@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 320, 0, 256, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE_STATIC(wwfsstar)
+ MCFG_SCREEN_UPDATE_DRIVER(wwfsstar_state, screen_update_wwfsstar)
MCFG_GFXDECODE(wwfsstar)
MCFG_PALETTE_LENGTH(384)
diff --git a/src/mame/drivers/wwfwfest.c b/src/mame/drivers/wwfwfest.c
index a2cac42ce58..52028d0315d 100644
--- a/src/mame/drivers/wwfwfest.c
+++ b/src/mame/drivers/wwfwfest.c
@@ -397,7 +397,7 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE_STATIC(wwfwfest)
+ MCFG_SCREEN_UPDATE_DRIVER(wwfwfest_state, screen_update_wwfwfest)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(wwfwfest)
diff --git a/src/mame/drivers/xain.c b/src/mame/drivers/xain.c
index b4df3d2aa60..c271e2f20d5 100644
--- a/src/mame/drivers/xain.c
+++ b/src/mame/drivers/xain.c
@@ -596,7 +596,7 @@ static MACHINE_CONFIG_START( xsleena, xain_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE_STATIC(xain)
+ MCFG_SCREEN_UPDATE_DRIVER(xain_state, screen_update_xain)
MCFG_GFXDECODE(xain)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/xexex.c b/src/mame/drivers/xexex.c
index b6ecf1babe7..c61dd05c782 100644
--- a/src/mame/drivers/xexex.c
+++ b/src/mame/drivers/xexex.c
@@ -535,7 +535,7 @@ static MACHINE_CONFIG_START( xexex, xexex_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 0, 0+256-1)
- MCFG_SCREEN_UPDATE_STATIC(xexex)
+ MCFG_SCREEN_UPDATE_DRIVER(xexex_state, screen_update_xexex)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c
index 6d16f5c572b..4d0b0501252 100644
--- a/src/mame/drivers/xmen.c
+++ b/src/mame/drivers/xmen.c
@@ -385,7 +385,7 @@ static MACHINE_CONFIG_START( xmen, xmen_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) /* correct, same issue of TMNT2 */
- MCFG_SCREEN_UPDATE_STATIC(xmen)
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen)
MCFG_PALETTE_LENGTH(2048)
MCFG_K052109_ADD("k052109", xmen_k052109_intf)
@@ -437,15 +437,15 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(xmen6p_left)
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen6p_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(16*8, 52*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(xmen6p_right)
- MCFG_SCREEN_VBLANK_STATIC(xmen6p)
+ MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen6p_right)
+ MCFG_SCREEN_VBLANK_DRIVER(xmen_state, screen_eof_xmen6p)
MCFG_VIDEO_START_OVERRIDE(xmen_state,xmen6p)
diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c
index 34c95b30a69..b298290d980 100644
--- a/src/mame/drivers/xorworld.c
+++ b/src/mame/drivers/xorworld.c
@@ -188,7 +188,7 @@ static MACHINE_CONFIG_START( xorworld, xorworld_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(xorworld)
+ MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld)
MCFG_GFXDECODE(xorworld)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/xxmissio.c b/src/mame/drivers/xxmissio.c
index 35179eab5b2..e0f5a32a4ee 100644
--- a/src/mame/drivers/xxmissio.c
+++ b/src/mame/drivers/xxmissio.c
@@ -301,7 +301,7 @@ static MACHINE_CONFIG_START( xxmissio, xxmissio_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(xxmissio)
+ MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update_xxmissio)
MCFG_GFXDECODE(xxmissio)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/xybots.c b/src/mame/drivers/xybots.c
index 9dfd64833c0..7169f2fef75 100644
--- a/src/mame/drivers/xybots.c
+++ b/src/mame/drivers/xybots.c
@@ -210,7 +210,7 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
/* note: these parameters are from published specs, not derived */
/* the board uses a SYNGEN chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
- MCFG_SCREEN_UPDATE_STATIC(xybots)
+ MCFG_SCREEN_UPDATE_DRIVER(xybots_state, screen_update_xybots)
MCFG_VIDEO_START_OVERRIDE(xybots_state,xybots)
diff --git a/src/mame/drivers/xyonix.c b/src/mame/drivers/xyonix.c
index 80d6e1b2822..8183b58303d 100644
--- a/src/mame/drivers/xyonix.c
+++ b/src/mame/drivers/xyonix.c
@@ -244,7 +244,7 @@ static MACHINE_CONFIG_START( xyonix, xyonix_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(80*4, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 80*4-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(xyonix)
+ MCFG_SCREEN_UPDATE_DRIVER(xyonix_state, screen_update_xyonix)
MCFG_GFXDECODE(xyonix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/yiear.c b/src/mame/drivers/yiear.c
index 1a489f0a0c7..966d6bd8d0e 100644
--- a/src/mame/drivers/yiear.c
+++ b/src/mame/drivers/yiear.c
@@ -299,7 +299,7 @@ static MACHINE_CONFIG_START( yiear, yiear_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(yiear)
+ MCFG_SCREEN_UPDATE_DRIVER(yiear_state, screen_update_yiear)
MCFG_GFXDECODE(yiear)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index cb2d5e74e9c..3024333d2cf 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -603,7 +603,7 @@ static MACHINE_CONFIG_START( magicbub, yunsun16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0+0x20, 0x180-1-0x20, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(yunsun16)
+ MCFG_SCREEN_UPDATE_DRIVER(yunsun16_state, screen_update_yunsun16)
MCFG_GFXDECODE(yunsun16)
MCFG_PALETTE_LENGTH(8192)
@@ -641,7 +641,7 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1-4, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE_STATIC(yunsun16)
+ MCFG_SCREEN_UPDATE_DRIVER(yunsun16_state, screen_update_yunsun16)
MCFG_GFXDECODE(yunsun16)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/yunsung8.c b/src/mame/drivers/yunsung8.c
index c0ba0f4f71c..58ba1b8c9f9 100644
--- a/src/mame/drivers/yunsung8.c
+++ b/src/mame/drivers/yunsung8.c
@@ -515,7 +515,7 @@ static MACHINE_CONFIG_START( yunsung8, yunsung8_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0+64, 512-64-1, 0+8, 256-8-1)
- MCFG_SCREEN_UPDATE_STATIC(yunsung8)
+ MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update_yunsung8)
MCFG_GFXDECODE(yunsung8)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/zac2650.c b/src/mame/drivers/zac2650.c
index 4bdb485a15b..f0c80850c6c 100644
--- a/src/mame/drivers/zac2650.c
+++ b/src/mame/drivers/zac2650.c
@@ -244,7 +244,7 @@ static MACHINE_CONFIG_START( tinvader, zac2650_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1041))
MCFG_SCREEN_SIZE(30*24, 32*24)
MCFG_SCREEN_VISIBLE_AREA(0, 719, 0, 767)
- MCFG_SCREEN_UPDATE_STATIC(tinvader)
+ MCFG_SCREEN_UPDATE_DRIVER(zac2650_state, screen_update_tinvader)
MCFG_GFXDECODE(tinvader)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/zaccaria.c b/src/mame/drivers/zaccaria.c
index e0efe3fde48..3bcd01d7036 100644
--- a/src/mame/drivers/zaccaria.c
+++ b/src/mame/drivers/zaccaria.c
@@ -606,7 +606,7 @@ static MACHINE_CONFIG_START( zaccaria, zaccaria_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_STATIC(zaccaria)
+ MCFG_SCREEN_UPDATE_DRIVER(zaccaria_state, screen_update_zaccaria)
MCFG_GFXDECODE(zaccaria)
MCFG_PALETTE_LENGTH(32*8+32*8)
diff --git a/src/mame/drivers/zaxxon.c b/src/mame/drivers/zaxxon.c
index 8acdece266b..a7f92f77724 100644
--- a/src/mame/drivers/zaxxon.c
+++ b/src/mame/drivers/zaxxon.c
@@ -973,7 +973,7 @@ static MACHINE_CONFIG_START( root, zaxxon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE_STATIC(zaxxon)
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_zaxxon)
MACHINE_CONFIG_END
@@ -990,7 +990,7 @@ static MACHINE_CONFIG_DERIVED( futspy, root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(futspy)
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_futspy)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1008,7 +1008,7 @@ static MACHINE_CONFIG_DERIVED( razmataz, root )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(zaxxon_state,razmataz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(razmataz)
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_razmataz)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1032,7 +1032,7 @@ static MACHINE_CONFIG_DERIVED( congo, root )
MCFG_PALETTE_LENGTH(512)
MCFG_VIDEO_START_OVERRIDE(zaxxon_state,congo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_STATIC(congo)
+ MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_congo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c
index c20d05ac044..f72019f532e 100644
--- a/src/mame/drivers/zr107.c
+++ b/src/mame/drivers/zr107.c
@@ -205,6 +205,8 @@ public:
virtual void machine_reset();
DECLARE_VIDEO_START(zr107);
DECLARE_VIDEO_START(jetwave);
+ UINT32 screen_update_zr107(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_jetwave(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -218,9 +220,8 @@ VIDEO_START_MEMBER(zr107_state,jetwave)
}
-static SCREEN_UPDATE_RGB32( jetwave )
+UINT32 zr107_state::screen_update_jetwave(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- zr107_state *state = screen.machine().driver_data<zr107_state>();
device_t *k001604 = screen.machine().device("k001604");
bitmap.fill(screen.machine().pens[0], cliprect);
@@ -229,8 +230,8 @@ static SCREEN_UPDATE_RGB32( jetwave )
k001604_draw_front_layer(k001604, bitmap, cliprect);
- draw_7segment_led(bitmap, 3, 3, state->m_led_reg0);
- draw_7segment_led(bitmap, 9, 3, state->m_led_reg1);
+ draw_7segment_led(bitmap, 3, 3, m_led_reg0);
+ draw_7segment_led(bitmap, 9, 3, m_led_reg1);
sharc_set_flag_input(screen.machine().device("dsp"), 1, ASSERT_LINE);
return 0;
@@ -271,9 +272,8 @@ VIDEO_START_MEMBER(zr107_state,zr107)
K001005_init(machine());
}
-static SCREEN_UPDATE_RGB32( zr107 )
+UINT32 zr107_state::screen_update_zr107(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- zr107_state *state = screen.machine().driver_data<zr107_state>();
device_t *k056832 = screen.machine().device("k056832");
bitmap.fill(screen.machine().pens[0], cliprect);
@@ -281,8 +281,8 @@ static SCREEN_UPDATE_RGB32( zr107 )
K001005_draw(bitmap, cliprect);
k056832_tilemap_draw(k056832, bitmap, cliprect, 0, 0, 0);
- draw_7segment_led(bitmap, 3, 3, state->m_led_reg0);
- draw_7segment_led(bitmap, 9, 3, state->m_led_reg1);
+ draw_7segment_led(bitmap, 3, 3, m_led_reg0);
+ draw_7segment_led(bitmap, 9, 3, m_led_reg1);
sharc_set_flag_input(screen.machine().device("dsp"), 1, ASSERT_LINE);
return 0;
@@ -751,7 +751,7 @@ static MACHINE_CONFIG_START( zr107, zr107_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(zr107)
+ MCFG_SCREEN_UPDATE_DRIVER(zr107_state, screen_update_zr107)
MCFG_PALETTE_LENGTH(65536)
@@ -807,7 +807,7 @@ static MACHINE_CONFIG_START( jetwave, zr107_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE_STATIC(jetwave)
+ MCFG_SCREEN_UPDATE_DRIVER(zr107_state, screen_update_jetwave)
MCFG_PALETTE_LENGTH(65536)