summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.gitattributes9
-rw-r--r--src/build/png2bdc.c23
-rw-r--r--src/emu/cpu/tms34010/tms34010.c71
-rw-r--r--src/emu/cpu/tms34010/tms34010.h6
-rw-r--r--src/emu/crsshair.c19
-rw-r--r--src/emu/device.h1
-rw-r--r--src/emu/disound.c11
-rw-r--r--src/emu/disound.h3
-rw-r--r--src/emu/drawgfx.c1580
-rw-r--r--src/emu/drawgfx.h104
-rw-r--r--src/emu/drawgfxm.h93
-rw-r--r--src/emu/drivers/empty.c9
-rw-r--r--src/emu/emu.mak4
-rw-r--r--src/emu/emupal.c25
-rw-r--r--src/emu/machine.c13
-rw-r--r--src/emu/machine.h9
-rw-r--r--src/emu/machine/laserdsc.c1229
-rw-r--r--src/emu/machine/laserdsc.h536
-rw-r--r--src/emu/machine/ldcore.c1709
-rw-r--r--src/emu/machine/ldcore.h268
-rw-r--r--src/emu/machine/ldpr8210.c1468
-rw-r--r--src/emu/machine/ldpr8210.h224
-rw-r--r--src/emu/machine/ldstub.c51
-rw-r--r--src/emu/machine/ldstub.h146
-rw-r--r--src/emu/machine/ldv1000.c785
-rw-r--r--src/emu/machine/ldv1000.h158
-rw-r--r--src/emu/machine/ldvp931.c870
-rw-r--r--src/emu/machine/ldvp931.h168
-rw-r--r--src/emu/machine/s3c2400.c2
-rw-r--r--src/emu/machine/s3c2400.h4
-rw-r--r--src/emu/machine/s3c2410.c2
-rw-r--r--src/emu/machine/s3c2410.h4
-rw-r--r--src/emu/machine/s3c2440.c2
-rw-r--r--src/emu/machine/s3c2440.h4
-rw-r--r--src/emu/machine/s3c24xx.c32
-rw-r--r--src/emu/render.c158
-rw-r--r--src/emu/render.h27
-rw-r--r--src/emu/rendersw.c228
-rw-r--r--src/emu/rendfont.c32
-rw-r--r--src/emu/rendfont.h4
-rw-r--r--src/emu/rendlay.c294
-rw-r--r--src/emu/rendlay.h44
-rw-r--r--src/emu/rendutil.c183
-rw-r--r--src/emu/rendutil.h5
-rw-r--r--src/emu/save.h22
-rw-r--r--src/emu/screen.c182
-rw-r--r--src/emu/screen.h185
-rw-r--r--src/emu/sound/bsmt2000.c2
-rw-r--r--src/emu/sound/cdp1864.c11
-rw-r--r--src/emu/sound/cdp1864.h5
-rw-r--r--src/emu/sound/cdp1869.c7
-rw-r--r--src/emu/sound/cdp1869.h14
-rw-r--r--src/emu/sound/mos6560.c6
-rw-r--r--src/emu/sound/mos6560.h2
-rw-r--r--src/emu/tilemap.c358
-rw-r--r--src/emu/tilemap.h26
-rw-r--r--src/emu/ui.c124
-rw-r--r--src/emu/uigfx.c33
-rw-r--r--src/emu/uimenu.c8
-rw-r--r--src/emu/uimenu.h4
-rw-r--r--src/emu/validity.c2
-rw-r--r--src/emu/video.c12
-rw-r--r--src/emu/video.h4
-rw-r--r--src/emu/video/315_5124.c45
-rw-r--r--src/emu/video/315_5124.h10
-rw-r--r--src/emu/video/cdp1861.c11
-rw-r--r--src/emu/video/cdp1861.h8
-rw-r--r--src/emu/video/cdp1862.c13
-rw-r--r--src/emu/video/cdp1862.h4
-rw-r--r--src/emu/video/crt9021.c5
-rw-r--r--src/emu/video/crt9021.h2
-rw-r--r--src/emu/video/h63484.c5
-rw-r--r--src/emu/video/h63484.h8
-rw-r--r--src/emu/video/hd44102.c3
-rw-r--r--src/emu/video/hd44102.h2
-rw-r--r--src/emu/video/hd61830.c11
-rw-r--r--src/emu/video/hd61830.h10
-rw-r--r--src/emu/video/i8275.c2
-rw-r--r--src/emu/video/i8275.h2
-rw-r--r--src/emu/video/k053250.c6
-rw-r--r--src/emu/video/k053250.h6
-rw-r--r--src/emu/video/mc6845.c3
-rw-r--r--src/emu/video/mc6845.h14
-rw-r--r--src/emu/video/msm6255.c9
-rw-r--r--src/emu/video/msm6255.h8
-rw-r--r--src/emu/video/pc_cga.c258
-rw-r--r--src/emu/video/pc_cga.h2
-rw-r--r--src/emu/video/pc_vga.c11
-rw-r--r--src/emu/video/pc_vga.h2
-rw-r--r--src/emu/video/psx.c21
-rw-r--r--src/emu/video/psx.h8
-rw-r--r--src/emu/video/s2636.c12
-rw-r--r--src/emu/video/s2636.h4
-rw-r--r--src/emu/video/saa5050.c2
-rw-r--r--src/emu/video/saa5050.h2
-rw-r--r--src/emu/video/sed1330.c13
-rw-r--r--src/emu/video/sed1330.h10
-rw-r--r--src/emu/video/tms9928a.c9
-rw-r--r--src/emu/video/tms9928a.h7
-rw-r--r--src/emu/video/upd3301.c3
-rw-r--r--src/emu/video/upd3301.h8
-rw-r--r--src/emu/video/v9938.c3075
-rw-r--r--src/emu/video/v9938.h271
-rw-r--r--src/emu/video/v9938mod.c736
-rw-r--r--src/emu/video/vector.c6
-rw-r--r--src/emu/video/vector.h2
-rw-r--r--src/emu/video/voodoo.c2
-rw-r--r--src/emu/video/voodoo.h2
-rw-r--r--src/ldplayer/ldplayer.c25
-rw-r--r--src/lib/util/avcomp.c61
-rw-r--r--src/lib/util/avcomp.h35
-rw-r--r--src/lib/util/aviio.c34
-rw-r--r--src/lib/util/aviio.h6
-rw-r--r--src/lib/util/bitmap.c113
-rw-r--r--src/lib/util/bitmap.h281
-rw-r--r--src/lib/util/chd.c26
-rw-r--r--src/lib/util/png.c43
-rw-r--r--src/lib/util/png.h2
-rw-r--r--src/mame/drivers/1942.c3
-rw-r--r--src/mame/drivers/1943.c3
-rw-r--r--src/mame/drivers/1945kiii.c7
-rw-r--r--src/mame/drivers/2mindril.c3
-rw-r--r--src/mame/drivers/30test.c5
-rw-r--r--src/mame/drivers/39in1.c5
-rw-r--r--src/mame/drivers/3do.c5
-rw-r--r--src/mame/drivers/40love.c6
-rw-r--r--src/mame/drivers/4enraya.c3
-rw-r--r--src/mame/drivers/4roses.c3
-rw-r--r--src/mame/drivers/5clown.c5
-rw-r--r--src/mame/drivers/8080bw.c30
-rw-r--r--src/mame/drivers/88games.c3
-rw-r--r--src/mame/drivers/ace.c5
-rw-r--r--src/mame/drivers/acefruit.c5
-rw-r--r--src/mame/drivers/acommand.c9
-rw-r--r--src/mame/drivers/actfancr.c6
-rw-r--r--src/mame/drivers/adp.c17
-rw-r--r--src/mame/drivers/aeroboto.c3
-rw-r--r--src/mame/drivers/aerofgt.c36
-rw-r--r--src/mame/drivers/airbustr.c3
-rw-r--r--src/mame/drivers/ajax.c3
-rw-r--r--src/mame/drivers/albazc.c7
-rw-r--r--src/mame/drivers/albazg.c5
-rw-r--r--src/mame/drivers/aleck64.c3
-rw-r--r--src/mame/drivers/alg.c28
-rw-r--r--src/mame/drivers/alien.c7
-rw-r--r--src/mame/drivers/aliens.c3
-rw-r--r--src/mame/drivers/alpha68k.c27
-rw-r--r--src/mame/drivers/amaticmg.c5
-rw-r--r--src/mame/drivers/ambush.c3
-rw-r--r--src/mame/drivers/ampoker2.c3
-rw-r--r--src/mame/drivers/amspdwy.c3
-rw-r--r--src/mame/drivers/angelkds.c3
-rw-r--r--src/mame/drivers/appoooh.c6
-rw-r--r--src/mame/drivers/aquarium.c3
-rw-r--r--src/mame/drivers/arabian.c3
-rw-r--r--src/mame/drivers/arcadecl.c3
-rw-r--r--src/mame/drivers/arcadia.c3
-rw-r--r--src/mame/drivers/argus.c9
-rw-r--r--src/mame/drivers/aristmk4.c5
-rw-r--r--src/mame/drivers/aristmk5.c6
-rw-r--r--src/mame/drivers/aristmk6.c5
-rw-r--r--src/mame/drivers/arkanoid.c6
-rw-r--r--src/mame/drivers/armedf.c24
-rw-r--r--src/mame/drivers/artmagic.c6
-rw-r--r--src/mame/drivers/ashnojoe.c3
-rw-r--r--src/mame/drivers/asterix.c3
-rw-r--r--src/mame/drivers/asteroid.c4
-rw-r--r--src/mame/drivers/astinvad.c12
-rw-r--r--src/mame/drivers/astrocde.c5
-rw-r--r--src/mame/drivers/astrocorp.c20
-rw-r--r--src/mame/drivers/astrof.c13
-rw-r--r--src/mame/drivers/asuka.c18
-rw-r--r--src/mame/drivers/atarifb.c7
-rw-r--r--src/mame/drivers/atarig1.c3
-rw-r--r--src/mame/drivers/atarig42.c3
-rw-r--r--src/mame/drivers/atarigt.c3
-rw-r--r--src/mame/drivers/atarigx2.c3
-rw-r--r--src/mame/drivers/atarisy1.c3
-rw-r--r--src/mame/drivers/atarisy2.c3
-rw-r--r--src/mame/drivers/atarisy4.c5
-rw-r--r--src/mame/drivers/atetris.c6
-rw-r--r--src/mame/drivers/attckufo.c5
-rw-r--r--src/mame/drivers/atvtrack.c5
-rw-r--r--src/mame/drivers/avalnche.c5
-rw-r--r--src/mame/drivers/avt.c5
-rw-r--r--src/mame/drivers/aztarac.c2
-rw-r--r--src/mame/drivers/backfire.c26
-rw-r--r--src/mame/drivers/badlands.c6
-rw-r--r--src/mame/drivers/bagman.c9
-rw-r--r--src/mame/drivers/balsente.c3
-rw-r--r--src/mame/drivers/bankp.c3
-rw-r--r--src/mame/drivers/baraduke.c3
-rw-r--r--src/mame/drivers/bartop52.c3
-rw-r--r--src/mame/drivers/batman.c3
-rw-r--r--src/mame/drivers/battlane.c3
-rw-r--r--src/mame/drivers/battlera.c3
-rw-r--r--src/mame/drivers/battlex.c3
-rw-r--r--src/mame/drivers/battlnts.c3
-rw-r--r--src/mame/drivers/bbusters.c6
-rw-r--r--src/mame/drivers/beaminv.c5
-rw-r--r--src/mame/drivers/beathead.c2
-rw-r--r--src/mame/drivers/beezer.c3
-rw-r--r--src/mame/drivers/berzerk.c5
-rw-r--r--src/mame/drivers/bestleag.c11
-rw-r--r--src/mame/drivers/bfcobra.c5
-rw-r--r--src/mame/drivers/bfm_sc1.c3
-rw-r--r--src/mame/drivers/bfm_sc2.c7
-rw-r--r--src/mame/drivers/bfm_swp.c7
-rw-r--r--src/mame/drivers/big10.c30
-rw-r--r--src/mame/drivers/bigevglf.c3
-rw-r--r--src/mame/drivers/bigstrkb.c3
-rw-r--r--src/mame/drivers/bingoc.c5
-rw-r--r--src/mame/drivers/bingor.c5
-rw-r--r--src/mame/drivers/bionicc.c3
-rw-r--r--src/mame/drivers/bishi.c3
-rw-r--r--src/mame/drivers/bking.c3
-rw-r--r--src/mame/drivers/blackt96.c9
-rw-r--r--src/mame/drivers/bladestl.c3
-rw-r--r--src/mame/drivers/blitz.c5
-rw-r--r--src/mame/drivers/blitz68k.c28
-rw-r--r--src/mame/drivers/blktiger.c3
-rw-r--r--src/mame/drivers/blmbycar.c6
-rw-r--r--src/mame/drivers/blockade.c3
-rw-r--r--src/mame/drivers/blockhl.c3
-rw-r--r--src/mame/drivers/blockout.c3
-rw-r--r--src/mame/drivers/bloodbro.c7
-rw-r--r--src/mame/drivers/blstroid.c3
-rw-r--r--src/mame/drivers/blueprnt.c3
-rw-r--r--src/mame/drivers/bmcbowl.c5
-rw-r--r--src/mame/drivers/bnstars.c14
-rw-r--r--src/mame/drivers/bogeyman.c3
-rw-r--r--src/mame/drivers/bombjack.c3
-rw-r--r--src/mame/drivers/boogwing.c3
-rw-r--r--src/mame/drivers/bottom9.c3
-rw-r--r--src/mame/drivers/boxer.c7
-rw-r--r--src/mame/drivers/brkthru.c6
-rw-r--r--src/mame/drivers/bsktball.c3
-rw-r--r--src/mame/drivers/btime.c15
-rw-r--r--src/mame/drivers/btoads.c6
-rw-r--r--src/mame/drivers/bublbobl.c6
-rw-r--r--src/mame/drivers/buggychl.c3
-rw-r--r--src/mame/drivers/buster.c5
-rw-r--r--src/mame/drivers/bwidow.c2
-rw-r--r--src/mame/drivers/bwing.c3
-rw-r--r--src/mame/drivers/bzone.c2
-rw-r--r--src/mame/drivers/cabal.c6
-rw-r--r--src/mame/drivers/cabaret.c5
-rw-r--r--src/mame/drivers/calomega.c3
-rw-r--r--src/mame/drivers/calorie.c5
-rw-r--r--src/mame/drivers/canyon.c3
-rw-r--r--src/mame/drivers/capbowl.c3
-rw-r--r--src/mame/drivers/cardline.c5
-rw-r--r--src/mame/drivers/carjmbre.c3
-rw-r--r--src/mame/drivers/carpolo.c3
-rw-r--r--src/mame/drivers/carrera.c5
-rw-r--r--src/mame/drivers/caswin.c5
-rw-r--r--src/mame/drivers/cave.c45
-rw-r--r--src/mame/drivers/cb2001.c5
-rw-r--r--src/mame/drivers/cball.c5
-rw-r--r--src/mame/drivers/cbasebal.c3
-rw-r--r--src/mame/drivers/cbuster.c3
-rw-r--r--src/mame/drivers/ccastles.c3
-rw-r--r--src/mame/drivers/cchance.c3
-rw-r--r--src/mame/drivers/cchasm.c2
-rw-r--r--src/mame/drivers/cclimber.c10
-rw-r--r--src/mame/drivers/cd32.c3
-rw-r--r--src/mame/drivers/cdi.c6
-rw-r--r--src/mame/drivers/centiped.c12
-rw-r--r--src/mame/drivers/cesclass.c7
-rw-r--r--src/mame/drivers/chaknpop.c3
-rw-r--r--src/mame/drivers/cham24.c5
-rw-r--r--src/mame/drivers/champbas.c12
-rw-r--r--src/mame/drivers/champbwl.c10
-rw-r--r--src/mame/drivers/chanbara.c7
-rw-r--r--src/mame/drivers/changela.c3
-rw-r--r--src/mame/drivers/cheekyms.c3
-rw-r--r--src/mame/drivers/chihiro.c5
-rw-r--r--src/mame/drivers/chinagat.c9
-rw-r--r--src/mame/drivers/chinsan.c5
-rw-r--r--src/mame/drivers/chqflag.c3
-rw-r--r--src/mame/drivers/chsuper.c7
-rw-r--r--src/mame/drivers/cinemat.c4
-rw-r--r--src/mame/drivers/circus.c12
-rw-r--r--src/mame/drivers/circusc.c3
-rw-r--r--src/mame/drivers/cischeat.c10
-rw-r--r--src/mame/drivers/citycon.c3
-rw-r--r--src/mame/drivers/clayshoo.c5
-rw-r--r--src/mame/drivers/cliffhgr.c78
-rw-r--r--src/mame/drivers/cloak.c3
-rw-r--r--src/mame/drivers/cloud9.c3
-rw-r--r--src/mame/drivers/clshroad.c6
-rw-r--r--src/mame/drivers/cmmb.c5
-rw-r--r--src/mame/drivers/cninja.c18
-rw-r--r--src/mame/drivers/cntsteer.c14
-rw-r--r--src/mame/drivers/cobra.c13
-rw-r--r--src/mame/drivers/coinmstr.c5
-rw-r--r--src/mame/drivers/coinmvga.c5
-rw-r--r--src/mame/drivers/combatsc.c6
-rw-r--r--src/mame/drivers/comebaby.c7
-rw-r--r--src/mame/drivers/commando.c3
-rw-r--r--src/mame/drivers/compgolf.c3
-rw-r--r--src/mame/drivers/contra.c3
-rw-r--r--src/mame/drivers/coolpool.c16
-rw-r--r--src/mame/drivers/coolridr.c17
-rw-r--r--src/mame/drivers/cop01.c6
-rw-r--r--src/mame/drivers/copsnrob.c3
-rw-r--r--src/mame/drivers/corona.c19
-rw-r--r--src/mame/drivers/cosmic.c14
-rw-r--r--src/mame/drivers/cps1.c12
-rw-r--r--src/mame/drivers/cps2.c3
-rw-r--r--src/mame/drivers/cps3.c25
-rw-r--r--src/mame/drivers/crbaloon.c3
-rw-r--r--src/mame/drivers/crimfght.c3
-rw-r--r--src/mame/drivers/crospang.c6
-rw-r--r--src/mame/drivers/crshrace.c3
-rw-r--r--src/mame/drivers/crystal.c5
-rw-r--r--src/mame/drivers/cshooter.c8
-rw-r--r--src/mame/drivers/csplayh5.c45
-rw-r--r--src/mame/drivers/cubeqst.c37
-rw-r--r--src/mame/drivers/cultures.c5
-rw-r--r--src/mame/drivers/cvs.c3
-rw-r--r--src/mame/drivers/cyberbal.c9
-rw-r--r--src/mame/drivers/cybertnk.c14
-rw-r--r--src/mame/drivers/cyclemb.c5
-rw-r--r--src/mame/drivers/d9final.c5
-rw-r--r--src/mame/drivers/dacholer.c7
-rw-r--r--src/mame/drivers/dai3wksi.c5
-rw-r--r--src/mame/drivers/dambustr.c3
-rw-r--r--src/mame/drivers/darius.c9
-rw-r--r--src/mame/drivers/darkhors.c19
-rw-r--r--src/mame/drivers/darkmist.c3
-rw-r--r--src/mame/drivers/darkseal.c3
-rw-r--r--src/mame/drivers/dassault.c3
-rw-r--r--src/mame/drivers/dblewing.c7
-rw-r--r--src/mame/drivers/dbz.c3
-rw-r--r--src/mame/drivers/dcheese.c3
-rw-r--r--src/mame/drivers/dcon.c6
-rw-r--r--src/mame/drivers/dday.c3
-rw-r--r--src/mame/drivers/ddayjlc.c5
-rw-r--r--src/mame/drivers/ddealer.c7
-rw-r--r--src/mame/drivers/ddenlovr.c25
-rw-r--r--src/mame/drivers/ddragon.c9
-rw-r--r--src/mame/drivers/ddragon3.c5
-rw-r--r--src/mame/drivers/ddribble.c3
-rw-r--r--src/mame/drivers/ddz.c5
-rw-r--r--src/mame/drivers/deadang.c3
-rw-r--r--src/mame/drivers/dec0.c30
-rw-r--r--src/mame/drivers/dec8.c27
-rw-r--r--src/mame/drivers/deco156.c10
-rw-r--r--src/mame/drivers/deco32.c21
-rw-r--r--src/mame/drivers/deco_ld.c21
-rw-r--r--src/mame/drivers/deco_mlc.c6
-rw-r--r--src/mame/drivers/decocass.c3
-rw-r--r--src/mame/drivers/deniam.c6
-rw-r--r--src/mame/drivers/deshoros.c5
-rw-r--r--src/mame/drivers/destroyr.c5
-rw-r--r--src/mame/drivers/dfruit.c5
-rw-r--r--src/mame/drivers/dgpix.c5
-rw-r--r--src/mame/drivers/dietgo.c3
-rw-r--r--src/mame/drivers/discoboy.c7
-rw-r--r--src/mame/drivers/diverboy.c7
-rw-r--r--src/mame/drivers/djboy.c3
-rw-r--r--src/mame/drivers/djmain.c3
-rw-r--r--src/mame/drivers/dkong.c10
-rw-r--r--src/mame/drivers/dlair.c177
-rw-r--r--src/mame/drivers/dmndrby.c5
-rw-r--r--src/mame/drivers/docastle.c3
-rw-r--r--src/mame/drivers/dogfgt.c3
-rw-r--r--src/mame/drivers/dominob.c7
-rw-r--r--src/mame/drivers/dooyong.c27
-rw-r--r--src/mame/drivers/dorachan.c5
-rw-r--r--src/mame/drivers/dotrikun.c5
-rw-r--r--src/mame/drivers/dragrace.c3
-rw-r--r--src/mame/drivers/dreamwld.c7
-rw-r--r--src/mame/drivers/drgnmst.c3
-rw-r--r--src/mame/drivers/dribling.c3
-rw-r--r--src/mame/drivers/drmicro.c3
-rw-r--r--src/mame/drivers/drtomy.c7
-rw-r--r--src/mame/drivers/drw80pkr.c5
-rw-r--r--src/mame/drivers/dunhuang.c5
-rw-r--r--src/mame/drivers/dwarfd.c7
-rw-r--r--src/mame/drivers/dynadice.c5
-rw-r--r--src/mame/drivers/dynax.c31
-rw-r--r--src/mame/drivers/dynduke.c3
-rw-r--r--src/mame/drivers/egghunt.c7
-rw-r--r--src/mame/drivers/embargo.c5
-rw-r--r--src/mame/drivers/enigma2.c10
-rw-r--r--src/mame/drivers/eolith.c3
-rw-r--r--src/mame/drivers/eolith16.c5
-rw-r--r--src/mame/drivers/epos.c6
-rw-r--r--src/mame/drivers/eprom.c9
-rw-r--r--src/mame/drivers/equites.c6
-rw-r--r--src/mame/drivers/ertictac.c3
-rw-r--r--src/mame/drivers/esd16.c7
-rw-r--r--src/mame/drivers/esh.c23
-rw-r--r--src/mame/drivers/espial.c3
-rw-r--r--src/mame/drivers/esripsys.c3
-rw-r--r--src/mame/drivers/ettrivia.c5
-rw-r--r--src/mame/drivers/exedexes.c3
-rw-r--r--src/mame/drivers/exerion.c3
-rw-r--r--src/mame/drivers/exidy.c3
-rw-r--r--src/mame/drivers/expro02.c3
-rw-r--r--src/mame/drivers/exprraid.c3
-rw-r--r--src/mame/drivers/exterm.c9
-rw-r--r--src/mame/drivers/exzisus.c3
-rw-r--r--src/mame/drivers/f-32.c5
-rw-r--r--src/mame/drivers/f1gp.c8
-rw-r--r--src/mame/drivers/famibox.c5
-rw-r--r--src/mame/drivers/fantland.c12
-rw-r--r--src/mame/drivers/fastfred.c5
-rw-r--r--src/mame/drivers/fastlane.c3
-rw-r--r--src/mame/drivers/fcombat.c3
-rw-r--r--src/mame/drivers/fcrash.c18
-rw-r--r--src/mame/drivers/feversoc.c5
-rw-r--r--src/mame/drivers/fgoal.c3
-rw-r--r--src/mame/drivers/finalizr.c3
-rw-r--r--src/mame/drivers/firebeat.c23
-rw-r--r--src/mame/drivers/firefox.c39
-rw-r--r--src/mame/drivers/firetrap.c6
-rw-r--r--src/mame/drivers/firetrk.c7
-rw-r--r--src/mame/drivers/fitfight.c6
-rw-r--r--src/mame/drivers/flkatck.c3
-rw-r--r--src/mame/drivers/flower.c3
-rw-r--r--src/mame/drivers/flstory.c12
-rw-r--r--src/mame/drivers/flyball.c5
-rw-r--r--src/mame/drivers/foodf.c3
-rw-r--r--src/mame/drivers/forte2.c10
-rw-r--r--src/mame/drivers/fortecar.c5
-rw-r--r--src/mame/drivers/freekick.c7
-rw-r--r--src/mame/drivers/fromanc2.c18
-rw-r--r--src/mame/drivers/fromance.c9
-rw-r--r--src/mame/drivers/funkball.c12
-rw-r--r--src/mame/drivers/funkybee.c3
-rw-r--r--src/mame/drivers/funkyjet.c3
-rw-r--r--src/mame/drivers/funworld.c3
-rw-r--r--src/mame/drivers/funybubl.c3
-rw-r--r--src/mame/drivers/fuukifg2.c3
-rw-r--r--src/mame/drivers/fuukifg3.c3
-rw-r--r--src/mame/drivers/gaelco.c12
-rw-r--r--src/mame/drivers/gaelco2.c24
-rw-r--r--src/mame/drivers/gaelco3d.c3
-rw-r--r--src/mame/drivers/gaiden.c12
-rw-r--r--src/mame/drivers/gal3.c8
-rw-r--r--src/mame/drivers/galaga.c12
-rw-r--r--src/mame/drivers/galastrm.c3
-rw-r--r--src/mame/drivers/galaxi.c5
-rw-r--r--src/mame/drivers/galaxia.c11
-rw-r--r--src/mame/drivers/galaxian.c5
-rw-r--r--src/mame/drivers/galaxold.c14
-rw-r--r--src/mame/drivers/galgame.c5
-rw-r--r--src/mame/drivers/galivan.c6
-rw-r--r--src/mame/drivers/galpani2.c3
-rw-r--r--src/mame/drivers/galpani3.c9
-rw-r--r--src/mame/drivers/galpanic.c13
-rw-r--r--src/mame/drivers/galspnbl.c3
-rw-r--r--src/mame/drivers/gamecstl.c7
-rw-r--r--src/mame/drivers/gamtor.c5
-rw-r--r--src/mame/drivers/gaplus.c3
-rw-r--r--src/mame/drivers/gatron.c3
-rw-r--r--src/mame/drivers/gauntlet.c3
-rw-r--r--src/mame/drivers/gberet.c5
-rw-r--r--src/mame/drivers/gbusters.c3
-rw-r--r--src/mame/drivers/gcpinbal.c3
-rw-r--r--src/mame/drivers/gei.c21
-rw-r--r--src/mame/drivers/ggconnie.c3
-rw-r--r--src/mame/drivers/ghosteo.c3
-rw-r--r--src/mame/drivers/gijoe.c3
-rw-r--r--src/mame/drivers/ginganin.c3
-rw-r--r--src/mame/drivers/gladiatr.c6
-rw-r--r--src/mame/drivers/glass.c3
-rw-r--r--src/mame/drivers/gng.c3
-rw-r--r--src/mame/drivers/go2000.c5
-rw-r--r--src/mame/drivers/goal92.c3
-rw-r--r--src/mame/drivers/goindol.c3
-rw-r--r--src/mame/drivers/goldngam.c5
-rw-r--r--src/mame/drivers/goldnpkr.c5
-rw-r--r--src/mame/drivers/goldstar.c66
-rw-r--r--src/mame/drivers/gomoku.c3
-rw-r--r--src/mame/drivers/good.c5
-rw-r--r--src/mame/drivers/goodejan.c3
-rw-r--r--src/mame/drivers/gotcha.c3
-rw-r--r--src/mame/drivers/gottlieb.c41
-rw-r--r--src/mame/drivers/gotya.c3
-rw-r--r--src/mame/drivers/gpworld.c31
-rw-r--r--src/mame/drivers/gradius3.c3
-rw-r--r--src/mame/drivers/grchamp.c3
-rw-r--r--src/mame/drivers/gridlee.c3
-rw-r--r--src/mame/drivers/groundfx.c3
-rw-r--r--src/mame/drivers/gstream.c5
-rw-r--r--src/mame/drivers/gstriker.c6
-rw-r--r--src/mame/drivers/gsword.c6
-rw-r--r--src/mame/drivers/gticlub.c9
-rw-r--r--src/mame/drivers/guab.c5
-rw-r--r--src/mame/drivers/gumbo.c3
-rw-r--r--src/mame/drivers/gunbustr.c3
-rw-r--r--src/mame/drivers/gundealr.c3
-rw-r--r--src/mame/drivers/gunpey.c5
-rw-r--r--src/mame/drivers/gunsmoke.c3
-rw-r--r--src/mame/drivers/gyruss.c3
-rw-r--r--src/mame/drivers/halleys.c19
-rw-r--r--src/mame/drivers/hanaawas.c3
-rw-r--r--src/mame/drivers/harddriv.c15
-rw-r--r--src/mame/drivers/hcastle.c3
-rw-r--r--src/mame/drivers/hexion.c3
-rw-r--r--src/mame/drivers/higemaru.c3
-rw-r--r--src/mame/drivers/highvdeo.c10
-rw-r--r--src/mame/drivers/hikaru.c5
-rw-r--r--src/mame/drivers/himesiki.c3
-rw-r--r--src/mame/drivers/hitme.c9
-rw-r--r--src/mame/drivers/hitpoker.c5
-rw-r--r--src/mame/drivers/hnayayoi.c3
-rw-r--r--src/mame/drivers/hng64.c3
-rw-r--r--src/mame/drivers/holeland.c6
-rw-r--r--src/mame/drivers/homedata.c12
-rw-r--r--src/mame/drivers/homerun.c3
-rw-r--r--src/mame/drivers/hornet.c13
-rw-r--r--src/mame/drivers/hotblock.c5
-rw-r--r--src/mame/drivers/hotstuff.c5
-rw-r--r--src/mame/drivers/hvyunit.c5
-rw-r--r--src/mame/drivers/hyhoo.c3
-rw-r--r--src/mame/drivers/hyperspt.c3
-rw-r--r--src/mame/drivers/hyprduel.c6
-rw-r--r--src/mame/drivers/igs009.c5
-rw-r--r--src/mame/drivers/igs011.c5
-rw-r--r--src/mame/drivers/igs017.c23
-rw-r--r--src/mame/drivers/igs_m027.c5
-rw-r--r--src/mame/drivers/igspoker.c9
-rw-r--r--src/mame/drivers/ikki.c3
-rw-r--r--src/mame/drivers/imolagp.c5
-rw-r--r--src/mame/drivers/intrscti.c5
-rw-r--r--src/mame/drivers/inufuku.c3
-rw-r--r--src/mame/drivers/iqblock.c3
-rw-r--r--src/mame/drivers/irobot.c3
-rw-r--r--src/mame/drivers/ironhors.c5
-rw-r--r--src/mame/drivers/istellar.c23
-rw-r--r--src/mame/drivers/itech32.c3
-rw-r--r--src/mame/drivers/itech8.c25
-rw-r--r--src/mame/drivers/itgambl2.c5
-rw-r--r--src/mame/drivers/itgambl3.c5
-rw-r--r--src/mame/drivers/itgamble.c8
-rw-r--r--src/mame/drivers/jack.c7
-rw-r--r--src/mame/drivers/jackal.c3
-rw-r--r--src/mame/drivers/jackie.c5
-rw-r--r--src/mame/drivers/jackpool.c5
-rw-r--r--src/mame/drivers/jaguar.c6
-rw-r--r--src/mame/drivers/jailbrek.c3
-rw-r--r--src/mame/drivers/jalmah.c17
-rw-r--r--src/mame/drivers/jangou.c5
-rw-r--r--src/mame/drivers/jantotsu.c5
-rw-r--r--src/mame/drivers/jchan.c15
-rw-r--r--src/mame/drivers/jokrwild.c5
-rw-r--r--src/mame/drivers/jollyjgr.c13
-rw-r--r--src/mame/drivers/jongkyo.c5
-rw-r--r--src/mame/drivers/jpmimpct.c6
-rw-r--r--src/mame/drivers/jpmsys5.c5
-rw-r--r--src/mame/drivers/jrpacman.c3
-rw-r--r--src/mame/drivers/jubilee.c5
-rw-r--r--src/mame/drivers/junofrst.c3
-rw-r--r--src/mame/drivers/kaneko16.c18
-rw-r--r--src/mame/drivers/kangaroo.c3
-rw-r--r--src/mame/drivers/karnov.c6
-rw-r--r--src/mame/drivers/kas89.c30
-rw-r--r--src/mame/drivers/kchamp.c6
-rw-r--r--src/mame/drivers/kickgoal.c6
-rw-r--r--src/mame/drivers/kingdrby.c7
-rw-r--r--src/mame/drivers/kingobox.c6
-rw-r--r--src/mame/drivers/kingpin.c10
-rw-r--r--src/mame/drivers/kinst.c5
-rw-r--r--src/mame/drivers/klax.c3
-rw-r--r--src/mame/drivers/kncljoe.c3
-rw-r--r--src/mame/drivers/koftball.c5
-rw-r--r--src/mame/drivers/koikoi.c5
-rw-r--r--src/mame/drivers/konamigx.c13
-rw-r--r--src/mame/drivers/konamim2.c5
-rw-r--r--src/mame/drivers/kongambl.c5
-rw-r--r--src/mame/drivers/kopunch.c3
-rw-r--r--src/mame/drivers/ksayakyu.c3
-rw-r--r--src/mame/drivers/kungfur.c7
-rw-r--r--src/mame/drivers/kyugo.c3
-rw-r--r--src/mame/drivers/labyrunr.c3
-rw-r--r--src/mame/drivers/ladybug.c6
-rw-r--r--src/mame/drivers/ladyfrog.c3
-rw-r--r--src/mame/drivers/laserbas.c5
-rw-r--r--src/mame/drivers/laserbat.c14
-rw-r--r--src/mame/drivers/lasso.c9
-rw-r--r--src/mame/drivers/lastbank.c5
-rw-r--r--src/mame/drivers/lastduel.c6
-rw-r--r--src/mame/drivers/lastfght.c19
-rw-r--r--src/mame/drivers/lazercmd.c9
-rw-r--r--src/mame/drivers/legionna.c21
-rw-r--r--src/mame/drivers/lemmings.c3
-rw-r--r--src/mame/drivers/lethal.c3
-rw-r--r--src/mame/drivers/lethalj.c3
-rw-r--r--src/mame/drivers/lgp.c22
-rw-r--r--src/mame/drivers/liberate.c10
-rw-r--r--src/mame/drivers/liberatr.c2
-rw-r--r--src/mame/drivers/limenko.c38
-rw-r--r--src/mame/drivers/littlerb.c7
-rw-r--r--src/mame/drivers/lkage.c6
-rw-r--r--src/mame/drivers/lockon.c3
-rw-r--r--src/mame/drivers/looping.c7
-rw-r--r--src/mame/drivers/lordgun.c6
-rw-r--r--src/mame/drivers/lsasquad.c6
-rw-r--r--src/mame/drivers/ltcasino.c5
-rw-r--r--src/mame/drivers/luckgrln.c5
-rw-r--r--src/mame/drivers/lucky74.c3
-rw-r--r--src/mame/drivers/lvcards.c3
-rw-r--r--src/mame/drivers/lwings.c5
-rw-r--r--src/mame/drivers/m10.c6
-rw-r--r--src/mame/drivers/m107.c3
-rw-r--r--src/mame/drivers/m14.c5
-rw-r--r--src/mame/drivers/m52.c3
-rw-r--r--src/mame/drivers/m57.c3
-rw-r--r--src/mame/drivers/m58.c3
-rw-r--r--src/mame/drivers/m62.c25
-rw-r--r--src/mame/drivers/m63.c10
-rw-r--r--src/mame/drivers/m72.c39
-rw-r--r--src/mame/drivers/m79amb.c5
-rw-r--r--src/mame/drivers/m90.c7
-rw-r--r--src/mame/drivers/m92.c6
-rw-r--r--src/mame/drivers/macrossp.c3
-rw-r--r--src/mame/drivers/macs.c3
-rw-r--r--src/mame/drivers/madmotor.c3
-rw-r--r--src/mame/drivers/magic10.c5
-rw-r--r--src/mame/drivers/magicard.c5
-rw-r--r--src/mame/drivers/magicfly.c5
-rw-r--r--src/mame/drivers/magictg.c5
-rw-r--r--src/mame/drivers/magmax.c3
-rw-r--r--src/mame/drivers/mainevt.c6
-rw-r--r--src/mame/drivers/mainsnk.c3
-rw-r--r--src/mame/drivers/majorpkr.c5
-rw-r--r--src/mame/drivers/malzak.c3
-rw-r--r--src/mame/drivers/mappy.c9
-rw-r--r--src/mame/drivers/marineb.c13
-rw-r--r--src/mame/drivers/marinedt.c17
-rw-r--r--src/mame/drivers/mario.c3
-rw-r--r--src/mame/drivers/markham.c3
-rw-r--r--src/mame/drivers/mastboy.c5
-rw-r--r--src/mame/drivers/matmania.c6
-rw-r--r--src/mame/drivers/maxaflex.c3
-rw-r--r--src/mame/drivers/maygayv1.c5
-rw-r--r--src/mame/drivers/mayumi.c5
-rw-r--r--src/mame/drivers/mazerbla.c50
-rw-r--r--src/mame/drivers/mcatadv.c3
-rw-r--r--src/mame/drivers/mcr.c3
-rw-r--r--src/mame/drivers/mcr3.c5
-rw-r--r--src/mame/drivers/mcr68.c6
-rw-r--r--src/mame/drivers/meadows.c9
-rw-r--r--src/mame/drivers/mediagx.c11
-rw-r--r--src/mame/drivers/megaplay.c10
-rw-r--r--src/mame/drivers/megasys1.c12
-rw-r--r--src/mame/drivers/megatech.c11
-rw-r--r--src/mame/drivers/megazone.c3
-rw-r--r--src/mame/drivers/meijinsn.c5
-rw-r--r--src/mame/drivers/merit.c11
-rw-r--r--src/mame/drivers/meritm.c82
-rw-r--r--src/mame/drivers/mermaid.c3
-rw-r--r--src/mame/drivers/metalmx.c8
-rw-r--r--src/mame/drivers/metlclsh.c3
-rw-r--r--src/mame/drivers/metro.c72
-rw-r--r--src/mame/drivers/mexico86.c7
-rw-r--r--src/mame/drivers/mgolf.c5
-rw-r--r--src/mame/drivers/mhavoc.c2
-rw-r--r--src/mame/drivers/micro3d.c6
-rw-r--r--src/mame/drivers/midas.c12
-rw-r--r--src/mame/drivers/midtunit.c6
-rw-r--r--src/mame/drivers/midvunit.c3
-rw-r--r--src/mame/drivers/midwunit.c6
-rw-r--r--src/mame/drivers/midxunit.c6
-rw-r--r--src/mame/drivers/midyunit.c12
-rw-r--r--src/mame/drivers/midzeus.c6
-rw-r--r--src/mame/drivers/mikie.c3
-rw-r--r--src/mame/drivers/mil4000.c5
-rw-r--r--src/mame/drivers/miniboy7.c5
-rw-r--r--src/mame/drivers/minivadr.c5
-rw-r--r--src/mame/drivers/mirage.c13
-rw-r--r--src/mame/drivers/mirax.c7
-rw-r--r--src/mame/drivers/missb2.c5
-rw-r--r--src/mame/drivers/missile.c5
-rw-r--r--src/mame/drivers/mitchell.c15
-rw-r--r--src/mame/drivers/mjkjidai.c3
-rw-r--r--src/mame/drivers/mjsister.c13
-rw-r--r--src/mame/drivers/mlanding.c5
-rw-r--r--src/mame/drivers/model1.c6
-rw-r--r--src/mame/drivers/model2.c12
-rw-r--r--src/mame/drivers/model3.c12
-rw-r--r--src/mame/drivers/mogura.c5
-rw-r--r--src/mame/drivers/mole.c5
-rw-r--r--src/mame/drivers/momoko.c3
-rw-r--r--src/mame/drivers/monzagp.c5
-rw-r--r--src/mame/drivers/moo.c6
-rw-r--r--src/mame/drivers/mosaic.c3
-rw-r--r--src/mame/drivers/mouser.c3
-rw-r--r--src/mame/drivers/mpoker.c5
-rw-r--r--src/mame/drivers/mpu4.c2
-rw-r--r--src/mame/drivers/mpu4vid.c10
-rw-r--r--src/mame/drivers/mquake.c3
-rw-r--r--src/mame/drivers/mrdo.c3
-rw-r--r--src/mame/drivers/mrflea.c3
-rw-r--r--src/mame/drivers/mrjong.c3
-rw-r--r--src/mame/drivers/ms32.c3
-rw-r--r--src/mame/drivers/msisaac.c3
-rw-r--r--src/mame/drivers/mugsmash.c3
-rw-r--r--src/mame/drivers/multfish.c5
-rw-r--r--src/mame/drivers/multigam.c5
-rw-r--r--src/mame/drivers/munchmo.c3
-rw-r--r--src/mame/drivers/murogem.c5
-rw-r--r--src/mame/drivers/murogmbl.c5
-rw-r--r--src/mame/drivers/mustache.c3
-rw-r--r--src/mame/drivers/mw8080bw.c9
-rw-r--r--src/mame/drivers/mwarr.c7
-rw-r--r--src/mame/drivers/mystwarr.c14
-rw-r--r--src/mame/drivers/n8080.c9
-rw-r--r--src/mame/drivers/namcofl.c3
-rw-r--r--src/mame/drivers/namcoic.c58
-rw-r--r--src/mame/drivers/namcona1.c3
-rw-r--r--src/mame/drivers/namconb1.c6
-rw-r--r--src/mame/drivers/namcond1.c3
-rw-r--r--src/mame/drivers/namcops2.c7
-rw-r--r--src/mame/drivers/namcos1.c3
-rw-r--r--src/mame/drivers/namcos2.c18
-rw-r--r--src/mame/drivers/namcos21.c9
-rw-r--r--src/mame/drivers/namcos22.c6
-rw-r--r--src/mame/drivers/namcos23.c17
-rw-r--r--src/mame/drivers/namcos86.c3
-rw-r--r--src/mame/drivers/naomi.c3
-rw-r--r--src/mame/drivers/naughtyb.c6
-rw-r--r--src/mame/drivers/nbmj8688.c13
-rw-r--r--src/mame/drivers/nbmj8891.c3
-rw-r--r--src/mame/drivers/nbmj8900.c3
-rw-r--r--src/mame/drivers/nbmj8991.c6
-rw-r--r--src/mame/drivers/nbmj9195.c5
-rw-r--r--src/mame/drivers/nemesis.c30
-rw-r--r--src/mame/drivers/neogeo.c3
-rw-r--r--src/mame/drivers/neoprint.c12
-rw-r--r--src/mame/drivers/neptunp2.c7
-rw-r--r--src/mame/drivers/news.c3
-rw-r--r--src/mame/drivers/nexus3d.c5
-rw-r--r--src/mame/drivers/nightgal.c5
-rw-r--r--src/mame/drivers/ninjakd2.c7
-rw-r--r--src/mame/drivers/ninjaw.c18
-rw-r--r--src/mame/drivers/nitedrvr.c3
-rw-r--r--src/mame/drivers/niyanpai.c3
-rw-r--r--src/mame/drivers/nmg5.c9
-rw-r--r--src/mame/drivers/nmk16.c77
-rw-r--r--src/mame/drivers/norautp.c5
-rw-r--r--src/mame/drivers/nova2001.c12
-rw-r--r--src/mame/drivers/nsmpoker.c5
-rw-r--r--src/mame/drivers/nss.c3
-rw-r--r--src/mame/drivers/nwk-tr.c5
-rw-r--r--src/mame/drivers/nycaptor.c9
-rw-r--r--src/mame/drivers/nyny.c13
-rw-r--r--src/mame/drivers/offtwall.c3
-rw-r--r--src/mame/drivers/ohmygod.c3
-rw-r--r--src/mame/drivers/ojankohs.c12
-rw-r--r--src/mame/drivers/olibochu.c7
-rw-r--r--src/mame/drivers/omegrace.c2
-rw-r--r--src/mame/drivers/oneshot.c5
-rw-r--r--src/mame/drivers/onetwo.c5
-rw-r--r--src/mame/drivers/opwolf.c6
-rw-r--r--src/mame/drivers/orbit.c3
-rw-r--r--src/mame/drivers/othello.c14
-rw-r--r--src/mame/drivers/othldrby.c3
-rw-r--r--src/mame/drivers/othunder.c3
-rw-r--r--src/mame/drivers/overdriv.c3
-rw-r--r--src/mame/drivers/pachifev.c10
-rw-r--r--src/mame/drivers/pacland.c3
-rw-r--r--src/mame/drivers/pacman.c5
-rw-r--r--src/mame/drivers/pandoras.c3
-rw-r--r--src/mame/drivers/panicr.c7
-rw-r--r--src/mame/drivers/paradise.c7
-rw-r--r--src/mame/drivers/paranoia.c3
-rw-r--r--src/mame/drivers/parodius.c3
-rw-r--r--src/mame/drivers/pasha2.c5
-rw-r--r--src/mame/drivers/pass.c3
-rw-r--r--src/mame/drivers/pastelg.c6
-rw-r--r--src/mame/drivers/pbaction.c3
-rw-r--r--src/mame/drivers/pcktgal.c5
-rw-r--r--src/mame/drivers/pcxt.c10
-rw-r--r--src/mame/drivers/pengadvb.c10
-rw-r--r--src/mame/drivers/pengo.c3
-rw-r--r--src/mame/drivers/peplus.c5
-rw-r--r--src/mame/drivers/pgm.c6
-rw-r--r--src/mame/drivers/pgm2.c5
-rw-r--r--src/mame/drivers/phoenix.c6
-rw-r--r--src/mame/drivers/photon.c5
-rw-r--r--src/mame/drivers/photon2.c7
-rw-r--r--src/mame/drivers/pingpong.c3
-rw-r--r--src/mame/drivers/pinkiri8.c5
-rw-r--r--src/mame/drivers/pipedrm.c6
-rw-r--r--src/mame/drivers/pipeline.c5
-rw-r--r--src/mame/drivers/pirates.c3
-rw-r--r--src/mame/drivers/pitnrun.c3
-rw-r--r--src/mame/drivers/pkscram.c5
-rw-r--r--src/mame/drivers/pktgaldx.c6
-rw-r--r--src/mame/drivers/playch10.c6
-rw-r--r--src/mame/drivers/playmark.c18
-rw-r--r--src/mame/drivers/plygonet.c3
-rw-r--r--src/mame/drivers/pokechmp.c3
-rw-r--r--src/mame/drivers/poker72.c5
-rw-r--r--src/mame/drivers/polepos.c6
-rw-r--r--src/mame/drivers/policetr.c3
-rw-r--r--src/mame/drivers/polyplay.c3
-rw-r--r--src/mame/drivers/poo.c5
-rw-r--r--src/mame/drivers/poolshrk.c3
-rw-r--r--src/mame/drivers/pooyan.c3
-rw-r--r--src/mame/drivers/popeye.c3
-rw-r--r--src/mame/drivers/popper.c3
-rw-r--r--src/mame/drivers/portrait.c3
-rw-r--r--src/mame/drivers/powerbal.c10
-rw-r--r--src/mame/drivers/powerins.c3
-rw-r--r--src/mame/drivers/ppmast93.c5
-rw-r--r--src/mame/drivers/prehisle.c3
-rw-r--r--src/mame/drivers/progolf.c5
-rw-r--r--src/mame/drivers/psattack.c5
-rw-r--r--src/mame/drivers/psikyo.c12
-rw-r--r--src/mame/drivers/psikyo4.c6
-rw-r--r--src/mame/drivers/psikyosh.c3
-rw-r--r--src/mame/drivers/psychic5.c6
-rw-r--r--src/mame/drivers/pturn.c5
-rw-r--r--src/mame/drivers/punchout.c10
-rw-r--r--src/mame/drivers/pushman.c6
-rw-r--r--src/mame/drivers/pzletime.c5
-rw-r--r--src/mame/drivers/qdrmfgp.c6
-rw-r--r--src/mame/drivers/quakeat.c5
-rw-r--r--src/mame/drivers/quantum.c2
-rw-r--r--src/mame/drivers/quasar.c3
-rw-r--r--src/mame/drivers/quizdna.c3
-rw-r--r--src/mame/drivers/quizo.c5
-rw-r--r--src/mame/drivers/quizpani.c3
-rw-r--r--src/mame/drivers/quizpun2.c5
-rw-r--r--src/mame/drivers/r2dtank.c12
-rw-r--r--src/mame/drivers/r2dx_v33.c10
-rw-r--r--src/mame/drivers/rabbit.c17
-rw-r--r--src/mame/drivers/raiden.c3
-rw-r--r--src/mame/drivers/raiden2.c12
-rw-r--r--src/mame/drivers/rainbow.c6
-rw-r--r--src/mame/drivers/rallyx.c12
-rw-r--r--src/mame/drivers/rampart.c3
-rw-r--r--src/mame/drivers/rastan.c3
-rw-r--r--src/mame/drivers/rbmk.c5
-rw-r--r--src/mame/drivers/rcorsair.c7
-rw-r--r--src/mame/drivers/re900.c10
-rw-r--r--src/mame/drivers/realbrk.c5
-rw-r--r--src/mame/drivers/redclash.c6
-rw-r--r--src/mame/drivers/relief.c3
-rw-r--r--src/mame/drivers/renegade.c3
-rw-r--r--src/mame/drivers/retofinv.c3
-rw-r--r--src/mame/drivers/rgum.c5
-rw-r--r--src/mame/drivers/rltennis.c3
-rw-r--r--src/mame/drivers/rmhaihai.c5
-rw-r--r--src/mame/drivers/rockrage.c3
-rw-r--r--src/mame/drivers/rocnrope.c3
-rw-r--r--src/mame/drivers/rohga.c12
-rw-r--r--src/mame/drivers/rollerg.c3
-rw-r--r--src/mame/drivers/rollrace.c3
-rw-r--r--src/mame/drivers/rotaryf.c5
-rw-r--r--src/mame/drivers/roul.c5
-rw-r--r--src/mame/drivers/route16.c7
-rw-r--r--src/mame/drivers/royalmah.c5
-rw-r--r--src/mame/drivers/rpunch.c3
-rw-r--r--src/mame/drivers/runaway.c5
-rw-r--r--src/mame/drivers/rungun.c3
-rw-r--r--src/mame/drivers/safarir.c5
-rw-r--r--src/mame/drivers/sandscrp.c3
-rw-r--r--src/mame/drivers/sangho.c49
-rw-r--r--src/mame/drivers/saturn.c12
-rw-r--r--src/mame/drivers/sauro.c5
-rw-r--r--src/mame/drivers/savquest.c3
-rw-r--r--src/mame/drivers/sbasketb.c3
-rw-r--r--src/mame/drivers/sbowling.c11
-rw-r--r--src/mame/drivers/sbrkout.c5
-rw-r--r--src/mame/drivers/sbugger.c3
-rw-r--r--src/mame/drivers/scobra.c8
-rw-r--r--src/mame/drivers/scotrsht.c3
-rw-r--r--src/mame/drivers/scramble.c6
-rw-r--r--src/mame/drivers/scregg.c6
-rw-r--r--src/mame/drivers/sderby.c9
-rw-r--r--src/mame/drivers/seattle.c5
-rw-r--r--src/mame/drivers/segac2.c7
-rw-r--r--src/mame/drivers/segae.c17
-rw-r--r--src/mame/drivers/segag80r.c4
-rw-r--r--src/mame/drivers/segag80v.c2
-rw-r--r--src/mame/drivers/segahang.c3
-rw-r--r--src/mame/drivers/segajw.c7
-rw-r--r--src/mame/drivers/segald.c28
-rw-r--r--src/mame/drivers/segaorun.c5
-rw-r--r--src/mame/drivers/segas16a.c3
-rw-r--r--src/mame/drivers/segas16b.c3
-rw-r--r--src/mame/drivers/segas18.c3
-rw-r--r--src/mame/drivers/segas24.c3
-rw-r--r--src/mame/drivers/segas32.c9
-rw-r--r--src/mame/drivers/segaxbd.c3
-rw-r--r--src/mame/drivers/segaybd.c3
-rw-r--r--src/mame/drivers/seibuspi.c9
-rw-r--r--src/mame/drivers/seicross.c3
-rw-r--r--src/mame/drivers/sengokmj.c3
-rw-r--r--src/mame/drivers/senjyo.c3
-rw-r--r--src/mame/drivers/seta.c117
-rw-r--r--src/mame/drivers/seta2.c9
-rw-r--r--src/mame/drivers/sf.c3
-rw-r--r--src/mame/drivers/sfbonus.c11
-rw-r--r--src/mame/drivers/sfcbox.c3
-rw-r--r--src/mame/drivers/sfkick.c30
-rw-r--r--src/mame/drivers/sg1000a.c10
-rw-r--r--src/mame/drivers/shadfrce.c3
-rw-r--r--src/mame/drivers/shangha3.c9
-rw-r--r--src/mame/drivers/shanghai.c11
-rw-r--r--src/mame/drivers/shangkid.c6
-rw-r--r--src/mame/drivers/shaolins.c3
-rw-r--r--src/mame/drivers/shisen.c3
-rw-r--r--src/mame/drivers/shootout.c6
-rw-r--r--src/mame/drivers/shougi.c5
-rw-r--r--src/mame/drivers/shuuz.c3
-rw-r--r--src/mame/drivers/sidearms.c9
-rw-r--r--src/mame/drivers/sidepckt.c3
-rw-r--r--src/mame/drivers/sigmab52.c5
-rw-r--r--src/mame/drivers/sigmab98.c10
-rw-r--r--src/mame/drivers/silkroad.c3
-rw-r--r--src/mame/drivers/simpl156.c3
-rw-r--r--src/mame/drivers/simpsons.c3
-rw-r--r--src/mame/drivers/skeetsht.c8
-rw-r--r--src/mame/drivers/skimaxx.c14
-rw-r--r--src/mame/drivers/skullxbo.c3
-rw-r--r--src/mame/drivers/skyarmy.c5
-rw-r--r--src/mame/drivers/skydiver.c3
-rw-r--r--src/mame/drivers/skyfox.c3
-rw-r--r--src/mame/drivers/skykid.c3
-rw-r--r--src/mame/drivers/skylncr.c5
-rw-r--r--src/mame/drivers/skyraid.c3
-rw-r--r--src/mame/drivers/slapfght.c12
-rw-r--r--src/mame/drivers/slapshot.c6
-rw-r--r--src/mame/drivers/sliver.c50
-rw-r--r--src/mame/drivers/slotcarn.c12
-rw-r--r--src/mame/drivers/sms.c15
-rw-r--r--src/mame/drivers/snesb.c3
-rw-r--r--src/mame/drivers/snk.c18
-rw-r--r--src/mame/drivers/snk6502.c6
-rw-r--r--src/mame/drivers/snk68.c3
-rw-r--r--src/mame/drivers/snookr10.c3
-rw-r--r--src/mame/drivers/snowbros.c16
-rw-r--r--src/mame/drivers/solomon.c3
-rw-r--r--src/mame/drivers/sonson.c3
-rw-r--r--src/mame/drivers/sothello.c29
-rw-r--r--src/mame/drivers/spacefb.c3
-rw-r--r--src/mame/drivers/spaceg.c5
-rw-r--r--src/mame/drivers/spbactn.c3
-rw-r--r--src/mame/drivers/spcforce.c3
-rw-r--r--src/mame/drivers/spdodgeb.c3
-rw-r--r--src/mame/drivers/speedatk.c3
-rw-r--r--src/mame/drivers/speedbal.c3
-rw-r--r--src/mame/drivers/speedspn.c3
-rw-r--r--src/mame/drivers/speglsht.c9
-rw-r--r--src/mame/drivers/spiders.c12
-rw-r--r--src/mame/drivers/splash.c9
-rw-r--r--src/mame/drivers/splus.c7
-rw-r--r--src/mame/drivers/spoker.c5
-rw-r--r--src/mame/drivers/spool99.c5
-rw-r--r--src/mame/drivers/sprcros2.c3
-rw-r--r--src/mame/drivers/sprint2.c3
-rw-r--r--src/mame/drivers/sprint4.c3
-rw-r--r--src/mame/drivers/sprint8.c3
-rw-r--r--src/mame/drivers/spy.c3
-rw-r--r--src/mame/drivers/srmp2.c9
-rw-r--r--src/mame/drivers/srmp5.c5
-rw-r--r--src/mame/drivers/srmp6.c5
-rw-r--r--src/mame/drivers/srumbler.c3
-rw-r--r--src/mame/drivers/ssfindo.c5
-rw-r--r--src/mame/drivers/sshangha.c3
-rw-r--r--src/mame/drivers/sshot.c5
-rw-r--r--src/mame/drivers/ssingles.c12
-rw-r--r--src/mame/drivers/sslam.c6
-rw-r--r--src/mame/drivers/ssozumo.c3
-rw-r--r--src/mame/drivers/sspeedr.c3
-rw-r--r--src/mame/drivers/ssrj.c3
-rw-r--r--src/mame/drivers/sstrangr.c9
-rw-r--r--src/mame/drivers/ssv.c7
-rw-r--r--src/mame/drivers/st0016.c3
-rw-r--r--src/mame/drivers/stadhero.c3
-rw-r--r--src/mame/drivers/starcrus.c3
-rw-r--r--src/mame/drivers/starfire.c3
-rw-r--r--src/mame/drivers/starshp1.c3
-rw-r--r--src/mame/drivers/starwars.c2
-rw-r--r--src/mame/drivers/statriv2.c5
-rw-r--r--src/mame/drivers/stepstag.c11
-rw-r--r--src/mame/drivers/stfight.c3
-rw-r--r--src/mame/drivers/stlforce.c3
-rw-r--r--src/mame/drivers/strnskil.c3
-rw-r--r--src/mame/drivers/sub.c5
-rw-r--r--src/mame/drivers/subs.c6
-rw-r--r--src/mame/drivers/subsino.c21
-rw-r--r--src/mame/drivers/subsino2.c14
-rw-r--r--src/mame/drivers/summit.c5
-rw-r--r--src/mame/drivers/suna16.c12
-rw-r--r--src/mame/drivers/suna8.c15
-rw-r--r--src/mame/drivers/supbtime.c6
-rw-r--r--src/mame/drivers/supdrapo.c5
-rw-r--r--src/mame/drivers/superchs.c3
-rw-r--r--src/mame/drivers/superdq.c24
-rw-r--r--src/mame/drivers/superqix.c12
-rw-r--r--src/mame/drivers/supertnk.c5
-rw-r--r--src/mame/drivers/superwng.c5
-rw-r--r--src/mame/drivers/suprgolf.c5
-rw-r--r--src/mame/drivers/suprloco.c3
-rw-r--r--src/mame/drivers/suprnova.c3
-rw-r--r--src/mame/drivers/suprridr.c3
-rw-r--r--src/mame/drivers/suprslam.c3
-rw-r--r--src/mame/drivers/surpratk.c3
-rw-r--r--src/mame/drivers/system1.c7
-rw-r--r--src/mame/drivers/system16.c17
-rw-r--r--src/mame/drivers/tagteam.c3
-rw-r--r--src/mame/drivers/tail2nos.c3
-rw-r--r--src/mame/drivers/taito_b.c59
-rw-r--r--src/mame/drivers/taito_f2.c57
-rw-r--r--src/mame/drivers/taito_f3.c6
-rw-r--r--src/mame/drivers/taito_h.c9
-rw-r--r--src/mame/drivers/taito_l.c12
-rw-r--r--src/mame/drivers/taito_o.c3
-rw-r--r--src/mame/drivers/taito_x.c12
-rw-r--r--src/mame/drivers/taito_z.c30
-rw-r--r--src/mame/drivers/taitoair.c3
-rw-r--r--src/mame/drivers/taitojc.c3
-rw-r--r--src/mame/drivers/taitopjc.c5
-rw-r--r--src/mame/drivers/taitosj.c5
-rw-r--r--src/mame/drivers/taitotz.c13
-rw-r--r--src/mame/drivers/taitowlf.c5
-rw-r--r--src/mame/drivers/tank8.c3
-rw-r--r--src/mame/drivers/tankbatt.c3
-rw-r--r--src/mame/drivers/tankbust.c3
-rw-r--r--src/mame/drivers/taotaido.c3
-rw-r--r--src/mame/drivers/tapatune.c10
-rw-r--r--src/mame/drivers/targeth.c3
-rw-r--r--src/mame/drivers/tatsumi.c12
-rw-r--r--src/mame/drivers/tattack.c5
-rw-r--r--src/mame/drivers/taxidriv.c3
-rw-r--r--src/mame/drivers/tbowl.c6
-rw-r--r--src/mame/drivers/tceptor.c9
-rw-r--r--src/mame/drivers/tcl.c5
-rw-r--r--src/mame/drivers/tecmo.c6
-rw-r--r--src/mame/drivers/tecmo16.c3
-rw-r--r--src/mame/drivers/tecmosys.c3
-rw-r--r--src/mame/drivers/tehkanwc.c3
-rw-r--r--src/mame/drivers/tempest.c2
-rw-r--r--src/mame/drivers/terracre.c9
-rw-r--r--src/mame/drivers/tetrisp2.c18
-rw-r--r--src/mame/drivers/tgtpanic.c5
-rw-r--r--src/mame/drivers/thayers.c72
-rw-r--r--src/mame/drivers/thedeep.c3
-rw-r--r--src/mame/drivers/thepit.c3
-rw-r--r--src/mame/drivers/thief.c9
-rw-r--r--src/mame/drivers/thoop2.c3
-rw-r--r--src/mame/drivers/thunderj.c3
-rw-r--r--src/mame/drivers/thunderx.c6
-rw-r--r--src/mame/drivers/tiamc1.c3
-rw-r--r--src/mame/drivers/tickee.c19
-rw-r--r--src/mame/drivers/tigeroad.c3
-rw-r--r--src/mame/drivers/timelimt.c3
-rw-r--r--src/mame/drivers/timeplt.c3
-rw-r--r--src/mame/drivers/timetrv.c5
-rw-r--r--src/mame/drivers/tmaster.c20
-rw-r--r--src/mame/drivers/tmmjprd.c18
-rw-r--r--src/mame/drivers/tmnt.c36
-rw-r--r--src/mame/drivers/tmspoker.c5
-rw-r--r--src/mame/drivers/tnzs.c21
-rw-r--r--src/mame/drivers/toaplan1.c24
-rw-r--r--src/mame/drivers/toaplan2.c54
-rw-r--r--src/mame/drivers/toki.c6
-rw-r--r--src/mame/drivers/tokyocop.c7
-rw-r--r--src/mame/drivers/tomcat.c2
-rw-r--r--src/mame/drivers/tonton.c50
-rw-r--r--src/mame/drivers/toobin.c3
-rw-r--r--src/mame/drivers/topspeed.c3
-rw-r--r--src/mame/drivers/toratora.c5
-rw-r--r--src/mame/drivers/tourtabl.c3
-rw-r--r--src/mame/drivers/tourvis.c3
-rw-r--r--src/mame/drivers/toypop.c3
-rw-r--r--src/mame/drivers/tp84.c3
-rw-r--r--src/mame/drivers/trackfld.c6
-rw-r--r--src/mame/drivers/travrusa.c3
-rw-r--r--src/mame/drivers/triforce.c5
-rw-r--r--src/mame/drivers/triplhnt.c3
-rw-r--r--src/mame/drivers/truco.c3
-rw-r--r--src/mame/drivers/trucocl.c3
-rw-r--r--src/mame/drivers/trvmadns.c5
-rw-r--r--src/mame/drivers/tryout.c3
-rw-r--r--src/mame/drivers/tsamurai.c9
-rw-r--r--src/mame/drivers/ttchamp.c5
-rw-r--r--src/mame/drivers/tubep.c6
-rw-r--r--src/mame/drivers/tugboat.c7
-rw-r--r--src/mame/drivers/tumbleb.c34
-rw-r--r--src/mame/drivers/tumblep.c3
-rw-r--r--src/mame/drivers/tunhunt.c3
-rw-r--r--src/mame/drivers/turbo.c9
-rw-r--r--src/mame/drivers/turrett.c7
-rw-r--r--src/mame/drivers/tutankhm.c3
-rw-r--r--src/mame/drivers/twin16.c6
-rw-r--r--src/mame/drivers/twincobr.c3
-rw-r--r--src/mame/drivers/twins.c10
-rw-r--r--src/mame/drivers/tx1.c21
-rw-r--r--src/mame/drivers/uapce.c3
-rw-r--r--src/mame/drivers/ultraman.c3
-rw-r--r--src/mame/drivers/ultratnk.c3
-rw-r--r--src/mame/drivers/ultrsprt.c5
-rw-r--r--src/mame/drivers/umipoker.c5
-rw-r--r--src/mame/drivers/undrfire.c6
-rw-r--r--src/mame/drivers/unico.c9
-rw-r--r--src/mame/drivers/upscope.c3
-rw-r--r--src/mame/drivers/usgames.c3
-rw-r--r--src/mame/drivers/vamphalf.c14
-rw-r--r--src/mame/drivers/vaportra.c3
-rw-r--r--src/mame/drivers/vastar.c3
-rw-r--r--src/mame/drivers/vball.c3
-rw-r--r--src/mame/drivers/vcombat.c15
-rw-r--r--src/mame/drivers/vectrex.c3
-rw-r--r--src/mame/drivers/vega.c5
-rw-r--r--src/mame/drivers/vegaeo.c5
-rw-r--r--src/mame/drivers/vegas.c5
-rw-r--r--src/mame/drivers/vendetta.c3
-rw-r--r--src/mame/drivers/vertigo.c2
-rw-r--r--src/mame/drivers/vicdual.c27
-rw-r--r--src/mame/drivers/victory.c3
-rw-r--r--src/mame/drivers/videopin.c3
-rw-r--r--src/mame/drivers/videopkr.c5
-rw-r--r--src/mame/drivers/vigilant.c9
-rw-r--r--src/mame/drivers/vindictr.c3
-rw-r--r--src/mame/drivers/viper.c5
-rw-r--r--src/mame/drivers/vmetal.c5
-rw-r--r--src/mame/drivers/volfied.c3
-rw-r--r--src/mame/drivers/vp101.c7
-rw-r--r--src/mame/drivers/vpoker.c5
-rw-r--r--src/mame/drivers/vroulet.c5
-rw-r--r--src/mame/drivers/vsnes.c9
-rw-r--r--src/mame/drivers/vulgus.c3
-rw-r--r--src/mame/drivers/wallc.c5
-rw-r--r--src/mame/drivers/wardner.c3
-rw-r--r--src/mame/drivers/warpsped.c11
-rw-r--r--src/mame/drivers/warpwarp.c6
-rw-r--r--src/mame/drivers/warriorb.c12
-rw-r--r--src/mame/drivers/wc90.c3
-rw-r--r--src/mame/drivers/wc90b.c3
-rw-r--r--src/mame/drivers/wecleman.c6
-rw-r--r--src/mame/drivers/welltris.c3
-rw-r--r--src/mame/drivers/wgp.c3
-rw-r--r--src/mame/drivers/wheelfir.c11
-rw-r--r--src/mame/drivers/whitestar.c21
-rw-r--r--src/mame/drivers/williams.c8
-rw-r--r--src/mame/drivers/wink.c5
-rw-r--r--src/mame/drivers/wiping.c3
-rw-r--r--src/mame/drivers/witch.c7
-rw-r--r--src/mame/drivers/wiz.c7
-rw-r--r--src/mame/drivers/wldarrow.c5
-rw-r--r--src/mame/drivers/wolfpack.c3
-rw-r--r--src/mame/drivers/wrally.c3
-rw-r--r--src/mame/drivers/wwfsstar.c3
-rw-r--r--src/mame/drivers/wwfwfest.c3
-rw-r--r--src/mame/drivers/xain.c3
-rw-r--r--src/mame/drivers/xexex.c3
-rw-r--r--src/mame/drivers/xmen.c9
-rw-r--r--src/mame/drivers/xorworld.c3
-rw-r--r--src/mame/drivers/xtheball.c8
-rw-r--r--src/mame/drivers/xxmissio.c3
-rw-r--r--src/mame/drivers/xybots.c3
-rw-r--r--src/mame/drivers/xyonix.c3
-rw-r--r--src/mame/drivers/yiear.c3
-rw-r--r--src/mame/drivers/yunsun16.c6
-rw-r--r--src/mame/drivers/yunsung8.c3
-rw-r--r--src/mame/drivers/zac2650.c3
-rw-r--r--src/mame/drivers/zaccaria.c3
-rw-r--r--src/mame/drivers/zaxxon.c9
-rw-r--r--src/mame/drivers/zerozone.c2
-rw-r--r--src/mame/drivers/zodiack.c2
-rw-r--r--src/mame/drivers/zr107.c10
-rw-r--r--src/mame/etc/template_driver.c9
-rw-r--r--src/mame/includes/1942.h2
-rw-r--r--src/mame/includes/1943.h2
-rw-r--r--src/mame/includes/3do.h2
-rw-r--r--src/mame/includes/40love.h10
-rw-r--r--src/mame/includes/4enraya.h2
-rw-r--r--src/mame/includes/8080bw.h22
-rw-r--r--src/mame/includes/88games.h2
-rw-r--r--src/mame/includes/actfancr.h2
-rw-r--r--src/mame/includes/aeroboto.h2
-rw-r--r--src/mame/includes/aerofgt.h20
-rw-r--r--src/mame/includes/airbustr.h4
-rw-r--r--src/mame/includes/ajax.h2
-rw-r--r--src/mame/includes/aliens.h2
-rw-r--r--src/mame/includes/alpha68k.h12
-rw-r--r--src/mame/includes/ambush.h2
-rw-r--r--src/mame/includes/amiga.h8
-rw-r--r--src/mame/includes/ampoker2.h2
-rw-r--r--src/mame/includes/amspdwy.h2
-rw-r--r--src/mame/includes/angelkds.h2
-rw-r--r--src/mame/includes/appoooh.h4
-rw-r--r--src/mame/includes/aquarium.h2
-rw-r--r--src/mame/includes/arabian.h2
-rw-r--r--src/mame/includes/arcadecl.h2
-rw-r--r--src/mame/includes/archimds.h2
-rw-r--r--src/mame/includes/argus.h8
-rw-r--r--src/mame/includes/arkanoid.h4
-rw-r--r--src/mame/includes/armedf.h2
-rw-r--r--src/mame/includes/artmagic.h2
-rw-r--r--src/mame/includes/ashnojoe.h2
-rw-r--r--src/mame/includes/asterix.h2
-rw-r--r--src/mame/includes/astrocde.h4
-rw-r--r--src/mame/includes/asuka.h4
-rw-r--r--src/mame/includes/atari.h3
-rw-r--r--src/mame/includes/atarifb.h6
-rw-r--r--src/mame/includes/atarig1.h2
-rw-r--r--src/mame/includes/atarig42.h2
-rw-r--r--src/mame/includes/atarigt.h6
-rw-r--r--src/mame/includes/atarigx2.h2
-rw-r--r--src/mame/includes/atarisy1.h2
-rw-r--r--src/mame/includes/atarisy2.h2
-rw-r--r--src/mame/includes/atetris.h2
-rw-r--r--src/mame/includes/badlands.h2
-rw-r--r--src/mame/includes/bagman.h2
-rw-r--r--src/mame/includes/balsente.h2
-rw-r--r--src/mame/includes/bankp.h2
-rw-r--r--src/mame/includes/baraduke.h2
-rw-r--r--src/mame/includes/batman.h2
-rw-r--r--src/mame/includes/battlane.h4
-rw-r--r--src/mame/includes/battlera.h6
-rw-r--r--src/mame/includes/battlex.h2
-rw-r--r--src/mame/includes/battlnts.h2
-rw-r--r--src/mame/includes/bbusters.h4
-rw-r--r--src/mame/includes/beathead.h3
-rw-r--r--src/mame/includes/beezer.h2
-rw-r--r--src/mame/includes/bigevglf.h4
-rw-r--r--src/mame/includes/bigstrkb.h2
-rw-r--r--src/mame/includes/bionicc.h2
-rw-r--r--src/mame/includes/bishi.h2
-rw-r--r--src/mame/includes/bking.h6
-rw-r--r--src/mame/includes/bladestl.h2
-rw-r--r--src/mame/includes/blktiger.h2
-rw-r--r--src/mame/includes/blmbycar.h2
-rw-r--r--src/mame/includes/blockade.h2
-rw-r--r--src/mame/includes/blockhl.h2
-rw-r--r--src/mame/includes/blockout.h4
-rw-r--r--src/mame/includes/bloodbro.h6
-rw-r--r--src/mame/includes/blstroid.h2
-rw-r--r--src/mame/includes/blueprnt.h2
-rw-r--r--src/mame/includes/bogeyman.h2
-rw-r--r--src/mame/includes/bombjack.h2
-rw-r--r--src/mame/includes/boogwing.h2
-rw-r--r--src/mame/includes/bottom9.h2
-rw-r--r--src/mame/includes/brkthru.h2
-rw-r--r--src/mame/includes/bsktball.h2
-rw-r--r--src/mame/includes/btime.h16
-rw-r--r--src/mame/includes/btoads.h4
-rw-r--r--src/mame/includes/bublbobl.h2
-rw-r--r--src/mame/includes/buggychl.h6
-rw-r--r--src/mame/includes/bwing.h2
-rw-r--r--src/mame/includes/cabal.h2
-rw-r--r--src/mame/includes/calomega.h2
-rw-r--r--src/mame/includes/canyon.h2
-rw-r--r--src/mame/includes/capbowl.h2
-rw-r--r--src/mame/includes/carjmbre.h2
-rw-r--r--src/mame/includes/carpolo.h12
-rw-r--r--src/mame/includes/cave.h4
-rw-r--r--src/mame/includes/cbasebal.h2
-rw-r--r--src/mame/includes/cbuster.h2
-rw-r--r--src/mame/includes/ccastles.h4
-rw-r--r--src/mame/includes/cclimber.h8
-rw-r--r--src/mame/includes/cdi.h2
-rw-r--r--src/mame/includes/centiped.h8
-rw-r--r--src/mame/includes/chaknpop.h2
-rw-r--r--src/mame/includes/champbas.h4
-rw-r--r--src/mame/includes/changela.h10
-rw-r--r--src/mame/includes/cheekyms.h4
-rw-r--r--src/mame/includes/chqflag.h2
-rw-r--r--src/mame/includes/cidelsa.h1
-rw-r--r--src/mame/includes/cinemat.h4
-rw-r--r--src/mame/includes/circus.h8
-rw-r--r--src/mame/includes/circusc.h2
-rw-r--r--src/mame/includes/cischeat.h8
-rw-r--r--src/mame/includes/citycon.h2
-rw-r--r--src/mame/includes/cloak.h2
-rw-r--r--src/mame/includes/cloud9.h4
-rw-r--r--src/mame/includes/clshroad.h2
-rw-r--r--src/mame/includes/cninja.h10
-rw-r--r--src/mame/includes/combatsc.h4
-rw-r--r--src/mame/includes/commando.h2
-rw-r--r--src/mame/includes/compgolf.h2
-rw-r--r--src/mame/includes/contra.h2
-rw-r--r--src/mame/includes/cop01.h2
-rw-r--r--src/mame/includes/copsnrob.h2
-rw-r--r--src/mame/includes/cosmic.h12
-rw-r--r--src/mame/includes/cps1.h2
-rw-r--r--src/mame/includes/cps3.h2
-rw-r--r--src/mame/includes/crbaloon.h2
-rw-r--r--src/mame/includes/crimfght.h2
-rw-r--r--src/mame/includes/crospang.h2
-rw-r--r--src/mame/includes/crshrace.h2
-rw-r--r--src/mame/includes/cvs.h10
-rw-r--r--src/mame/includes/cyberbal.h6
-rw-r--r--src/mame/includes/darius.h6
-rw-r--r--src/mame/includes/darkmist.h2
-rw-r--r--src/mame/includes/darkseal.h2
-rw-r--r--src/mame/includes/dassault.h2
-rw-r--r--src/mame/includes/dbz.h2
-rw-r--r--src/mame/includes/dc.h2
-rw-r--r--src/mame/includes/dcheese.h4
-rw-r--r--src/mame/includes/dcon.h4
-rw-r--r--src/mame/includes/dday.h4
-rw-r--r--src/mame/includes/ddragon.h2
-rw-r--r--src/mame/includes/ddragon3.h4
-rw-r--r--src/mame/includes/ddribble.h2
-rw-r--r--src/mame/includes/deadang.h2
-rw-r--r--src/mame/includes/dec0.h14
-rw-r--r--src/mame/includes/dec8.h16
-rw-r--r--src/mame/includes/deco32.h10
-rw-r--r--src/mame/includes/deco_mlc.h2
-rw-r--r--src/mame/includes/deniam.h2
-rw-r--r--src/mame/includes/dietgo.h2
-rw-r--r--src/mame/includes/djboy.h2
-rw-r--r--src/mame/includes/djmain.h2
-rw-r--r--src/mame/includes/dkong.h10
-rw-r--r--src/mame/includes/docastle.h2
-rw-r--r--src/mame/includes/dogfgt.h4
-rw-r--r--src/mame/includes/dooyong.h16
-rw-r--r--src/mame/includes/dragrace.h2
-rw-r--r--src/mame/includes/drgnmst.h2
-rw-r--r--src/mame/includes/dribling.h2
-rw-r--r--src/mame/includes/drmicro.h2
-rw-r--r--src/mame/includes/dynax.h16
-rw-r--r--src/mame/includes/dynduke.h2
-rw-r--r--src/mame/includes/eolith.h2
-rw-r--r--src/mame/includes/epos.h2
-rw-r--r--src/mame/includes/eprom.h4
-rw-r--r--src/mame/includes/equites.h4
-rw-r--r--src/mame/includes/esd16.h6
-rw-r--r--src/mame/includes/espial.h2
-rw-r--r--src/mame/includes/esripsys.h2
-rw-r--r--src/mame/includes/exedexes.h2
-rw-r--r--src/mame/includes/exerion.h2
-rw-r--r--src/mame/includes/exidy.h10
-rw-r--r--src/mame/includes/exprraid.h2
-rw-r--r--src/mame/includes/exterm.h2
-rw-r--r--src/mame/includes/exzisus.h2
-rw-r--r--src/mame/includes/f1gp.h6
-rw-r--r--src/mame/includes/fantland.h2
-rw-r--r--src/mame/includes/fastfred.h4
-rw-r--r--src/mame/includes/fastlane.h2
-rw-r--r--src/mame/includes/fcombat.h2
-rw-r--r--src/mame/includes/fgoal.h6
-rw-r--r--src/mame/includes/finalizr.h2
-rw-r--r--src/mame/includes/firetrap.h2
-rw-r--r--src/mame/includes/firetrk.h10
-rw-r--r--src/mame/includes/fitfight.h2
-rw-r--r--src/mame/includes/flkatck.h2
-rw-r--r--src/mame/includes/flower.h2
-rw-r--r--src/mame/includes/flstory.h6
-rw-r--r--src/mame/includes/foodf.h2
-rw-r--r--src/mame/includes/freekick.h6
-rw-r--r--src/mame/includes/fromanc2.h4
-rw-r--r--src/mame/includes/fromance.h4
-rw-r--r--src/mame/includes/funkybee.h2
-rw-r--r--src/mame/includes/funkyjet.h2
-rw-r--r--src/mame/includes/funworld.h2
-rw-r--r--src/mame/includes/funybubl.h2
-rw-r--r--src/mame/includes/fuukifg2.h2
-rw-r--r--src/mame/includes/fuukifg3.h2
-rw-r--r--src/mame/includes/gaelco.h4
-rw-r--r--src/mame/includes/gaelco2.h6
-rw-r--r--src/mame/includes/gaelco3d.h8
-rw-r--r--src/mame/includes/gaiden.h12
-rw-r--r--src/mame/includes/galaga.h8
-rw-r--r--src/mame/includes/galastrm.h6
-rw-r--r--src/mame/includes/galaxian.h30
-rw-r--r--src/mame/includes/galaxold.h14
-rw-r--r--src/mame/includes/galivan.h4
-rw-r--r--src/mame/includes/galpani2.h6
-rw-r--r--src/mame/includes/galpanic.h7
-rw-r--r--src/mame/includes/galspnbl.h2
-rw-r--r--src/mame/includes/gaplus.h2
-rw-r--r--src/mame/includes/gatron.h2
-rw-r--r--src/mame/includes/gauntlet.h2
-rw-r--r--src/mame/includes/gberet.h4
-rw-r--r--src/mame/includes/gbusters.h2
-rw-r--r--src/mame/includes/gcpinbal.h2
-rw-r--r--src/mame/includes/genesis.h2
-rw-r--r--src/mame/includes/gijoe.h2
-rw-r--r--src/mame/includes/ginganin.h2
-rw-r--r--src/mame/includes/gladiatr.h4
-rw-r--r--src/mame/includes/glass.h4
-rw-r--r--src/mame/includes/gng.h2
-rw-r--r--src/mame/includes/goal92.h2
-rw-r--r--src/mame/includes/goindol.h2
-rw-r--r--src/mame/includes/goldstar.h12
-rw-r--r--src/mame/includes/gomoku.h4
-rw-r--r--src/mame/includes/gotcha.h2
-rw-r--r--src/mame/includes/gottlieb.h8
-rw-r--r--src/mame/includes/gotya.h2
-rw-r--r--src/mame/includes/gradius3.h2
-rw-r--r--src/mame/includes/grchamp.h4
-rw-r--r--src/mame/includes/gridlee.h2
-rw-r--r--src/mame/includes/groundfx.h2
-rw-r--r--src/mame/includes/gstriker.h2
-rw-r--r--src/mame/includes/gsword.h2
-rw-r--r--src/mame/includes/gumbo.h2
-rw-r--r--src/mame/includes/gunbustr.h2
-rw-r--r--src/mame/includes/gundealr.h2
-rw-r--r--src/mame/includes/gunsmoke.h2
-rw-r--r--src/mame/includes/gyruss.h2
-rw-r--r--src/mame/includes/hanaawas.h2
-rw-r--r--src/mame/includes/harddriv.h4
-rw-r--r--src/mame/includes/hcastle.h2
-rw-r--r--src/mame/includes/hexion.h2
-rw-r--r--src/mame/includes/higemaru.h2
-rw-r--r--src/mame/includes/himesiki.h2
-rw-r--r--src/mame/includes/hnayayoi.h2
-rw-r--r--src/mame/includes/hng64.h2
-rw-r--r--src/mame/includes/holeland.h4
-rw-r--r--src/mame/includes/homedata.h8
-rw-r--r--src/mame/includes/homerun.h2
-rw-r--r--src/mame/includes/hyhoo.h4
-rw-r--r--src/mame/includes/hyperspt.h2
-rw-r--r--src/mame/includes/hyprduel.h2
-rw-r--r--src/mame/includes/ikki.h4
-rw-r--r--src/mame/includes/inufuku.h2
-rw-r--r--src/mame/includes/iqblock.h2
-rw-r--r--src/mame/includes/irobot.h2
-rw-r--r--src/mame/includes/ironhors.h4
-rw-r--r--src/mame/includes/itech32.h2
-rw-r--r--src/mame/includes/itech8.h10
-rw-r--r--src/mame/includes/jack.h4
-rw-r--r--src/mame/includes/jackal.h2
-rw-r--r--src/mame/includes/jaguar.h2
-rw-r--r--src/mame/includes/jailbrek.h2
-rw-r--r--src/mame/includes/jpmimpct.h2
-rw-r--r--src/mame/includes/kaneko16.h16
-rw-r--r--src/mame/includes/kangaroo.h2
-rw-r--r--src/mame/includes/karnov.h4
-rw-r--r--src/mame/includes/kchamp.h4
-rw-r--r--src/mame/includes/kickgoal.h4
-rw-r--r--src/mame/includes/kingobox.h4
-rw-r--r--src/mame/includes/klax.h2
-rw-r--r--src/mame/includes/kncljoe.h2
-rw-r--r--src/mame/includes/konamigx.h10
-rw-r--r--src/mame/includes/kopunch.h2
-rw-r--r--src/mame/includes/ksayakyu.h2
-rw-r--r--src/mame/includes/kyugo.h2
-rw-r--r--src/mame/includes/labyrunr.h2
-rw-r--r--src/mame/includes/ladybug.h8
-rw-r--r--src/mame/includes/ladyfrog.h2
-rw-r--r--src/mame/includes/lasso.h6
-rw-r--r--src/mame/includes/lastduel.h4
-rw-r--r--src/mame/includes/lazercmd.h2
-rw-r--r--src/mame/includes/legionna.h6
-rw-r--r--src/mame/includes/lemmings.h4
-rw-r--r--src/mame/includes/lethal.h2
-rw-r--r--src/mame/includes/lethalj.h2
-rw-r--r--src/mame/includes/liberate.h8
-rw-r--r--src/mame/includes/liberatr.h7
-rw-r--r--src/mame/includes/lkage.h2
-rw-r--r--src/mame/includes/lockon.h6
-rw-r--r--src/mame/includes/lordgun.h4
-rw-r--r--src/mame/includes/lsasquad.h4
-rw-r--r--src/mame/includes/lucky74.h2
-rw-r--r--src/mame/includes/lvcards.h2
-rw-r--r--src/mame/includes/lwings.h4
-rw-r--r--src/mame/includes/m10.h4
-rw-r--r--src/mame/includes/m107.h2
-rw-r--r--src/mame/includes/m52.h2
-rw-r--r--src/mame/includes/m57.h2
-rw-r--r--src/mame/includes/m58.h4
-rw-r--r--src/mame/includes/m62.h22
-rw-r--r--src/mame/includes/m72.h4
-rw-r--r--src/mame/includes/m90.h6
-rw-r--r--src/mame/includes/m92.h4
-rw-r--r--src/mame/includes/macrossp.h2
-rw-r--r--src/mame/includes/madalien.h2
-rw-r--r--src/mame/includes/madmotor.h2
-rw-r--r--src/mame/includes/magmax.h3
-rw-r--r--src/mame/includes/mainevt.h4
-rw-r--r--src/mame/includes/mainsnk.h2
-rw-r--r--src/mame/includes/malzak.h2
-rw-r--r--src/mame/includes/mappy.h8
-rw-r--r--src/mame/includes/marineb.h10
-rw-r--r--src/mame/includes/mario.h2
-rw-r--r--src/mame/includes/markham.h2
-rw-r--r--src/mame/includes/matmania.h8
-rw-r--r--src/mame/includes/mcatadv.h2
-rw-r--r--src/mame/includes/mcr.h2
-rw-r--r--src/mame/includes/mcr3.h4
-rw-r--r--src/mame/includes/mcr68.h4
-rw-r--r--src/mame/includes/meadows.h2
-rw-r--r--src/mame/includes/megadriv.h2
-rw-r--r--src/mame/includes/megasys1.h2
-rw-r--r--src/mame/includes/megazone.h4
-rw-r--r--src/mame/includes/mermaid.h6
-rw-r--r--src/mame/includes/metlclsh.h2
-rw-r--r--src/mame/includes/metro.h4
-rw-r--r--src/mame/includes/mexico86.h4
-rw-r--r--src/mame/includes/micro3d.h2
-rw-r--r--src/mame/includes/midtunit.h4
-rw-r--r--src/mame/includes/midvunit.h2
-rw-r--r--src/mame/includes/midyunit.h2
-rw-r--r--src/mame/includes/midzeus.h4
-rw-r--r--src/mame/includes/mikie.h2
-rw-r--r--src/mame/includes/mitchell.h2
-rw-r--r--src/mame/includes/mjkjidai.h2
-rw-r--r--src/mame/includes/model1.h2
-rw-r--r--src/mame/includes/model2.h4
-rw-r--r--src/mame/includes/model3.h6
-rw-r--r--src/mame/includes/momoko.h2
-rw-r--r--src/mame/includes/moo.h2
-rw-r--r--src/mame/includes/mosaic.h2
-rw-r--r--src/mame/includes/mouser.h2
-rw-r--r--src/mame/includes/mpu4.h5
-rw-r--r--src/mame/includes/mrdo.h2
-rw-r--r--src/mame/includes/mrflea.h2
-rw-r--r--src/mame/includes/mrjong.h2
-rw-r--r--src/mame/includes/ms32.h8
-rw-r--r--src/mame/includes/msisaac.h6
-rw-r--r--src/mame/includes/mugsmash.h2
-rw-r--r--src/mame/includes/munchmo.h4
-rw-r--r--src/mame/includes/mustache.h2
-rw-r--r--src/mame/includes/mw8080bw.h8
-rw-r--r--src/mame/includes/mystwarr.h8
-rw-r--r--src/mame/includes/n64.h2
-rw-r--r--src/mame/includes/n8080.h6
-rw-r--r--src/mame/includes/namcofl.h2
-rw-r--r--src/mame/includes/namcoic.h13
-rw-r--r--src/mame/includes/namcona1.h2
-rw-r--r--src/mame/includes/namconb1.h4
-rw-r--r--src/mame/includes/namcos1.h2
-rw-r--r--src/mame/includes/namcos2.h10
-rw-r--r--src/mame/includes/namcos21.h2
-rw-r--r--src/mame/includes/namcos22.h6
-rw-r--r--src/mame/includes/namcos86.h2
-rw-r--r--src/mame/includes/naughtyb.h4
-rw-r--r--src/mame/includes/nbmj8688.h8
-rw-r--r--src/mame/includes/nbmj8891.h6
-rw-r--r--src/mame/includes/nbmj8900.h6
-rw-r--r--src/mame/includes/nbmj8991.h6
-rw-r--r--src/mame/includes/nbmj9195.h4
-rw-r--r--src/mame/includes/nemesis.h2
-rw-r--r--src/mame/includes/neogeo.h2
-rw-r--r--src/mame/includes/news.h2
-rw-r--r--src/mame/includes/ninjakd2.h8
-rw-r--r--src/mame/includes/ninjaw.h6
-rw-r--r--src/mame/includes/nitedrvr.h2
-rw-r--r--src/mame/includes/niyanpai.h4
-rw-r--r--src/mame/includes/nmk16.h30
-rw-r--r--src/mame/includes/nova2001.h8
-rw-r--r--src/mame/includes/nycaptor.h2
-rw-r--r--src/mame/includes/offtwall.h2
-rw-r--r--src/mame/includes/ohmygod.h2
-rw-r--r--src/mame/includes/ojankohs.h6
-rw-r--r--src/mame/includes/oneshot.h4
-rw-r--r--src/mame/includes/opwolf.h2
-rw-r--r--src/mame/includes/orbit.h2
-rw-r--r--src/mame/includes/othldrby.h2
-rw-r--r--src/mame/includes/othunder.h2
-rw-r--r--src/mame/includes/overdriv.h2
-rw-r--r--src/mame/includes/pacland.h4
-rw-r--r--src/mame/includes/pacman.h4
-rw-r--r--src/mame/includes/pandoras.h2
-rw-r--r--src/mame/includes/paradise.h8
-rw-r--r--src/mame/includes/parodius.h2
-rw-r--r--src/mame/includes/pass.h2
-rw-r--r--src/mame/includes/pastelg.h2
-rw-r--r--src/mame/includes/pbaction.h2
-rw-r--r--src/mame/includes/pcktgal.h4
-rw-r--r--src/mame/includes/pgm.h4
-rw-r--r--src/mame/includes/phoenix.h2
-rw-r--r--src/mame/includes/pingpong.h2
-rw-r--r--src/mame/includes/pirates.h2
-rw-r--r--src/mame/includes/pitnrun.h4
-rw-r--r--src/mame/includes/pk8000.h2
-rw-r--r--src/mame/includes/pktgaldx.h4
-rw-r--r--src/mame/includes/playch10.h4
-rw-r--r--src/mame/includes/playmark.h10
-rw-r--r--src/mame/includes/plygonet.h2
-rw-r--r--src/mame/includes/pokechmp.h2
-rw-r--r--src/mame/includes/polepos.h2
-rw-r--r--src/mame/includes/policetr.h2
-rw-r--r--src/mame/includes/polyplay.h2
-rw-r--r--src/mame/includes/poolshrk.h2
-rw-r--r--src/mame/includes/pooyan.h2
-rw-r--r--src/mame/includes/popeye.h4
-rw-r--r--src/mame/includes/popper.h2
-rw-r--r--src/mame/includes/portrait.h2
-rw-r--r--src/mame/includes/powerins.h2
-rw-r--r--src/mame/includes/prehisle.h2
-rw-r--r--src/mame/includes/psikyo.h4
-rw-r--r--src/mame/includes/psikyo4.h4
-rw-r--r--src/mame/includes/psikyosh.h8
-rw-r--r--src/mame/includes/psx.h2
-rw-r--r--src/mame/includes/psychic5.h4
-rw-r--r--src/mame/includes/punchout.h8
-rw-r--r--src/mame/includes/pushman.h2
-rw-r--r--src/mame/includes/qdrmfgp.h2
-rw-r--r--src/mame/includes/quizdna.h2
-rw-r--r--src/mame/includes/quizpani.h2
-rw-r--r--src/mame/includes/raiden.h2
-rw-r--r--src/mame/includes/raiden2.h2
-rw-r--r--src/mame/includes/rainbow.h4
-rw-r--r--src/mame/includes/rallyx.h6
-rw-r--r--src/mame/includes/rampart.h2
-rw-r--r--src/mame/includes/rastan.h2
-rw-r--r--src/mame/includes/realbrk.h8
-rw-r--r--src/mame/includes/relief.h2
-rw-r--r--src/mame/includes/renegade.h2
-rw-r--r--src/mame/includes/retofinv.h2
-rw-r--r--src/mame/includes/rltennis.h4
-rw-r--r--src/mame/includes/rockrage.h2
-rw-r--r--src/mame/includes/rocnrope.h2
-rw-r--r--src/mame/includes/rohga.h8
-rw-r--r--src/mame/includes/rollerg.h2
-rw-r--r--src/mame/includes/rollrace.h2
-rw-r--r--src/mame/includes/route16.h6
-rw-r--r--src/mame/includes/rpunch.h2
-rw-r--r--src/mame/includes/runaway.h4
-rw-r--r--src/mame/includes/rungun.h2
-rw-r--r--src/mame/includes/sauro.h4
-rw-r--r--src/mame/includes/sbasketb.h2
-rw-r--r--src/mame/includes/sbugger.h2
-rw-r--r--src/mame/includes/scotrsht.h2
-rw-r--r--src/mame/includes/sderby.h4
-rw-r--r--src/mame/includes/segag80r.h2
-rw-r--r--src/mame/includes/segag80v.h2
-rw-r--r--src/mame/includes/segamsys.h8
-rw-r--r--src/mame/includes/segas16.h18
-rw-r--r--src/mame/includes/segas24.h2
-rw-r--r--src/mame/includes/segas32.h10
-rw-r--r--src/mame/includes/sei_crtc.h2
-rw-r--r--src/mame/includes/seibuspi.h4
-rw-r--r--src/mame/includes/seicross.h2
-rw-r--r--src/mame/includes/senjyo.h2
-rw-r--r--src/mame/includes/seta.h10
-rw-r--r--src/mame/includes/seta2.h2
-rw-r--r--src/mame/includes/sf.h2
-rw-r--r--src/mame/includes/shadfrce.h2
-rw-r--r--src/mame/includes/shangha3.h4
-rw-r--r--src/mame/includes/shangkid.h4
-rw-r--r--src/mame/includes/shaolins.h2
-rw-r--r--src/mame/includes/shisen.h2
-rw-r--r--src/mame/includes/shootout.h4
-rw-r--r--src/mame/includes/shuuz.h2
-rw-r--r--src/mame/includes/sidearms.h2
-rw-r--r--src/mame/includes/sidepckt.h2
-rw-r--r--src/mame/includes/silkroad.h2
-rw-r--r--src/mame/includes/simpl156.h2
-rw-r--r--src/mame/includes/simpsons.h2
-rw-r--r--src/mame/includes/skullxbo.h2
-rw-r--r--src/mame/includes/skydiver.h2
-rw-r--r--src/mame/includes/skyfox.h2
-rw-r--r--src/mame/includes/skykid.h2
-rw-r--r--src/mame/includes/skyraid.h4
-rw-r--r--src/mame/includes/slapfght.h4
-rw-r--r--src/mame/includes/slapshot.h2
-rw-r--r--src/mame/includes/snes.h2
-rw-r--r--src/mame/includes/snk.h10
-rw-r--r--src/mame/includes/snk6502.h2
-rw-r--r--src/mame/includes/snk68.h2
-rw-r--r--src/mame/includes/snookr10.h2
-rw-r--r--src/mame/includes/solomon.h2
-rw-r--r--src/mame/includes/sonson.h2
-rw-r--r--src/mame/includes/spacefb.h2
-rw-r--r--src/mame/includes/spbactn.h6
-rw-r--r--src/mame/includes/spcforce.h2
-rw-r--r--src/mame/includes/spdodgeb.h2
-rw-r--r--src/mame/includes/speedatk.h2
-rw-r--r--src/mame/includes/speedbal.h2
-rw-r--r--src/mame/includes/speedspn.h2
-rw-r--r--src/mame/includes/splash.h4
-rw-r--r--src/mame/includes/sprcros2.h2
-rw-r--r--src/mame/includes/sprint2.h4
-rw-r--r--src/mame/includes/sprint4.h4
-rw-r--r--src/mame/includes/sprint8.h6
-rw-r--r--src/mame/includes/spy.h2
-rw-r--r--src/mame/includes/srmp2.h6
-rw-r--r--src/mame/includes/srumbler.h2
-rw-r--r--src/mame/includes/sshangha.h2
-rw-r--r--src/mame/includes/sslam.h4
-rw-r--r--src/mame/includes/ssozumo.h2
-rw-r--r--src/mame/includes/sspeedr.h2
-rw-r--r--src/mame/includes/ssrj.h2
-rw-r--r--src/mame/includes/ssv.h6
-rw-r--r--src/mame/includes/st0016.h4
-rw-r--r--src/mame/includes/stadhero.h2
-rw-r--r--src/mame/includes/starcrus.h10
-rw-r--r--src/mame/includes/starfire.h4
-rw-r--r--src/mame/includes/starshp1.h4
-rw-r--r--src/mame/includes/stfight.h2
-rw-r--r--src/mame/includes/stlforce.h2
-rw-r--r--src/mame/includes/strnskil.h2
-rw-r--r--src/mame/includes/stv.h8
-rw-r--r--src/mame/includes/subs.h4
-rw-r--r--src/mame/includes/suna16.h4
-rw-r--r--src/mame/includes/suna8.h2
-rw-r--r--src/mame/includes/supbtime.h2
-rw-r--r--src/mame/includes/superchs.h2
-rw-r--r--src/mame/includes/superqix.h6
-rw-r--r--src/mame/includes/suprloco.h2
-rw-r--r--src/mame/includes/suprnova.h14
-rw-r--r--src/mame/includes/suprridr.h2
-rw-r--r--src/mame/includes/suprslam.h2
-rw-r--r--src/mame/includes/surpratk.h2
-rw-r--r--src/mame/includes/system1.h8
-rw-r--r--src/mame/includes/system16.h8
-rw-r--r--src/mame/includes/tagteam.h2
-rw-r--r--src/mame/includes/tail2nos.h2
-rw-r--r--src/mame/includes/taito_b.h10
-rw-r--r--src/mame/includes/taito_f2.h16
-rw-r--r--src/mame/includes/taito_f3.h4
-rw-r--r--src/mame/includes/taito_h.h6
-rw-r--r--src/mame/includes/taito_l.h2
-rw-r--r--src/mame/includes/taito_o.h2
-rw-r--r--src/mame/includes/taito_z.h14
-rw-r--r--src/mame/includes/taitoair.h6
-rw-r--r--src/mame/includes/taitojc.h6
-rw-r--r--src/mame/includes/taitosj.h14
-rw-r--r--src/mame/includes/tank8.h8
-rw-r--r--src/mame/includes/tankbatt.h2
-rw-r--r--src/mame/includes/tankbust.h2
-rw-r--r--src/mame/includes/taotaido.h2
-rw-r--r--src/mame/includes/targeth.h2
-rw-r--r--src/mame/includes/tatsumi.h10
-rw-r--r--src/mame/includes/taxidriv.h2
-rw-r--r--src/mame/includes/tbowl.h4
-rw-r--r--src/mame/includes/tceptor.h8
-rw-r--r--src/mame/includes/tecmo.h2
-rw-r--r--src/mame/includes/tecmo16.h8
-rw-r--r--src/mame/includes/tecmosys.h8
-rw-r--r--src/mame/includes/tehkanwc.h2
-rw-r--r--src/mame/includes/terracre.h2
-rw-r--r--src/mame/includes/tetrisp2.h8
-rw-r--r--src/mame/includes/thedeep.h2
-rw-r--r--src/mame/includes/thepit.h2
-rw-r--r--src/mame/includes/thief.h2
-rw-r--r--src/mame/includes/thoop2.h2
-rw-r--r--src/mame/includes/thunderj.h2
-rw-r--r--src/mame/includes/thunderx.h2
-rw-r--r--src/mame/includes/tiamc1.h2
-rw-r--r--src/mame/includes/tigeroad.h2
-rw-r--r--src/mame/includes/timelimt.h2
-rw-r--r--src/mame/includes/timeplt.h2
-rw-r--r--src/mame/includes/tmnt.h14
-rw-r--r--src/mame/includes/tnzs.h2
-rw-r--r--src/mame/includes/toaplan1.h4
-rw-r--r--src/mame/includes/toaplan2.h14
-rw-r--r--src/mame/includes/toki.h4
-rw-r--r--src/mame/includes/toobin.h4
-rw-r--r--src/mame/includes/topspeed.h2
-rw-r--r--src/mame/includes/toypop.h2
-rw-r--r--src/mame/includes/tp84.h2
-rw-r--r--src/mame/includes/trackfld.h2
-rw-r--r--src/mame/includes/travrusa.h2
-rw-r--r--src/mame/includes/triplhnt.h4
-rw-r--r--src/mame/includes/truco.h2
-rw-r--r--src/mame/includes/trucocl.h2
-rw-r--r--src/mame/includes/tryout.h2
-rw-r--r--src/mame/includes/tsamurai.h4
-rw-r--r--src/mame/includes/tubep.h4
-rw-r--r--src/mame/includes/tumbleb.h22
-rw-r--r--src/mame/includes/tumblep.h2
-rw-r--r--src/mame/includes/tunhunt.h4
-rw-r--r--src/mame/includes/turbo.h6
-rw-r--r--src/mame/includes/tutankhm.h2
-rw-r--r--src/mame/includes/twin16.h2
-rw-r--r--src/mame/includes/twincobr.h2
-rw-r--r--src/mame/includes/tx1.h16
-rw-r--r--src/mame/includes/ultraman.h2
-rw-r--r--src/mame/includes/ultratnk.h4
-rw-r--r--src/mame/includes/undrfire.h4
-rw-r--r--src/mame/includes/unico.h4
-rw-r--r--src/mame/includes/usgames.h2
-rw-r--r--src/mame/includes/vaportra.h2
-rw-r--r--src/mame/includes/vastar.h2
-rw-r--r--src/mame/includes/vball.h2
-rw-r--r--src/mame/includes/vectrex.h2
-rw-r--r--src/mame/includes/vendetta.h2
-rw-r--r--src/mame/includes/vicdual.h6
-rw-r--r--src/mame/includes/victory.h2
-rw-r--r--src/mame/includes/videopin.h2
-rw-r--r--src/mame/includes/vigilant.h6
-rw-r--r--src/mame/includes/vindictr.h2
-rw-r--r--src/mame/includes/volfied.h2
-rw-r--r--src/mame/includes/vsnes.h4
-rw-r--r--src/mame/includes/vulgus.h2
-rw-r--r--src/mame/includes/warpwarp.h2
-rw-r--r--src/mame/includes/warriorb.h4
-rw-r--r--src/mame/includes/wc90.h2
-rw-r--r--src/mame/includes/wc90b.h2
-rw-r--r--src/mame/includes/wecleman.h4
-rw-r--r--src/mame/includes/welltris.h2
-rw-r--r--src/mame/includes/wgp.h2
-rw-r--r--src/mame/includes/williams.h6
-rw-r--r--src/mame/includes/wiping.h2
-rw-r--r--src/mame/includes/wiz.h6
-rw-r--r--src/mame/includes/wolfpack.h4
-rw-r--r--src/mame/includes/wrally.h2
-rw-r--r--src/mame/includes/wwfsstar.h2
-rw-r--r--src/mame/includes/wwfwfest.h2
-rw-r--r--src/mame/includes/xain.h2
-rw-r--r--src/mame/includes/xexex.h2
-rw-r--r--src/mame/includes/xmen.h10
-rw-r--r--src/mame/includes/xorworld.h2
-rw-r--r--src/mame/includes/xxmissio.h2
-rw-r--r--src/mame/includes/xybots.h2
-rw-r--r--src/mame/includes/xyonix.h2
-rw-r--r--src/mame/includes/yiear.h2
-rw-r--r--src/mame/includes/yunsun16.h2
-rw-r--r--src/mame/includes/yunsung8.h2
-rw-r--r--src/mame/includes/zac2650.h5
-rw-r--r--src/mame/includes/zaccaria.h2
-rw-r--r--src/mame/includes/zaxxon.h8
-rw-r--r--src/mame/includes/zerozone.h3
-rw-r--r--src/mame/includes/zodiack.h7
-rw-r--r--src/mame/machine/3do.c2
-rw-r--r--src/mame/machine/amiga.c7
-rw-r--r--src/mame/machine/decocass.h2
-rw-r--r--src/mame/machine/konppc.c2
-rw-r--r--src/mame/machine/konppc.h2
-rw-r--r--src/mame/machine/megadriv.c25
-rw-r--r--src/mame/machine/segamsys.c72
-rw-r--r--src/mame/machine/slikshot.c4
-rw-r--r--src/mame/mame.lst6
-rw-r--r--src/mame/video/1942.c4
-rw-r--r--src/mame/video/1943.c4
-rw-r--r--src/mame/video/20pacgal.c15
-rw-r--r--src/mame/video/40love.c10
-rw-r--r--src/mame/video/4enraya.c2
-rw-r--r--src/mame/video/8080bw.c28
-rw-r--r--src/mame/video/88games.c2
-rw-r--r--src/mame/video/actfancr.c2
-rw-r--r--src/mame/video/aeroboto.c4
-rw-r--r--src/mame/video/aerofgt.c37
-rw-r--r--src/mame/video/airbustr.c6
-rw-r--r--src/mame/video/ajax.c2
-rw-r--r--src/mame/video/aliens.c2
-rw-r--r--src/mame/video/alpha68k.c22
-rw-r--r--src/mame/video/ambush.c4
-rw-r--r--src/mame/video/amiga.c4
-rw-r--r--src/mame/video/amigaaga.c4
-rw-r--r--src/mame/video/ampoker2.c2
-rw-r--r--src/mame/video/amspdwy.c4
-rw-r--r--src/mame/video/angelkds.c4
-rw-r--r--src/mame/video/appoooh.c8
-rw-r--r--src/mame/video/aquarium.c4
-rw-r--r--src/mame/video/arabian.c2
-rw-r--r--src/mame/video/arcadecl.c8
-rw-r--r--src/mame/video/archimds.c2
-rw-r--r--src/mame/video/argus.c28
-rw-r--r--src/mame/video/arkanoid.c6
-rw-r--r--src/mame/video/armedf.c6
-rw-r--r--src/mame/video/artmagic.c2
-rw-r--r--src/mame/video/ashnojoe.c2
-rw-r--r--src/mame/video/asterix.c2
-rw-r--r--src/mame/video/astrocde.c4
-rw-r--r--src/mame/video/asuka.c4
-rw-r--r--src/mame/video/atari.c8
-rw-r--r--src/mame/video/atarifb.c10
-rw-r--r--src/mame/video/atarig1.c2
-rw-r--r--src/mame/video/atarig42.c6
-rw-r--r--src/mame/video/atarigt.c10
-rw-r--r--src/mame/video/atarigx2.c6
-rw-r--r--src/mame/video/atarimo.c10
-rw-r--r--src/mame/video/atarimo.h6
-rw-r--r--src/mame/video/atarirle.c28
-rw-r--r--src/mame/video/atarirle.h2
-rw-r--r--src/mame/video/atarisy1.c4
-rw-r--r--src/mame/video/atarisy2.c6
-rw-r--r--src/mame/video/atetris.c2
-rw-r--r--src/mame/video/badlands.c4
-rw-r--r--src/mame/video/bagman.c4
-rw-r--r--src/mame/video/balsente.c4
-rw-r--r--src/mame/video/bankp.c2
-rw-r--r--src/mame/video/baraduke.c4
-rw-r--r--src/mame/video/batman.c6
-rw-r--r--src/mame/video/battlane.c14
-rw-r--r--src/mame/video/battlera.c8
-rw-r--r--src/mame/video/battlex.c4
-rw-r--r--src/mame/video/battlnts.c2
-rw-r--r--src/mame/video/bbusters.c8
-rw-r--r--src/mame/video/beathead.c2
-rw-r--r--src/mame/video/beezer.c2
-rw-r--r--src/mame/video/bfm_adr2.c2
-rw-r--r--src/mame/video/bfm_adr2.h2
-rw-r--r--src/mame/video/bigevglf.c24
-rw-r--r--src/mame/video/bigstrkb.c4
-rw-r--r--src/mame/video/bionicc.c4
-rw-r--r--src/mame/video/bishi.c2
-rw-r--r--src/mame/video/bking.c20
-rw-r--r--src/mame/video/bladestl.c2
-rw-r--r--src/mame/video/blktiger.c4
-rw-r--r--src/mame/video/blmbycar.c4
-rw-r--r--src/mame/video/blockade.c2
-rw-r--r--src/mame/video/blockhl.c2
-rw-r--r--src/mame/video/blockout.c12
-rw-r--r--src/mame/video/bloodbro.c10
-rw-r--r--src/mame/video/blstroid.c4
-rw-r--r--src/mame/video/blueprnt.c4
-rw-r--r--src/mame/video/bogeyman.c4
-rw-r--r--src/mame/video/bombjack.c4
-rw-r--r--src/mame/video/boogwing.c4
-rw-r--r--src/mame/video/bosco.c8
-rw-r--r--src/mame/video/bottom9.c2
-rw-r--r--src/mame/video/brkthru.c6
-rw-r--r--src/mame/video/bsktball.c4
-rw-r--r--src/mame/video/btime.c23
-rw-r--r--src/mame/video/btoads.c2
-rw-r--r--src/mame/video/bublbobl.c2
-rw-r--r--src/mame/video/buggychl.c24
-rw-r--r--src/mame/video/bwing.c4
-rw-r--r--src/mame/video/cabal.c4
-rw-r--r--src/mame/video/calomega.c2
-rw-r--r--src/mame/video/canyon.c6
-rw-r--r--src/mame/video/capbowl.c2
-rw-r--r--src/mame/video/carjmbre.c2
-rw-r--r--src/mame/video/carpolo.c17
-rw-r--r--src/mame/video/cave.c18
-rw-r--r--src/mame/video/cbasebal.c4
-rw-r--r--src/mame/video/cbuster.c14
-rw-r--r--src/mame/video/ccastles.c10
-rw-r--r--src/mame/video/cclimber.c20
-rw-r--r--src/mame/video/centiped.c8
-rw-r--r--src/mame/video/chaknpop.c6
-rw-r--r--src/mame/video/champbas.c8
-rw-r--r--src/mame/video/changela.c60
-rw-r--r--src/mame/video/cheekyms.c6
-rw-r--r--src/mame/video/chqflag.c2
-rw-r--r--src/mame/video/cidelsa.c6
-rw-r--r--src/mame/video/cinemat.c8
-rw-r--r--src/mame/video/circus.c24
-rw-r--r--src/mame/video/circusc.c4
-rw-r--r--src/mame/video/cischeat.c16
-rw-r--r--src/mame/video/citycon.c4
-rw-r--r--src/mame/video/cloak.c6
-rw-r--r--src/mame/video/cloud9.c12
-rw-r--r--src/mame/video/clshroad.c4
-rw-r--r--src/mame/video/cninja.c34
-rw-r--r--src/mame/video/combatsc.c8
-rw-r--r--src/mame/video/commando.c4
-rw-r--r--src/mame/video/compgolf.c4
-rw-r--r--src/mame/video/contra.c4
-rw-r--r--src/mame/video/cop01.c4
-rw-r--r--src/mame/video/copsnrob.c2
-rw-r--r--src/mame/video/cosmic.c22
-rw-r--r--src/mame/video/cps1.c14
-rw-r--r--src/mame/video/crbaloon.c4
-rw-r--r--src/mame/video/crgolf.c5
-rw-r--r--src/mame/video/crimfght.c2
-rw-r--r--src/mame/video/crospang.c4
-rw-r--r--src/mame/video/crshrace.c8
-rw-r--r--src/mame/video/cvs.c32
-rw-r--r--src/mame/video/cyberbal.c10
-rw-r--r--src/mame/video/darius.c10
-rw-r--r--src/mame/video/darkmist.c2
-rw-r--r--src/mame/video/darkseal.c4
-rw-r--r--src/mame/video/dassault.c4
-rw-r--r--src/mame/video/dbz.c2
-rw-r--r--src/mame/video/dc.c20
-rw-r--r--src/mame/video/dcheese.c4
-rw-r--r--src/mame/video/dcon.c6
-rw-r--r--src/mame/video/dday.c18
-rw-r--r--src/mame/video/ddragon.c4
-rw-r--r--src/mame/video/ddragon3.c6
-rw-r--r--src/mame/video/ddribble.c4
-rw-r--r--src/mame/video/deadang.c4
-rw-r--r--src/mame/video/dec0.c14
-rw-r--r--src/mame/video/dec8.c18
-rw-r--r--src/mame/video/decbac06.c10
-rw-r--r--src/mame/video/decbac06.h6
-rw-r--r--src/mame/video/deckarn.c2
-rw-r--r--src/mame/video/deckarn.h2
-rw-r--r--src/mame/video/decmxc06.c2
-rw-r--r--src/mame/video/decmxc06.h2
-rw-r--r--src/mame/video/deco16ic.c111
-rw-r--r--src/mame/video/deco16ic.h11
-rw-r--r--src/mame/video/deco32.c46
-rw-r--r--src/mame/video/deco_mlc.c12
-rw-r--r--src/mame/video/decocass.c10
-rw-r--r--src/mame/video/decocomn.c8
-rw-r--r--src/mame/video/decocomn.h2
-rw-r--r--src/mame/video/decospr.c75
-rw-r--r--src/mame/video/decospr.h15
-rw-r--r--src/mame/video/deniam.c4
-rw-r--r--src/mame/video/dietgo.c4
-rw-r--r--src/mame/video/digdug.c4
-rw-r--r--src/mame/video/djboy.c2
-rw-r--r--src/mame/video/djmain.c4
-rw-r--r--src/mame/video/dkong.c20
-rw-r--r--src/mame/video/docastle.c4
-rw-r--r--src/mame/video/dogfgt.c14
-rw-r--r--src/mame/video/dooyong.c20
-rw-r--r--src/mame/video/dragrace.c2
-rw-r--r--src/mame/video/drgnmst.c4
-rw-r--r--src/mame/video/dribling.c2
-rw-r--r--src/mame/video/drmicro.c2
-rw-r--r--src/mame/video/dynax.c26
-rw-r--r--src/mame/video/dynduke.c8
-rw-r--r--src/mame/video/eolith.c2
-rw-r--r--src/mame/video/epos.c2
-rw-r--r--src/mame/video/eprom.c8
-rw-r--r--src/mame/video/equites.c18
-rw-r--r--src/mame/video/esd16.c10
-rw-r--r--src/mame/video/espial.c4
-rw-r--r--src/mame/video/esripsys.c2
-rw-r--r--src/mame/video/exedexes.c4
-rw-r--r--src/mame/video/exerion.c4
-rw-r--r--src/mame/video/exidy.c51
-rw-r--r--src/mame/video/exidy440.c13
-rw-r--r--src/mame/video/exprraid.c4
-rw-r--r--src/mame/video/exterm.c2
-rw-r--r--src/mame/video/exzisus.c2
-rw-r--r--src/mame/video/f1gp.c12
-rw-r--r--src/mame/video/fantland.c4
-rw-r--r--src/mame/video/fastfred.c6
-rw-r--r--src/mame/video/fastlane.c2
-rw-r--r--src/mame/video/fcombat.c2
-rw-r--r--src/mame/video/fgoal.c24
-rw-r--r--src/mame/video/finalizr.c2
-rw-r--r--src/mame/video/firetrap.c4
-rw-r--r--src/mame/video/firetrk.c56
-rw-r--r--src/mame/video/fitfight.c4
-rw-r--r--src/mame/video/flkatck.c2
-rw-r--r--src/mame/video/flower.c4
-rw-r--r--src/mame/video/flstory.c10
-rw-r--r--src/mame/video/foodf.c4
-rw-r--r--src/mame/video/freekick.c12
-rw-r--r--src/mame/video/fromanc2.c4
-rw-r--r--src/mame/video/fromance.c6
-rw-r--r--src/mame/video/funkybee.c6
-rw-r--r--src/mame/video/funkyjet.c4
-rw-r--r--src/mame/video/funworld.c2
-rw-r--r--src/mame/video/funybubl.c4
-rw-r--r--src/mame/video/fuukifg2.c8
-rw-r--r--src/mame/video/fuukifg3.c8
-rw-r--r--src/mame/video/gaelco.c6
-rw-r--r--src/mame/video/gaelco2.c10
-rw-r--r--src/mame/video/gaelco3d.c24
-rw-r--r--src/mame/video/gaiden.c72
-rw-r--r--src/mame/video/galaga.c6
-rw-r--r--src/mame/video/galastrm.c54
-rw-r--r--src/mame/video/galaxian.c46
-rw-r--r--src/mame/video/galaxold.c86
-rw-r--r--src/mame/video/galivan.c6
-rw-r--r--src/mame/video/galpani2.c8
-rw-r--r--src/mame/video/galpanic.c20
-rw-r--r--src/mame/video/galspnbl.c6
-rw-r--r--src/mame/video/gameplan.c11
-rw-r--r--src/mame/video/gaplus.c6
-rw-r--r--src/mame/video/gatron.c2
-rw-r--r--src/mame/video/gauntlet.c4
-rw-r--r--src/mame/video/gberet.c8
-rw-r--r--src/mame/video/gbusters.c2
-rw-r--r--src/mame/video/gcpinbal.c4
-rw-r--r--src/mame/video/genesis.c2
-rw-r--r--src/mame/video/gijoe.c2
-rw-r--r--src/mame/video/ginganin.c4
-rw-r--r--src/mame/video/gladiatr.c8
-rw-r--r--src/mame/video/glass.c6
-rw-r--r--src/mame/video/gng.c4
-rw-r--r--src/mame/video/goal92.c4
-rw-r--r--src/mame/video/goindol.c4
-rw-r--r--src/mame/video/goldstar.c12
-rw-r--r--src/mame/video/gomoku.c10
-rw-r--r--src/mame/video/gotcha.c4
-rw-r--r--src/mame/video/gottlieb.c10
-rw-r--r--src/mame/video/gotya.c8
-rw-r--r--src/mame/video/gp9001.c10
-rw-r--r--src/mame/video/gp9001.h8
-rw-r--r--src/mame/video/gradius3.c2
-rw-r--r--src/mame/video/grchamp.c22
-rw-r--r--src/mame/video/gridlee.c2
-rw-r--r--src/mame/video/groundfx.c4
-rw-r--r--src/mame/video/gstriker.c10
-rw-r--r--src/mame/video/gsword.c4
-rw-r--r--src/mame/video/gticlub.c20
-rw-r--r--src/mame/video/gticlub.h6
-rw-r--r--src/mame/video/gumbo.c2
-rw-r--r--src/mame/video/gunbustr.c4
-rw-r--r--src/mame/video/gundealr.c2
-rw-r--r--src/mame/video/gunsmoke.c4
-rw-r--r--src/mame/video/gyruss.c4
-rw-r--r--src/mame/video/hanaawas.c2
-rw-r--r--src/mame/video/harddriv.c4
-rw-r--r--src/mame/video/hcastle.c4
-rw-r--r--src/mame/video/hexion.c2
-rw-r--r--src/mame/video/higemaru.c4
-rw-r--r--src/mame/video/himesiki.c4
-rw-r--r--src/mame/video/hnayayoi.c4
-rw-r--r--src/mame/video/hng64.c51
-rw-r--r--src/mame/video/holeland.c8
-rw-r--r--src/mame/video/homedata.c10
-rw-r--r--src/mame/video/homerun.c4
-rw-r--r--src/mame/video/hyhoo.c18
-rw-r--r--src/mame/video/hyperspt.c4
-rw-r--r--src/mame/video/hyprduel.c6
-rw-r--r--src/mame/video/ikki.c14
-rw-r--r--src/mame/video/inufuku.c4
-rw-r--r--src/mame/video/iqblock.c2
-rw-r--r--src/mame/video/irobot.c2
-rw-r--r--src/mame/video/ironhors.c8
-rw-r--r--src/mame/video/itech32.c2
-rw-r--r--src/mame/video/itech8.c8
-rw-r--r--src/mame/video/jack.c8
-rw-r--r--src/mame/video/jackal.c8
-rw-r--r--src/mame/video/jaguar.c6
-rw-r--r--src/mame/video/jailbrek.c4
-rw-r--r--src/mame/video/jalblend.c79
-rw-r--r--src/mame/video/jalblend.h5
-rw-r--r--src/mame/video/jedi.c11
-rw-r--r--src/mame/video/jpmimpct.c2
-rw-r--r--src/mame/video/kan_panb.c8
-rw-r--r--src/mame/video/kan_panb.h8
-rw-r--r--src/mame/video/kan_pand.c8
-rw-r--r--src/mame/video/kan_pand.h2
-rw-r--r--src/mame/video/kaneko16.c60
-rw-r--r--src/mame/video/kangaroo.c2
-rw-r--r--src/mame/video/karnov.c8
-rw-r--r--src/mame/video/kchamp.c8
-rw-r--r--src/mame/video/kickgoal.c8
-rw-r--r--src/mame/video/kingobox.c8
-rw-r--r--src/mame/video/klax.c4
-rw-r--r--src/mame/video/kncljoe.c4
-rw-r--r--src/mame/video/konamigx.c66
-rw-r--r--src/mame/video/konamiic.c18
-rw-r--r--src/mame/video/konamiic.h8
-rw-r--r--src/mame/video/konicdev.c77
-rw-r--r--src/mame/video/konicdev.h38
-rw-r--r--src/mame/video/kopunch.c2
-rw-r--r--src/mame/video/ksayakyu.c4
-rw-r--r--src/mame/video/kyugo.c4
-rw-r--r--src/mame/video/labyrunr.c2
-rw-r--r--src/mame/video/ladybug.c6
-rw-r--r--src/mame/video/ladyfrog.c4
-rw-r--r--src/mame/video/lasso.c10
-rw-r--r--src/mame/video/lastduel.c6
-rw-r--r--src/mame/video/lazercmd.c4
-rw-r--r--src/mame/video/legionna.c8
-rw-r--r--src/mame/video/leland.c9
-rw-r--r--src/mame/video/lemmings.c6
-rw-r--r--src/mame/video/lethal.c2
-rw-r--r--src/mame/video/lethalj.c2
-rw-r--r--src/mame/video/liberate.c18
-rw-r--r--src/mame/video/liberatr.c8
-rw-r--r--src/mame/video/lkage.c4
-rw-r--r--src/mame/video/lockon.c12
-rw-r--r--src/mame/video/lordgun.c6
-rw-r--r--src/mame/video/lsasquad.c12
-rw-r--r--src/mame/video/lucky74.c2
-rw-r--r--src/mame/video/lvcards.c2
-rw-r--r--src/mame/video/lwings.c8
-rw-r--r--src/mame/video/m10.c10
-rw-r--r--src/mame/video/m107.c8
-rw-r--r--src/mame/video/m3raster.c10
-rw-r--r--src/mame/video/m52.c4
-rw-r--r--src/mame/video/m57.c6
-rw-r--r--src/mame/video/m58.c9
-rw-r--r--src/mame/video/m62.c26
-rw-r--r--src/mame/video/m72.c8
-rw-r--r--src/mame/video/m90.c12
-rw-r--r--src/mame/video/m92.c10
-rw-r--r--src/mame/video/macrossp.c6
-rw-r--r--src/mame/video/madalien.c13
-rw-r--r--src/mame/video/madmotor.c2
-rw-r--r--src/mame/video/magmax.c10
-rw-r--r--src/mame/video/mainevt.c4
-rw-r--r--src/mame/video/mainsnk.c4
-rw-r--r--src/mame/video/malzak.c6
-rw-r--r--src/mame/video/mappy.c26
-rw-r--r--src/mame/video/marineb.c10
-rw-r--r--src/mame/video/mario.c4
-rw-r--r--src/mame/video/markham.c4
-rw-r--r--src/mame/video/matmania.c9
-rw-r--r--src/mame/video/mcatadv.c6
-rw-r--r--src/mame/video/mcd212.c18
-rw-r--r--src/mame/video/mcd212.h5
-rw-r--r--src/mame/video/mcr.c6
-rw-r--r--src/mame/video/mcr3.c6
-rw-r--r--src/mame/video/mcr68.c8
-rw-r--r--src/mame/video/meadows.c4
-rw-r--r--src/mame/video/megasys1.c6
-rw-r--r--src/mame/video/megazone.c4
-rw-r--r--src/mame/video/mermaid.c52
-rw-r--r--src/mame/video/metlclsh.c4
-rw-r--r--src/mame/video/metro.c10
-rw-r--r--src/mame/video/mexico86.c4
-rw-r--r--src/mame/video/micro3d.c2
-rw-r--r--src/mame/video/midtunit.c4
-rw-r--r--src/mame/video/midvunit.c2
-rw-r--r--src/mame/video/midyunit.c2
-rw-r--r--src/mame/video/midzeus.c2
-rw-r--r--src/mame/video/midzeus2.c2
-rw-r--r--src/mame/video/mikie.c4
-rw-r--r--src/mame/video/mitchell.c4
-rw-r--r--src/mame/video/mjkjidai.c4
-rw-r--r--src/mame/video/model1.c34
-rw-r--r--src/mame/video/model2.c49
-rw-r--r--src/mame/video/model2rd.c4
-rw-r--r--src/mame/video/model3.c36
-rw-r--r--src/mame/video/momoko.c4
-rw-r--r--src/mame/video/moo.c2
-rw-r--r--src/mame/video/mosaic.c2
-rw-r--r--src/mame/video/mouser.c2
-rw-r--r--src/mame/video/mrdo.c4
-rw-r--r--src/mame/video/mrflea.c6
-rw-r--r--src/mame/video/mrjong.c4
-rw-r--r--src/mame/video/ms32.c56
-rw-r--r--src/mame/video/msisaac.c4
-rw-r--r--src/mame/video/mugsmash.c4
-rw-r--r--src/mame/video/munchmo.c10
-rw-r--r--src/mame/video/mustache.c4
-rw-r--r--src/mame/video/mw8080bw.c8
-rw-r--r--src/mame/video/mystston.c7
-rw-r--r--src/mame/video/mystwarr.c8
-rw-r--r--src/mame/video/n64.c8
-rw-r--r--src/mame/video/n64.h6
-rw-r--r--src/mame/video/n8080.c6
-rw-r--r--src/mame/video/namcofl.c2
-rw-r--r--src/mame/video/namcona1.c8
-rw-r--r--src/mame/video/namconb1.c6
-rw-r--r--src/mame/video/namcos1.c4
-rw-r--r--src/mame/video/namcos2.c22
-rw-r--r--src/mame/video/namcos21.c6
-rw-r--r--src/mame/video/namcos22.c46
-rw-r--r--src/mame/video/namcos86.c4
-rw-r--r--src/mame/video/naughtyb.c4
-rw-r--r--src/mame/video/nbmj8688.c8
-rw-r--r--src/mame/video/nbmj8891.c18
-rw-r--r--src/mame/video/nbmj8900.c16
-rw-r--r--src/mame/video/nbmj8991.c12
-rw-r--r--src/mame/video/nbmj9195.c20
-rw-r--r--src/mame/video/nemesis.c4
-rw-r--r--src/mame/video/neogeo.c6
-rw-r--r--src/mame/video/news.c2
-rw-r--r--src/mame/video/ninjakd2.c30
-rw-r--r--src/mame/video/ninjaw.c10
-rw-r--r--src/mame/video/nitedrvr.c6
-rw-r--r--src/mame/video/niyanpai.c16
-rw-r--r--src/mame/video/nmk16.c38
-rw-r--r--src/mame/video/nova2001.c12
-rw-r--r--src/mame/video/nycaptor.c4
-rw-r--r--src/mame/video/offtwall.c4
-rw-r--r--src/mame/video/ohmygod.c4
-rw-r--r--src/mame/video/ojankohs.c12
-rw-r--r--src/mame/video/oneshot.c8
-rw-r--r--src/mame/video/opwolf.c2
-rw-r--r--src/mame/video/orbit.c4
-rw-r--r--src/mame/video/othldrby.c4
-rw-r--r--src/mame/video/othunder.c4
-rw-r--r--src/mame/video/overdriv.c2
-rw-r--r--src/mame/video/pacland.c14
-rw-r--r--src/mame/video/pacman.c4
-rw-r--r--src/mame/video/pandoras.c4
-rw-r--r--src/mame/video/paradise.c18
-rw-r--r--src/mame/video/parodius.c2
-rw-r--r--src/mame/video/pass.c2
-rw-r--r--src/mame/video/pastelg.c2
-rw-r--r--src/mame/video/pbaction.c4
-rw-r--r--src/mame/video/pcktgal.c6
-rw-r--r--src/mame/video/pgm.c8
-rw-r--r--src/mame/video/phoenix.c2
-rw-r--r--src/mame/video/pingpong.c4
-rw-r--r--src/mame/video/pirates.c4
-rw-r--r--src/mame/video/pitnrun.c12
-rw-r--r--src/mame/video/pk8000.c2
-rw-r--r--src/mame/video/pktgaldx.c6
-rw-r--r--src/mame/video/playch10.c10
-rw-r--r--src/mame/video/playmark.c16
-rw-r--r--src/mame/video/plygonet.c2
-rw-r--r--src/mame/video/pokechmp.c4
-rw-r--r--src/mame/video/polepos.c8
-rw-r--r--src/mame/video/policetr.c2
-rw-r--r--src/mame/video/polyplay.c2
-rw-r--r--src/mame/video/poolshrk.c2
-rw-r--r--src/mame/video/pooyan.c4
-rw-r--r--src/mame/video/popeye.c10
-rw-r--r--src/mame/video/popper.c4
-rw-r--r--src/mame/video/portrait.c4
-rw-r--r--src/mame/video/powerins.c4
-rw-r--r--src/mame/video/ppu2c0x.c14
-rw-r--r--src/mame/video/ppu2c0x.h2
-rw-r--r--src/mame/video/prehisle.c4
-rw-r--r--src/mame/video/psikyo.c8
-rw-r--r--src/mame/video/psikyo4.c6
-rw-r--r--src/mame/video/psikyosh.c82
-rw-r--r--src/mame/video/psychic5.c8
-rw-r--r--src/mame/video/punchout.c14
-rw-r--r--src/mame/video/pushman.c4
-rw-r--r--src/mame/video/qdrmfgp.c2
-rw-r--r--src/mame/video/qix.c19
-rw-r--r--src/mame/video/quasar.c16
-rw-r--r--src/mame/video/quizdna.c4
-rw-r--r--src/mame/video/quizpani.c2
-rw-r--r--src/mame/video/raiden.c4
-rw-r--r--src/mame/video/rainbow.c4
-rw-r--r--src/mame/video/rallyx.c20
-rw-r--r--src/mame/video/rampart.c8
-rw-r--r--src/mame/video/rastan.c2
-rw-r--r--src/mame/video/realbrk.c12
-rw-r--r--src/mame/video/redalert.c15
-rw-r--r--src/mame/video/redclash.c8
-rw-r--r--src/mame/video/relief.c6
-rw-r--r--src/mame/video/renegade.c4
-rw-r--r--src/mame/video/retofinv.c4
-rw-r--r--src/mame/video/rltennis.c10
-rw-r--r--src/mame/video/rockrage.c2
-rw-r--r--src/mame/video/rocnrope.c4
-rw-r--r--src/mame/video/rohga.c16
-rw-r--r--src/mame/video/rollerg.c2
-rw-r--r--src/mame/video/rollrace.c2
-rw-r--r--src/mame/video/route16.c8
-rw-r--r--src/mame/video/rpunch.c6
-rw-r--r--src/mame/video/runaway.c4
-rw-r--r--src/mame/video/rungun.c2
-rw-r--r--src/mame/video/sauro.c8
-rw-r--r--src/mame/video/sbasketb.c4
-rw-r--r--src/mame/video/sbugger.c2
-rw-r--r--src/mame/video/scotrsht.c4
-rw-r--r--src/mame/video/sderby.c6
-rw-r--r--src/mame/video/sega16sp.c26
-rw-r--r--src/mame/video/segag80r.c16
-rw-r--r--src/mame/video/segag80v.c4
-rw-r--r--src/mame/video/segahang.c2
-rw-r--r--src/mame/video/segaic16.c16
-rw-r--r--src/mame/video/segaic16.h38
-rw-r--r--src/mame/video/segaic24.c54
-rw-r--r--src/mame/video/segaic24.h11
-rw-r--r--src/mame/video/segaorun.c4
-rw-r--r--src/mame/video/segas16a.c4
-rw-r--r--src/mame/video/segas16b.c4
-rw-r--r--src/mame/video/segas18.c8
-rw-r--r--src/mame/video/segas24.c2
-rw-r--r--src/mame/video/segas32.c34
-rw-r--r--src/mame/video/segaxbd.c2
-rw-r--r--src/mame/video/segaybd.c4
-rw-r--r--src/mame/video/sei_crtc.c4
-rw-r--r--src/mame/video/seibuspi.c14
-rw-r--r--src/mame/video/seicross.c4
-rw-r--r--src/mame/video/senjyo.c8
-rw-r--r--src/mame/video/seta.c24
-rw-r--r--src/mame/video/seta001.c6
-rw-r--r--src/mame/video/seta001.h6
-rw-r--r--src/mame/video/seta2.c6
-rw-r--r--src/mame/video/sf.c4
-rw-r--r--src/mame/video/shadfrce.c4
-rw-r--r--src/mame/video/shangha3.c8
-rw-r--r--src/mame/video/shangkid.c12
-rw-r--r--src/mame/video/shaolins.c4
-rw-r--r--src/mame/video/shisen.c2
-rw-r--r--src/mame/video/shootout.c6
-rw-r--r--src/mame/video/shuuz.c4
-rw-r--r--src/mame/video/sidearms.c8
-rw-r--r--src/mame/video/sidepckt.c4
-rw-r--r--src/mame/video/silkroad.c4
-rw-r--r--src/mame/video/simpl156.c4
-rw-r--r--src/mame/video/simpsons.c2
-rw-r--r--src/mame/video/sknsspr.c12
-rw-r--r--src/mame/video/sknsspr.h2
-rw-r--r--src/mame/video/skullxbo.c4
-rw-r--r--src/mame/video/skydiver.c4
-rw-r--r--src/mame/video/skyfox.c6
-rw-r--r--src/mame/video/skykid.c4
-rw-r--r--src/mame/video/skyraid.c14
-rw-r--r--src/mame/video/slapfght.c6
-rw-r--r--src/mame/video/slapshot.c4
-rw-r--r--src/mame/video/snes.c4
-rw-r--r--src/mame/video/snk.c18
-rw-r--r--src/mame/video/snk6502.c2
-rw-r--r--src/mame/video/snk68.c4
-rw-r--r--src/mame/video/snookr10.c2
-rw-r--r--src/mame/video/solomon.c4
-rw-r--r--src/mame/video/sonson.c4
-rw-r--r--src/mame/video/spacefb.c10
-rw-r--r--src/mame/video/spbactn.c28
-rw-r--r--src/mame/video/spcforce.c2
-rw-r--r--src/mame/video/spdodgeb.c4
-rw-r--r--src/mame/video/speedatk.c2
-rw-r--r--src/mame/video/speedbal.c4
-rw-r--r--src/mame/video/speedspn.c4
-rw-r--r--src/mame/video/splash.c10
-rw-r--r--src/mame/video/sprcros2.c4
-rw-r--r--src/mame/video/sprint2.c14
-rw-r--r--src/mame/video/sprint4.c10
-rw-r--r--src/mame/video/sprint8.c18
-rw-r--r--src/mame/video/spy.c2
-rw-r--r--src/mame/video/srmp2.c6
-rw-r--r--src/mame/video/srumbler.c4
-rw-r--r--src/mame/video/sshangha.c18
-rw-r--r--src/mame/video/sslam.c6
-rw-r--r--src/mame/video/ssozumo.c4
-rw-r--r--src/mame/video/sspeedr.c8
-rw-r--r--src/mame/video/ssrj.c4
-rw-r--r--src/mame/video/ssv.c20
-rw-r--r--src/mame/video/st0016.c8
-rw-r--r--src/mame/video/stactics.c7
-rw-r--r--src/mame/video/stadhero.c2
-rw-r--r--src/mame/video/starcrus.c10
-rw-r--r--src/mame/video/starfire.c22
-rw-r--r--src/mame/video/starshp1.c39
-rw-r--r--src/mame/video/stfight.c4
-rw-r--r--src/mame/video/stlforce.c4
-rw-r--r--src/mame/video/strnskil.c4
-rw-r--r--src/mame/video/stvvdp2.c376
-rw-r--r--src/mame/video/subs.c4
-rw-r--r--src/mame/video/suna16.c6
-rw-r--r--src/mame/video/suna8.c6
-rw-r--r--src/mame/video/supbtime.c4
-rw-r--r--src/mame/video/superchs.c4
-rw-r--r--src/mame/video/superqix.c12
-rw-r--r--src/mame/video/suprloco.c8
-rw-r--r--src/mame/video/suprnova.c52
-rw-r--r--src/mame/video/suprridr.c2
-rw-r--r--src/mame/video/suprslam.c4
-rw-r--r--src/mame/video/surpratk.c2
-rw-r--r--src/mame/video/system1.c24
-rw-r--r--src/mame/video/system16.c8
-rw-r--r--src/mame/video/tagteam.c4
-rw-r--r--src/mame/video/tail2nos.c4
-rw-r--r--src/mame/video/taito_b.c16
-rw-r--r--src/mame/video/taito_f2.c24
-rw-r--r--src/mame/video/taito_f3.c37
-rw-r--r--src/mame/video/taito_h.c12
-rw-r--r--src/mame/video/taito_l.c4
-rw-r--r--src/mame/video/taito_o.c4
-rw-r--r--src/mame/video/taito_z.c26
-rw-r--r--src/mame/video/taitoair.c14
-rw-r--r--src/mame/video/taitoic.c66
-rw-r--r--src/mame/video/taitoic.h22
-rw-r--r--src/mame/video/taitojc.c44
-rw-r--r--src/mame/video/taitosj.c72
-rw-r--r--src/mame/video/tank8.c28
-rw-r--r--src/mame/video/tankbatt.c4
-rw-r--r--src/mame/video/tankbust.c4
-rw-r--r--src/mame/video/taotaido.c6
-rw-r--r--src/mame/video/targeth.c4
-rw-r--r--src/mame/video/tatsumi.c44
-rw-r--r--src/mame/video/taxidriv.c2
-rw-r--r--src/mame/video/tbowl.c6
-rw-r--r--src/mame/video/tceptor.c18
-rw-r--r--src/mame/video/tecmo.c4
-rw-r--r--src/mame/video/tecmo16.c46
-rw-r--r--src/mame/video/tecmosys.c48
-rw-r--r--src/mame/video/tehkanwc.c6
-rw-r--r--src/mame/video/terracre.c4
-rw-r--r--src/mame/video/tetrisp2.c11
-rw-r--r--src/mame/video/thedeep.c4
-rw-r--r--src/mame/video/thepit.c4
-rw-r--r--src/mame/video/thief.c2
-rw-r--r--src/mame/video/thoop2.c4
-rw-r--r--src/mame/video/thunderj.c6
-rw-r--r--src/mame/video/thunderx.c2
-rw-r--r--src/mame/video/tia.c10
-rw-r--r--src/mame/video/tia.h2
-rw-r--r--src/mame/video/tiamc1.c4
-rw-r--r--src/mame/video/tigeroad.c4
-rw-r--r--src/mame/video/timelimt.c4
-rw-r--r--src/mame/video/timeplt.c4
-rw-r--r--src/mame/video/tmnt.c16
-rw-r--r--src/mame/video/tnzs.c2
-rw-r--r--src/mame/video/toaplan1.c14
-rw-r--r--src/mame/video/toaplan2.c50
-rw-r--r--src/mame/video/toki.c8
-rw-r--r--src/mame/video/toobin.c18
-rw-r--r--src/mame/video/topspeed.c4
-rw-r--r--src/mame/video/toypop.c6
-rw-r--r--src/mame/video/tp84.c4
-rw-r--r--src/mame/video/trackfld.c4
-rw-r--r--src/mame/video/travrusa.c4
-rw-r--r--src/mame/video/triplhnt.c10
-rw-r--r--src/mame/video/truco.c2
-rw-r--r--src/mame/video/trucocl.c2
-rw-r--r--src/mame/video/tryout.c4
-rw-r--r--src/mame/video/tsamurai.c6
-rw-r--r--src/mame/video/tubep.c4
-rw-r--r--src/mame/video/tumbleb.c28
-rw-r--r--src/mame/video/tumblep.c4
-rw-r--r--src/mame/video/tunhunt.c10
-rw-r--r--src/mame/video/turbo.c12
-rw-r--r--src/mame/video/tutankhm.c2
-rw-r--r--src/mame/video/twin16.c6
-rw-r--r--src/mame/video/twincobr.c6
-rw-r--r--src/mame/video/tx1.c20
-rw-r--r--src/mame/video/ultraman.c2
-rw-r--r--src/mame/video/ultratnk.c10
-rw-r--r--src/mame/video/undrfire.c8
-rw-r--r--src/mame/video/unico.c8
-rw-r--r--src/mame/video/usgames.c2
-rw-r--r--src/mame/video/vaportra.c2
-rw-r--r--src/mame/video/vastar.c4
-rw-r--r--src/mame/video/vball.c4
-rw-r--r--src/mame/video/vdc.c6
-rw-r--r--src/mame/video/vdc.h2
-rw-r--r--src/mame/video/vectrex.c6
-rw-r--r--src/mame/video/vendetta.c2
-rw-r--r--src/mame/video/vicdual.c10
-rw-r--r--src/mame/video/victory.c2
-rw-r--r--src/mame/video/videopin.c2
-rw-r--r--src/mame/video/vigilant.c12
-rw-r--r--src/mame/video/vindictr.c4
-rw-r--r--src/mame/video/volfied.c4
-rw-r--r--src/mame/video/vsnes.c4
-rw-r--r--src/mame/video/vulgus.c4
-rw-r--r--src/mame/video/warpwarp.c6
-rw-r--r--src/mame/video/warriorb.c8
-rw-r--r--src/mame/video/wc90.c26
-rw-r--r--src/mame/video/wc90b.c4
-rw-r--r--src/mame/video/wecleman.c20
-rw-r--r--src/mame/video/welltris.c6
-rw-r--r--src/mame/video/wgp.c14
-rw-r--r--src/mame/video/williams.c6
-rw-r--r--src/mame/video/wiping.c2
-rw-r--r--src/mame/video/wiz.c12
-rw-r--r--src/mame/video/wolfpack.c22
-rw-r--r--src/mame/video/wrally.c4
-rw-r--r--src/mame/video/wwfsstar.c4
-rw-r--r--src/mame/video/wwfwfest.c4
-rw-r--r--src/mame/video/xain.c4
-rw-r--r--src/mame/video/xevious.c4
-rw-r--r--src/mame/video/xexex.c2
-rw-r--r--src/mame/video/xmen.c12
-rw-r--r--src/mame/video/xorworld.c4
-rw-r--r--src/mame/video/xxmissio.c4
-rw-r--r--src/mame/video/xybots.c4
-rw-r--r--src/mame/video/xyonix.c2
-rw-r--r--src/mame/video/ygv608.c8
-rw-r--r--src/mame/video/ygv608.h2
-rw-r--r--src/mame/video/yiear.c4
-rw-r--r--src/mame/video/yunsun16.c4
-rw-r--r--src/mame/video/yunsung8.c2
-rw-r--r--src/mame/video/zac2650.c21
-rw-r--r--src/mame/video/zaccaria.c4
-rw-r--r--src/mame/video/zaxxon.c14
-rw-r--r--src/mame/video/zerozone.c2
-rw-r--r--src/mame/video/zodiack.c6
-rw-r--r--src/osd/osdepend.c4
-rw-r--r--src/osd/osdepend.h2
-rw-r--r--src/osd/sdl/draw13.c3
-rw-r--r--src/osd/sdl/drawogl.c8
-rw-r--r--src/osd/sdl/osdsdl.h2
-rw-r--r--src/osd/sdl/sdlmain.c28
-rw-r--r--src/osd/windows/d3dhlsl.c63
-rw-r--r--src/osd/windows/d3dhlsl.h4
-rw-r--r--src/osd/windows/drawd3d.c96
-rw-r--r--src/osd/windows/drawd3d.h4
-rw-r--r--src/osd/windows/winmain.c13
-rw-r--r--src/osd/windows/winmain.h2
-rw-r--r--src/tools/chdman.c628
-rw-r--r--src/tools/ldresample.c15
-rw-r--r--src/tools/ldverify.c206
-rw-r--r--src/tools/regrep.c80
2547 files changed, 16955 insertions, 18994 deletions
diff --git a/.gitattributes b/.gitattributes
index 17dd6a13f88..a1edce650e3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -876,14 +876,18 @@ src/emu/machine/k053252.c svneol=native#text/plain
src/emu/machine/k053252.h svneol=native#text/plain
src/emu/machine/k056230.c svneol=native#text/plain
src/emu/machine/k056230.h svneol=native#text/plain
+src/emu/machine/laserdsc.c svneol=native#text/plain
src/emu/machine/laserdsc.h svneol=native#text/plain
src/emu/machine/latch8.c svneol=native#text/plain
src/emu/machine/latch8.h svneol=native#text/plain
-src/emu/machine/ldcore.c svneol=native#text/plain
-src/emu/machine/ldcore.h svneol=native#text/plain
src/emu/machine/ldpr8210.c svneol=native#text/plain
+src/emu/machine/ldpr8210.h svneol=native#text/plain
+src/emu/machine/ldstub.c svneol=native#text/plain
+src/emu/machine/ldstub.h svneol=native#text/plain
src/emu/machine/ldv1000.c svneol=native#text/plain
+src/emu/machine/ldv1000.h svneol=native#text/plain
src/emu/machine/ldvp931.c svneol=native#text/plain
+src/emu/machine/ldvp931.h svneol=native#text/plain
src/emu/machine/matsucd.c svneol=native#text/plain
src/emu/machine/matsucd.h svneol=native#text/plain
src/emu/machine/mb14241.c svneol=native#text/plain
@@ -1376,7 +1380,6 @@ src/emu/video/upd3301.c svneol=native#text/plain
src/emu/video/upd3301.h svneol=native#text/plain
src/emu/video/v9938.c svneol=native#text/plain
src/emu/video/v9938.h svneol=native#text/plain
-src/emu/video/v9938mod.c svneol=native#text/plain
src/emu/video/vector.c svneol=native#text/plain
src/emu/video/vector.h svneol=native#text/plain
src/emu/video/vooddefs.h svneol=native#text/plain
diff --git a/src/build/png2bdc.c b/src/build/png2bdc.c
index f0085587881..318e53d6f50 100644
--- a/src/build/png2bdc.c
+++ b/src/build/png2bdc.c
@@ -74,7 +74,7 @@ struct _render_font_char
INT32 width; /* width from this character to the next */
INT32 xoffs, yoffs; /* X and Y offset from baseline to top,left of bitmap */
INT32 bmwidth, bmheight; /* width and height of bitmap */
- bitmap_t * bitmap; /* pointer to the bitmap containing the raw data */
+ bitmap_argb32 * bitmap; /* pointer to the bitmap containing the raw data */
};
@@ -93,7 +93,7 @@ struct _render_font
INLINE FUNCTIONS
***************************************************************************/
-INLINE int pixel_is_set(bitmap_t &bitmap, int y, int x)
+INLINE int pixel_is_set(bitmap_argb32 &bitmap, int y, int x)
{
return (bitmap.pix32(y, x) & 0xffffff) == 0;
}
@@ -258,7 +258,7 @@ error:
characters in the given font
-------------------------------------------------*/
-static int bitmap_to_chars(bitmap_t &bitmap, render_font *font)
+static int bitmap_to_chars(bitmap_argb32 &bitmap, render_font *font)
{
int rowstart = 0;
int x, y;
@@ -352,7 +352,7 @@ static int bitmap_to_chars(bitmap_t &bitmap, render_font *font)
// printf(" Character %X - width = %d\n", chstart, colend - colstart + 1);
/* allocate a bitmap */
- ch->bitmap = new(std::nothrow) bitmap_t(colend - colstart + 1, font->height, BITMAP_FORMAT_ARGB32);
+ ch->bitmap = new(std::nothrow) bitmap_argb32(colend - colstart + 1, font->height);
if (ch->bitmap == NULL)
{
fprintf(stderr, "Error allocating character bitmap (%dx%d)\n", colend - colstart + 1, font->height);
@@ -414,21 +414,19 @@ int main(int argc, char *argv[])
/* iterate over input files */
for (curarg = 1; curarg < argc - 1; curarg++)
{
+ /* load the png file */
const char *pngname = argv[curarg];
- file_error filerr;
- png_error pngerr;
- bitmap_t *bitmap;
core_file *file;
-
- /* load the png file */
- filerr = core_fopen(pngname, OPEN_FLAG_READ, &file);
+ file_error filerr = core_fopen(pngname, OPEN_FLAG_READ, &file);
if (filerr != FILERR_NONE)
{
fprintf(stderr, "Error %d attempting to open PNG file\n", filerr);
error = TRUE;
break;
}
- pngerr = png_read_bitmap(file, &bitmap);
+
+ bitmap_argb32 bitmap;
+ png_error pngerr = png_read_bitmap(file, bitmap);
core_fclose(file);
if (pngerr != PNGERR_NONE)
{
@@ -438,8 +436,7 @@ int main(int argc, char *argv[])
}
/* parse the PNG into characters */
- error = bitmap_to_chars(*bitmap, font);
- delete bitmap;
+ error = bitmap_to_chars(bitmap, font);
if (error)
break;
}
diff --git a/src/emu/cpu/tms34010/tms34010.c b/src/emu/cpu/tms34010/tms34010.c
index a4e25fd006a..117b83c8b08 100644
--- a/src/emu/cpu/tms34010/tms34010.c
+++ b/src/emu/cpu/tms34010/tms34010.c
@@ -959,7 +959,7 @@ static TIMER_CALLBACK( scanline_callback )
{
/* only do this if we have an incoming pixel clock */
/* also, only do it if the HEBLNK/HSBLNK values are stable */
- if (master && tms->config->scanline_callback != NULL)
+ if (master && (tms->config->scanline_callback_ind16 != NULL || tms->config->scanline_callback_rgb32 != NULL))
{
int htotal = SMART_IOREG(tms, HTOTAL);
if (htotal > 0 && vtotal > 0)
@@ -1003,7 +1003,7 @@ static TIMER_CALLBACK( scanline_callback )
}
/* force a partial update within the visible area */
- if (vcount >= current_visarea.min_y && vcount <= current_visarea.max_y && tms->config->scanline_callback != NULL)
+ if (vcount >= current_visarea.min_y && vcount <= current_visarea.max_y && (tms->config->scanline_callback_ind16 != NULL || tms->config->scanline_callback_rgb32 != NULL))
tms->screen->update_partial(vcount);
/* if we are in the visible area, increment DPYADR by DUDATE */
@@ -1078,7 +1078,7 @@ void tms34010_get_display_params(device_t *cpu, tms34010_display_params *params)
}
-SCREEN_UPDATE( tms340x0 )
+SCREEN_UPDATE_IND16( tms340x0_ind16 )
{
pen_t blackpen = get_black_pen(screen.machine());
tms34010_display_params params;
@@ -1093,7 +1093,7 @@ SCREEN_UPDATE( tms340x0 )
if (type == TMS34010 || type == TMS34020)
{
tms = get_safe_token(cpu);
- if (tms->config != NULL && tms->config->scanline_callback != NULL && tms->screen == &screen)
+ if (tms->config != NULL && tms->config->scanline_callback_ind16 != NULL && tms->screen == &screen)
break;
tms = NULL;
}
@@ -1109,7 +1109,7 @@ SCREEN_UPDATE( tms340x0 )
{
/* call through to the callback */
LOG((" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr));
- (*tms->config->scanline_callback)(screen, bitmap, cliprect.min_y, &params);
+ (*tms->config->scanline_callback_ind16)(screen, bitmap, cliprect.min_y, &params);
}
/* otherwise, just blank the current scanline */
@@ -1117,22 +1117,59 @@ SCREEN_UPDATE( tms340x0 )
params.heblnk = params.hsblnk = cliprect.max_x + 1;
/* blank out the blank regions */
- if (bitmap.bpp() == 16)
+ UINT16 *dest = &bitmap.pix16(cliprect.min_y);
+ for (x = cliprect.min_x; x < params.heblnk; x++)
+ dest[x] = blackpen;
+ for (x = params.hsblnk; x <= cliprect.max_y; x++)
+ dest[x] = blackpen;
+ return 0;
+
+}
+
+SCREEN_UPDATE_RGB32( tms340x0_rgb32 )
+{
+ pen_t blackpen = get_black_pen(screen.machine());
+ tms34010_display_params params;
+ tms34010_state *tms = NULL;
+ device_t *cpu;
+ int x;
+
+ /* find the owning CPU */
+ for (cpu = screen.machine().devicelist().first(); cpu != NULL; cpu = cpu->next())
{
- UINT16 *dest = &bitmap.pix16(cliprect.min_y);
- for (x = cliprect.min_x; x < params.heblnk; x++)
- dest[x] = blackpen;
- for (x = params.hsblnk; x <= cliprect.max_y; x++)
- dest[x] = blackpen;
+ device_type type = cpu->type();
+ if (type == TMS34010 || type == TMS34020)
+ {
+ tms = get_safe_token(cpu);
+ if (tms->config != NULL && tms->config->scanline_callback_rgb32 != NULL && tms->screen == &screen)
+ break;
+ tms = NULL;
+ }
}
- else if (bitmap.bpp() == 32)
+ if (tms == NULL)
+ fatalerror("Unable to locate matching CPU for screen '%s'\n", screen.tag());
+
+ /* get the display parameters for the screen */
+ tms34010_get_display_params(tms->device, &params);
+
+ /* if the display is enabled, call the scanline callback */
+ if (params.enabled)
{
- UINT32 *dest = &bitmap.pix32(cliprect.min_y);
- for (x = cliprect.min_x; x < params.heblnk; x++)
- dest[x] = blackpen;
- for (x = params.hsblnk; x <= cliprect.max_y; x++)
- dest[x] = blackpen;
+ /* call through to the callback */
+ LOG((" Update: scan=%3d ROW=%04X COL=%04X\n", cliprect.min_y, params.rowaddr, params.coladdr));
+ (*tms->config->scanline_callback_rgb32)(screen, bitmap, cliprect.min_y, &params);
}
+
+ /* otherwise, just blank the current scanline */
+ else
+ params.heblnk = params.hsblnk = cliprect.max_x + 1;
+
+ /* blank out the blank regions */
+ UINT32 *dest = &bitmap.pix32(cliprect.min_y);
+ for (x = cliprect.min_x; x < params.heblnk; x++)
+ dest[x] = blackpen;
+ for (x = params.hsblnk; x <= cliprect.max_y; x++)
+ dest[x] = blackpen;
return 0;
}
diff --git a/src/emu/cpu/tms34010/tms34010.h b/src/emu/cpu/tms34010/tms34010.h
index 46c838c56a2..912854de764 100644
--- a/src/emu/cpu/tms34010/tms34010.h
+++ b/src/emu/cpu/tms34010/tms34010.h
@@ -196,7 +196,8 @@ struct _tms34010_config
const char *screen_tag; /* the screen operated on */
UINT32 pixclock; /* the pixel clock (0 means don't adjust screen size) */
int pixperclock; /* pixels per clock */
- void (*scanline_callback)(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+ void (*scanline_callback_ind16)(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
+ void (*scanline_callback_rgb32)(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params);
void (*output_int)(device_t *device, int state); /* output interrupt callback */
void (*to_shiftreg)(address_space *space, offs_t, UINT16 *); /* shift register write */
void (*from_shiftreg)(address_space *space, offs_t, UINT16 *); /* shift register read */
@@ -204,7 +205,8 @@ struct _tms34010_config
/* PUBLIC FUNCTIONS - 34010 */
-SCREEN_UPDATE( tms340x0 );
+SCREEN_UPDATE_IND16( tms340x0_ind16 );
+SCREEN_UPDATE_RGB32( tms340x0_rgb32 );
void tms34010_get_display_params(device_t *cpu, tms34010_display_params *params);
DECLARE_LEGACY_CPU_DEVICE(TMS34010, tms34010);
diff --git a/src/emu/crsshair.c b/src/emu/crsshair.c
index b0b84f175f6..09d4836979e 100644
--- a/src/emu/crsshair.c
+++ b/src/emu/crsshair.c
@@ -37,7 +37,7 @@ struct _crosshair_global
UINT8 used[MAX_PLAYERS]; /* usage per player */
UINT8 mode[MAX_PLAYERS]; /* visibility mode per player */
UINT8 visible[MAX_PLAYERS]; /* visibility per player */
- bitmap_t * bitmap[MAX_PLAYERS]; /* bitmap per player */
+ bitmap_argb32 * bitmap[MAX_PLAYERS]; /* bitmap per player */
render_texture * texture[MAX_PLAYERS]; /* texture per player */
device_t *screen[MAX_PLAYERS]; /* the screen on which this player's crosshair is drawn */
float x[MAX_PLAYERS]; /* current X position */
@@ -155,7 +155,8 @@ static void create_bitmap(running_machine &machine, int player)
rgb_t color = crosshair_colors[player];
/* if we have a bitmap and texture for this player, kill it */
- global_free(global.bitmap[player]);
+ if (global.bitmap[player] == NULL)
+ global.bitmap[player] = global_alloc(bitmap_argb32);
machine.render().texture_free(global.texture[player]);
emu_file crossfile(machine.options().crosshair_path(), OPEN_FLAG_READ);
@@ -163,24 +164,24 @@ static void create_bitmap(running_machine &machine, int player)
{
/* look for user specified file */
sprintf(filename, "%s.png", global.name[player]);
- global.bitmap[player] = render_load_png(crossfile, NULL, filename, NULL, NULL);
+ render_load_png(*global.bitmap[player], crossfile, NULL, filename);
}
else
{
/* look for default cross?.png in crsshair\game dir */
sprintf(filename, "cross%d.png", player + 1);
- global.bitmap[player] = render_load_png(crossfile, machine.system().name, filename, NULL, NULL);
+ render_load_png(*global.bitmap[player], crossfile, machine.system().name, filename);
/* look for default cross?.png in crsshair dir */
- if (global.bitmap[player] == NULL)
- global.bitmap[player] = render_load_png(crossfile, NULL, filename, NULL, NULL);
+ if (!global.bitmap[player]->valid())
+ render_load_png(*global.bitmap[player], crossfile, NULL, filename);
}
/* if that didn't work, use the built-in one */
- if (global.bitmap[player] == NULL)
+ if (!global.bitmap[player]->valid())
{
/* allocate a blank bitmap to start with */
- global.bitmap[player] = global_alloc(bitmap_t(CROSSHAIR_RAW_SIZE, CROSSHAIR_RAW_SIZE, BITMAP_FORMAT_ARGB32));
+ global.bitmap[player]->allocate(CROSSHAIR_RAW_SIZE, CROSSHAIR_RAW_SIZE);
global.bitmap[player]->fill(MAKE_ARGB(0x00,0xff,0xff,0xff));
/* extract the raw source data to it */
@@ -199,7 +200,7 @@ static void create_bitmap(running_machine &machine, int player)
/* create a texture to reference the bitmap */
global.texture[player] = machine.render().texture_alloc(render_texture::hq_scale);
- global.texture[player]->set_bitmap(global.bitmap[player], NULL, TEXFORMAT_ARGB32);
+ global.texture[player]->set_bitmap(*global.bitmap[player], global.bitmap[player]->cliprect(), TEXFORMAT_ARGB32);
}
diff --git a/src/emu/device.h b/src/emu/device.h
index bdfea18335e..9b7f1d001c6 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -78,6 +78,7 @@
device_t::static_set_input_default(*device, DEVICE_INPUT_DEFAULTS_NAME(_config)); \
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/emu/disound.c b/src/emu/disound.c
index 4045c72ce58..cb004c28fa2 100644
--- a/src/emu/disound.c
+++ b/src/emu/disound.c
@@ -103,6 +103,17 @@ void device_sound_interface::static_reset_routes(device_t &device)
//-------------------------------------------------
+// stream_alloc - allocate a stream implicitly
+// associated with this device
+//-------------------------------------------------
+
+sound_stream *device_sound_interface::stream_alloc(int inputs, int outputs, int sample_rate)
+{
+ return device().machine().sound().stream_alloc(*this, inputs, outputs, sample_rate);
+}
+
+
+//-------------------------------------------------
// inputs - return the total number of inputs
// for the given device
//-------------------------------------------------
diff --git a/src/emu/disound.h b/src/emu/disound.h
index 6eae08c3076..c4c9a2f13c0 100644
--- a/src/emu/disound.h
+++ b/src/emu/disound.h
@@ -126,6 +126,9 @@ public:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) = 0;
+ // stream creation
+ sound_stream *stream_alloc(int inputs, int outputs, int sample_rate);
+
// helpers
int inputs() const;
int outputs() const;
diff --git a/src/emu/drawgfx.c b/src/emu/drawgfx.c
index 8eb13d53a24..12c297beb2d 100644
--- a/src/emu/drawgfx.c
+++ b/src/emu/drawgfx.c
@@ -17,10 +17,10 @@
GLOBAL VARIABLES
***************************************************************************/
-/* if this line errors during compile, the size of NO_PRIORITY is wrong and I need to use something else */
+// if this line errors during compile, the size of NO_PRIORITY is wrong and I need to use something else
UINT8 no_priority_size_is_wrong[2 * (sizeof(NO_PRIORITY) == 3) - 1];
-bitmap_t drawgfx_dummy_priority_bitmap;
+bitmap_ind8 drawgfx_dummy_priority_bitmap;
@@ -41,7 +41,7 @@ static void decodechar(const gfx_element *gfx, UINT32 code, const UINT8 *src);
offset
-------------------------------------------------*/
-INLINE int readbit(const UINT8 *src, unsigned int bitnum)
+static inline int readbit(const UINT8 *src, unsigned int bitnum)
{
return src[bitnum / 8] & (0x80 >> (bitnum % 8));
}
@@ -53,7 +53,7 @@ INLINE int readbit(const UINT8 *src, unsigned int bitnum)
than the width
-------------------------------------------------*/
-INLINE INT32 normalize_xscroll(bitmap_t &bitmap, INT32 xscroll)
+static inline INT32 normalize_xscroll(bitmap_t &bitmap, INT32 xscroll)
{
return (xscroll >= 0) ? xscroll % bitmap.width() : (bitmap.width() - (-xscroll) % bitmap.width());
}
@@ -65,7 +65,7 @@ INLINE INT32 normalize_xscroll(bitmap_t &bitmap, INT32 xscroll)
than the height
-------------------------------------------------*/
-INLINE INT32 normalize_yscroll(bitmap_t &bitmap, INT32 yscroll)
+static inline INT32 normalize_yscroll(bitmap_t &bitmap, INT32 yscroll)
{
return (yscroll >= 0) ? yscroll % bitmap.height() : (bitmap.height() - (-yscroll) % bitmap.height());
}
@@ -86,11 +86,11 @@ void gfx_init(running_machine &machine)
const gfx_decode_entry *gfxdecodeinfo = machine.config().m_gfxdecodeinfo;
int curgfx;
- /* skip if nothing to do */
+ // skip if nothing to do
if (gfxdecodeinfo == NULL)
return;
- /* loop over all elements */
+ // loop over all elements
for (curgfx = 0; curgfx < MAX_GFX_ELEMENTS && gfxdecodeinfo[curgfx].gfxlayout != NULL; curgfx++)
{
const gfx_decode_entry *gfxdecode = &gfxdecodeinfo[curgfx];
@@ -110,26 +110,26 @@ void gfx_init(running_machine &machine)
gfx_layout glcopy;
int j;
- /* make a copy of the layout */
+ // make a copy of the layout
glcopy = *gfxdecode->gfxlayout;
- /* copy the X and Y offsets into temporary arrays */
+ // copy the X and Y offsets into temporary arrays
memcpy(extxoffs, glcopy.xoffset, sizeof(glcopy.xoffset));
memcpy(extyoffs, glcopy.yoffset, sizeof(glcopy.yoffset));
- /* if there are extended offsets, copy them over top */
+ // if there are extended offsets, copy them over top
if (glcopy.extxoffs != NULL)
memcpy(extxoffs, glcopy.extxoffs, glcopy.width * sizeof(extxoffs[0]));
if (glcopy.extyoffs != NULL)
memcpy(extyoffs, glcopy.extyoffs, glcopy.height * sizeof(extyoffs[0]));
- /* always use the extended offsets here */
+ // always use the extended offsets here
glcopy.extxoffs = extxoffs;
glcopy.extyoffs = extyoffs;
extpoffs = glcopy.planeoffset;
- /* expand X and Y by the scale factors */
+ // expand X and Y by the scale factors
if (xscale > 1)
{
width *= xscale;
@@ -143,17 +143,17 @@ void gfx_init(running_machine &machine)
extyoffs[j] = extyoffs[j / yscale];
}
- /* if the character count is a region fraction, compute the effective total */
+ // if the character count is a region fraction, compute the effective total
if (IS_FRAC(total))
{
assert(region_length != 0);
total = region_length / charincrement * FRAC_NUM(total) / FRAC_DEN(total);
}
- /* for non-raw graphics, decode the X and Y offsets */
+ // for non-raw graphics, decode the X and Y offsets
if (!israw)
{
- /* loop over all the planes, converting fractions */
+ // loop over all the planes, converting fractions
for (j = 0; j < planes; j++)
{
UINT32 value1 = extpoffs[j];
@@ -164,7 +164,7 @@ void gfx_init(running_machine &machine)
}
}
- /* loop over all the X/Y offsets, converting fractions */
+ // loop over all the X/Y offsets, converting fractions
for (j = 0; j < width; j++)
{
UINT32 value2 = extxoffs[j];
@@ -186,7 +186,7 @@ void gfx_init(running_machine &machine)
}
}
- /* otherwise, just use the line modulo */
+ // otherwise, just use the line modulo
else
{
int base = gfxdecode->start;
@@ -202,12 +202,12 @@ void gfx_init(running_machine &machine)
}
}
- /* update glcopy */
+ // update glcopy
glcopy.width = width;
glcopy.height = height;
glcopy.total = total;
- /* allocate the graphics */
+ // allocate the graphics
machine.gfx[curgfx] = gfx_element_alloc(machine, &glcopy, (region_base != NULL) ? region_base + gfxdecode->start : NULL, gfxdecode->total_color_codes, gfxdecode->color_codes_start);
}
}
@@ -228,10 +228,10 @@ gfx_element *gfx_element_alloc(running_machine &machine, const gfx_layout *gl, c
UINT32 total = gl->total;
gfx_element *gfx;
- /* allocate memory for the gfx_element structure */
+ // allocate memory for the gfx_element structure
gfx = auto_alloc_clear(machine, gfx_element(machine));
- /* fill in the data */
+ // fill in the data
gfx->width = width;
gfx->height = height;
@@ -246,7 +246,7 @@ gfx_element *gfx_element_alloc(running_machine &machine, const gfx_layout *gl, c
gfx->srcdata = srcdata;
- /* copy the layout */
+ // copy the layout
gfx->layout = *gl;
if (gfx->layout.extxoffs != NULL)
{
@@ -278,38 +278,38 @@ gfx_element *gfx_element_alloc(running_machine &machine, const gfx_layout *gl, c
}
}
- /* allocate a pen usage array for entries with 32 pens or less */
+ // allocate a pen usage array for entries with 32 pens or less
if (gfx->color_depth <= 32)
gfx->pen_usage = auto_alloc_array(machine, UINT32, gfx->total_elements);
- /* allocate a dirty array */
+ // allocate a dirty array
gfx->dirty = auto_alloc_array(machine, UINT8, gfx->total_elements);
memset(gfx->dirty, 1, gfx->total_elements * sizeof(*gfx->dirty));
- /* raw graphics case */
+ // raw graphics case
if (israw)
{
- /* modulos are determined for us by the layout */
+ // modulos are determined for us by the layout
gfx->line_modulo = (gl->extyoffs ? gl->extyoffs[0] : gl->yoffset[0]) / 8;
gfx->char_modulo = gl->charincrement / 8;
- /* don't free the data because we will get a pointer at decode time */
+ // don't free the data because we will get a pointer at decode time
gfx->flags |= GFX_ELEMENT_DONT_FREE;
if (planes <= 4)
gfx->flags |= GFX_ELEMENT_PACKED;
- /* RAW graphics must have a pointer up front */
+ // RAW graphics must have a pointer up front
gfx->gfxdata = (UINT8 *)gfx->srcdata;
}
- /* decoded graphics case */
+ // decoded graphics case
else
{
- /* we get to pick our own modulos */
+ // we get to pick our own modulos
gfx->line_modulo = gfx->origwidth;
gfx->char_modulo = gfx->line_modulo * gfx->origheight;
- /* allocate memory for the data */
+ // allocate memory for the data
gfx->gfxdata = auto_alloc_array(machine, UINT8, gfx->total_elements * gfx->char_modulo);
}
@@ -334,11 +334,11 @@ void gfx_element_decode(const gfx_element *gfx, UINT32 code)
void gfx_element_free(gfx_element *gfx)
{
- /* ignore NULL frees */
+ // ignore NULL frees
if (gfx == NULL)
return;
- /* free our data */
+ // free our data
auto_free(gfx->machine(), gfx->layout.extyoffs);
auto_free(gfx->machine(), gfx->layout.extxoffs);
auto_free(gfx->machine(), gfx->pen_usage);
@@ -394,11 +394,11 @@ static void calc_penusage(const gfx_element *gfx, UINT32 code)
UINT32 usage = 0;
int x, y;
- /* if nothing allocated, don't do it */
+ // if nothing allocated, don't do it
if (gfx->pen_usage == NULL)
return;
- /* packed case */
+ // packed case
if (gfx->flags & GFX_ELEMENT_PACKED)
for (y = 0; y < gfx->origheight; y++)
{
@@ -408,7 +408,7 @@ static void calc_penusage(const gfx_element *gfx, UINT32 code)
dp += gfx->line_modulo;
}
- /* unpacked case */
+ // unpacked case
else
for (y = 0; y < gfx->origheight; y++)
{
@@ -418,7 +418,7 @@ static void calc_penusage(const gfx_element *gfx, UINT32 code)
dp += gfx->line_modulo;
}
- /* store the final result */
+ // store the final result
gfx->pen_usage[code] = usage;
}
@@ -442,10 +442,10 @@ static void decodechar(const gfx_element *gfx, UINT32 code, const UINT8 *src)
if (!israw)
{
- /* zap the data to 0 */
+ // zap the data to 0
memset(dp, 0, gfx->char_modulo);
- /* packed case */
+ // packed case
if (gfx->flags & GFX_ELEMENT_PACKED)
for (plane = 0; plane < planes; plane++)
{
@@ -467,7 +467,7 @@ static void decodechar(const gfx_element *gfx, UINT32 code, const UINT8 *src)
}
}
- /* unpacked case */
+ // unpacked case
else
for (plane = 0; plane < planes; plane++)
{
@@ -486,10 +486,10 @@ static void decodechar(const gfx_element *gfx, UINT32 code, const UINT8 *src)
}
}
- /* compute pen usage */
+ // compute pen usage
calc_penusage(gfx, code);
- /* no longer dirty */
+ // no longer dirty
gfx->dirty[code] = 0;
}
@@ -503,26 +503,22 @@ static void decodechar(const gfx_element *gfx, UINT32 code, const UINT8 *src)
no transparency
-------------------------------------------------*/
-void drawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty)
{
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
+void drawgfx_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty)
+{
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
}
@@ -531,51 +527,60 @@ void drawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element
a single transparent pen
-------------------------------------------------*/
-void drawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 transpen)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* special case invalid pens to opaque */
+ // special case invalid pens to opaque
if (transpen > 0xff)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~(1 << transpen)) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & (1 << transpen)) == 0)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+void drawgfx_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 transpen)
+{
+ // special case invalid pens to opaque
+ if (transpen > 0xff)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- /* use pen usage to optimize */
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~(1 << transpen)) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & (1 << transpen)) == 0)
- {
- drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- return;
- }
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
}
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
@@ -585,28 +590,32 @@ void drawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_eleme
lookups
-------------------------------------------------*/
-void drawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 transpen)
{
- DECLARE_NO_PRIORITY;
+ // early out if completely transparent
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
+ return;
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
+void drawgfx_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 transpen)
+{
+ // early out if completely transparent
code %= gfx->total_elements;
-
- /* early out if completely transparent */
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
+ // render
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
}
@@ -616,51 +625,60 @@ void drawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_e
a mask
-------------------------------------------------*/
-void drawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 transmask)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* special case 0 mask to opaque */
+ // special case 0 mask to opaque
if (transmask == 0)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~transmask) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & transmask) == 0)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+void drawgfx_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 transmask)
+{
+ // special case 0 mask to opaque
+ if (transmask == 0)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- /* use pen usage to optimize */
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~transmask) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & transmask) == 0)
- {
- drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- return;
- }
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
}
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
@@ -670,28 +688,30 @@ void drawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_elem
transparent, opaque, or shadowing
-------------------------------------------------*/
-void drawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
const UINT8 *pentable, const pen_t *shadowtable)
{
+ assert(pentable != NULL);
+
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
DECLARE_NO_PRIORITY;
- const pen_t *paldata;
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+void drawgfx_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ const UINT8 *pentable, const pen_t *shadowtable)
+{
assert(pentable != NULL);
- /* get final code and color, and grab lookup tables */
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
}
@@ -701,38 +721,23 @@ void drawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_ele
remaining pixels with a fixed alpha value
-------------------------------------------------*/
-void drawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfx_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 transpen, UINT8 alpha)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* special case alpha = 0xff */
+ // special case alpha = 0xff
if (alpha == 0xff)
- {
- drawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
- return;
- }
+ return drawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
-
- /* get final code and color, and grab lookup tables */
+ // early out if completely transparent
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* early out if completely transparent */
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_ALPHA16, NO_PRIORITY);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
+ // get final code and color, and grab lookup tables
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
}
@@ -746,34 +751,34 @@ void drawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element
element with no transparency
-------------------------------------------------*/
-void drawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley)
{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
+
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
DECLARE_NO_PRIORITY;
- const pen_t *paldata;
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+}
- /* non-zoom case */
+void drawgfxzoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley)
+{
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- return;
- }
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ return drawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty);
- /* get final code and color, and grab lookup tables */
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
}
@@ -782,58 +787,68 @@ void drawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_ele
element with a single transparent pen
-------------------------------------------------*/
-void drawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 transpen)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
- return;
- }
+ return drawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
- /* special case invalid pens to opaque */
+ // special case invalid pens to opaque
if (transpen > 0xff)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~(1 << transpen)) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & (1 << transpen)) == 0)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+void drawgfxzoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, UINT32 transpen)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return drawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
+
+ // special case invalid pens to opaque
+ if (transpen > 0xff)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- /* use pen usage to optimize */
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~(1 << transpen)) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & (1 << transpen)) == 0)
- {
- drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- return;
- }
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
@@ -843,35 +858,40 @@ void drawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_e
color lookups
-------------------------------------------------*/
-void drawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 transpen)
{
- DECLARE_NO_PRIORITY;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
+ return drawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
+
+ // early out if completely transparent
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- }
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
+void drawgfxzoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, UINT32 transpen)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return drawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen);
- /* early out if completely transparent */
+ // early out if completely transparent
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
+ // render
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN, NO_PRIORITY);
}
@@ -881,58 +901,68 @@ void drawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const g
provided as a mask
-------------------------------------------------*/
-void drawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 transmask)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transmask);
- return;
- }
+ return drawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transmask);
- /* special case 0 mask to opaque */
+ // special case 0 mask to opaque
if (transmask == 0)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~transmask) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & transmask) == 0)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
+}
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+void drawgfxzoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, UINT32 transmask)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return drawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transmask);
+
+ // special case 0 mask to opaque
+ if (transmask == 0)
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- /* use pen usage to optimize */
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~transmask) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & transmask) == 0)
- {
- drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
- return;
- }
+ return drawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
@@ -942,35 +972,38 @@ void drawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_
are transparent, opaque, or shadowing
-------------------------------------------------*/
-void drawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
+ assert(pentable != NULL);
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
- return;
- }
+ return drawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
+
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+void drawgfxzoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable)
+{
assert(pentable != NULL);
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return drawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
}
@@ -980,45 +1013,27 @@ void drawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx
the remaining pixels with a fixed alpha value
-------------------------------------------------*/
-void drawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void drawgfxzoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 transpen, UINT8 alpha)
{
- DECLARE_NO_PRIORITY;
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- drawgfx_alpha(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen, alpha);
- return;
- }
+ return drawgfx_alpha(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, transpen, alpha);
- /* special case alpha = 0xff */
+ // special case alpha = 0xff
if (alpha == 0xff)
- {
- drawgfxzoom_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, transpen);
- return;
- }
+ return drawgfxzoom_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, transpen);
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
-
- /* get final code and color, and grab lookup tables */
+ // early out if completely transparent
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* early out if completely transparent */
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_ALPHA16, NO_PRIORITY);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DECLARE_NO_PRIORITY;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
}
@@ -1033,29 +1048,30 @@ void drawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_elem
bitmap
-------------------------------------------------*/
-void pdrawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask)
+ bitmap_ind8 &priority, UINT32 pmask)
{
- const pen_t *paldata;
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
+}
- /* high bit of the mask is implicitly on */
+void pdrawgfx_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ bitmap_ind8 &priority, UINT32 pmask)
+{
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
@@ -1065,53 +1081,64 @@ void pdrawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_elemen
priority bitmap
-------------------------------------------------*/
-void pdrawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, UINT32 transpen)
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen)
{
- const pen_t *paldata;
-
- /* special case invalid pens to opaque */
+ // special case invalid pens to opaque
if (transpen > 0xff)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~(1 << transpen)) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & (1 << transpen)) == 0)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
+}
- /* use pen usage to optimize */
+void pdrawgfx_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen)
+{
+ // special case invalid pens to opaque
+ if (transpen > 0xff)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~(1 << transpen)) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & (1 << transpen)) == 0)
- {
- pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- return;
- }
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
}
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
@@ -1121,29 +1148,36 @@ void pdrawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_elem
lookups, checking against the priority bitmap
-------------------------------------------------*/
-void pdrawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, UINT32 transpen)
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen)
{
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
-
- /* get final code and color, and grab lookup tables */
+ // early out if completely transparent
code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
+ return;
+
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* early out if completely transparent */
+ // render
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
+}
+
+void pdrawgfx_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen)
+{
+ // early out if completely transparent
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
+ // render
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
}
@@ -1153,53 +1187,64 @@ void pdrawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_
a mask, checking against the priority bitmap
-------------------------------------------------*/
-void pdrawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, UINT32 transmask)
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask)
{
- const pen_t *paldata;
-
- /* special case 0 mask to opaque */
+ // special case 0 mask to opaque
if (transmask == 0)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~transmask) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & transmask) == 0)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
+}
+
+void pdrawgfx_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask)
+{
+ // special case 0 mask to opaque
+ if (transmask == 0)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- /* use pen usage to optimize */
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~transmask) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & transmask) == 0)
- {
- pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- return;
- }
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
}
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
@@ -1210,30 +1255,34 @@ void pdrawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_ele
against the priority bitmap
-------------------------------------------------*/
-void pdrawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable)
+ bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable)
{
- const pen_t *paldata;
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
assert(pentable != NULL);
- /* get final code and color, and grab lookup tables */
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
+
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
+}
+
+void pdrawgfx_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable)
+{
+ assert(pentable != NULL);
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
}
@@ -1244,40 +1293,25 @@ void pdrawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_el
checking against the priority bitmap
-------------------------------------------------*/
-void pdrawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfx_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha)
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha)
{
- const pen_t *paldata;
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
-
- /* special case alpha = 0xff */
+ // special case alpha = 0xff
if (alpha == 0xff)
- {
- pdrawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
- return;
- }
+ return pdrawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
- /* get final code and color, and grab lookup tables */
+ // early out if completely transparent
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* early out if completely transparent */
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_ALPHA16_PRIORITY, UINT8);
- else
- DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
}
@@ -1292,36 +1326,38 @@ void pdrawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element
the priority bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask)
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask)
{
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- return;
- }
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
+}
- /* high bit of the mask is implicitly on */
+void pdrawgfxzoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return pdrawgfx_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask);
+
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
@@ -1331,61 +1367,74 @@ void pdrawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_el
checking against the priority bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 transpen)
{
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
- return;
- }
+ return pdrawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
- /* special case invalid pens to opaque */
+ // special case invalid pens to opaque
if (transpen > 0xff)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~(1 << transpen)) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & (1 << transpen)) == 0)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
+}
- /* use pen usage to optimize */
+void pdrawgfxzoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
+ UINT32 transpen)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return pdrawgfx_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
+
+ // special case invalid pens to opaque
+ if (transpen > 0xff)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~(1 << transpen)) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & (1 << transpen)) == 0)
- {
- pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
- return;
- }
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
@@ -1396,37 +1445,46 @@ void pdrawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_
bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 transpen)
{
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
+ return pdrawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
+
+ // early out if completely transparent
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- }
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
+ // render
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
+}
+
+void pdrawgfxzoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
+ UINT32 transpen)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return pdrawgfx_transpen_raw(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen);
- /* early out if completely transparent */
+ // early out if completely transparent
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
+ // render
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REBASE_TRANSPEN_PRIORITY, UINT8);
}
@@ -1437,61 +1495,74 @@ void pdrawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const
priority bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 transmask)
{
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transmask);
- return;
- }
+ return pdrawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transmask);
- /* special case 0 mask to opaque */
+ // special case 0 mask to opaque
if (transmask == 0)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
+ if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
- pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
- return;
+ // fully transparent; do nothing
+ UINT32 usage = gfx->pen_usage[code];
+ if ((usage & ~transmask) == 0)
+ return;
+
+ // fully opaque; draw as such
+ if ((usage & transmask) == 0)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
- code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
+}
- /* use pen usage to optimize */
+void pdrawgfxzoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
+ UINT32 transmask)
+{
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return pdrawgfx_transmask(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transmask);
+
+ // special case 0 mask to opaque
+ if (transmask == 0)
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+
+ // use pen usage to optimize
+ code %= gfx->total_elements;
if (gfx->pen_usage != NULL && !gfx->dirty[code])
{
+ // fully transparent; do nothing
UINT32 usage = gfx->pen_usage[code];
-
- /* fully transparent; do nothing */
if ((usage & ~transmask) == 0)
return;
- /* fully opaque; draw as such */
+ // fully opaque; draw as such
if ((usage & transmask) == 0)
- {
- pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
- return;
- }
+ return pdrawgfxzoom_opaque(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
@@ -1502,38 +1573,44 @@ void pdrawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx
checking against the priority bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
const UINT8 *pentable, const pen_t *shadowtable)
{
- const pen_t *paldata;
+ assert(pentable != NULL);
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
- return;
- }
+ return pdrawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
- assert(pentable != NULL);
+ // high bit of the mask is implicitly on
+ pmask |= 1 << 31;
- /* get final code and color, and grab lookup tables */
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
+ DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
+}
- /* high bit of the mask is implicitly on */
+void pdrawgfxzoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
+ UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
+ const UINT8 *pentable, const pen_t *shadowtable)
+{
+ assert(pentable != NULL);
+
+ // non-zoom case
+ if (scalex == 0x10000 && scaley == 0x10000)
+ return pdrawgfx_transtable(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
+
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ code %= gfx->total_elements;
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
}
@@ -1545,48 +1622,30 @@ void pdrawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gf
bitmap
-------------------------------------------------*/
-void pdrawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+void pdrawgfxzoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 transpen, UINT8 alpha)
{
- const pen_t *paldata;
-
- /* non-zoom case */
+ // non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- {
- pdrawgfx_alpha(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen, alpha);
- return;
- }
+ return pdrawgfx_alpha(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, priority, pmask, transpen, alpha);
- /* special case alpha = 0xff */
+ // special case alpha = 0xff
if (alpha == 0xff)
- {
- pdrawgfxzoom_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask, transpen);
- return;
- }
-
- assert(dest.valid());
- assert(dest.bpp() == 16 || dest.bpp() == 32);
- assert(gfx != NULL);
+ return pdrawgfxzoom_transpen(dest, cliprect, gfx, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask, transpen);
- /* get final code and color, and grab lookup tables */
+ // early out if completely transparent
code %= gfx->total_elements;
- color %= gfx->total_colors;
- paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * color];
-
- /* early out if completely transparent */
if (gfx->pen_usage != NULL && !gfx->dirty[code] && (gfx->pen_usage[code] & ~(1 << transpen)) == 0)
return;
- /* high bit of the mask is implicitly on */
+ // high bit of the mask is implicitly on
pmask |= 1 << 31;
- /* render based on dest bitmap depth */
- if (dest.bpp() == 16)
- DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_ALPHA16_PRIORITY, UINT8);
- else
- DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
+ // render
+ const pen_t *paldata = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
+ DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
}
@@ -1600,32 +1659,30 @@ void pdrawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_ele
buffer to a single scanline of a bitmap
-------------------------------------------------*/
-void draw_scanline8(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata)
+void draw_scanline8(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata)
{
DECLARE_NO_PRIORITY;
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ // palette lookup case
+ if (paldata != NULL)
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+
+ // raw copy case
+ else
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+}
- /* palette lookup case */
+void draw_scanline8(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata)
+{
+ DECLARE_NO_PRIORITY;
+
+ // palette lookup case
if (paldata != NULL)
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- /* raw copy case */
+ // raw copy case
else
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
@@ -1634,32 +1691,30 @@ void draw_scanline8(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, co
buffer to a single scanline of a bitmap
-------------------------------------------------*/
-void draw_scanline16(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata)
+void draw_scanline16(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata)
{
DECLARE_NO_PRIORITY;
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ // palette lookup case
+ if (paldata != NULL)
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+
+ // raw copy case
+ else
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+}
- /* palette lookup case */
+void draw_scanline16(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata)
+{
+ DECLARE_NO_PRIORITY;
+
+ // palette lookup case
if (paldata != NULL)
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- /* raw copy case */
+ // raw copy case
else
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
@@ -1668,32 +1723,30 @@ void draw_scanline16(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, c
buffer to a single scanline of a bitmap
-------------------------------------------------*/
-void draw_scanline32(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata)
+void draw_scanline32(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata)
{
DECLARE_NO_PRIORITY;
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ // palette lookup case
+ if (paldata != NULL)
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
+
+ // raw copy case
+ else
+ DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+}
- /* palette lookup case */
+void draw_scanline32(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata)
+{
+ DECLARE_NO_PRIORITY;
+
+ // palette lookup case
if (paldata != NULL)
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
- /* raw copy case */
+ // raw copy case
else
- {
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- DRAWSCANLINE_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else
- DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- }
+ DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
@@ -1707,16 +1760,14 @@ void draw_scanline32(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, c
scanline of a bitmap to an 8bpp buffer
-------------------------------------------------*/
-void extract_scanline8(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
+void extract_scanline8(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
{
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ EXTRACTSCANLINE_CORE(UINT16);
+}
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- EXTRACTSCANLINE_CORE(UINT16);
- else
- EXTRACTSCANLINE_CORE(UINT32);
+void extract_scanline8(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
+{
+ EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1725,16 +1776,14 @@ void extract_scanline8(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, U
scanline of a bitmap to a 16bpp buffer
-------------------------------------------------*/
-void extract_scanline16(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
+void extract_scanline16(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
{
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ EXTRACTSCANLINE_CORE(UINT16);
+}
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- EXTRACTSCANLINE_CORE(UINT16);
- else
- EXTRACTSCANLINE_CORE(UINT32);
+void extract_scanline16(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
+{
+ EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1743,16 +1792,14 @@ void extract_scanline16(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length,
scanline of a bitmap to a 32bpp buffer
-------------------------------------------------*/
-void extract_scanline32(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
+void extract_scanline32(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
{
- assert(bitmap.valid());
- assert(bitmap.bpp() == 16 || bitmap.bpp() == 32);
+ EXTRACTSCANLINE_CORE(UINT16);
+}
- /* 16bpp case */
- if (bitmap.bpp() == 16)
- EXTRACTSCANLINE_CORE(UINT16);
- else
- EXTRACTSCANLINE_CORE(UINT32);
+void extract_scanline32(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
+{
+ EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1766,21 +1813,16 @@ void extract_scanline32(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length,
copying all unclipped pixels
-------------------------------------------------*/
-void copybitmap(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
+void copybitmap(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
{
DECLARE_NO_PRIORITY;
+ COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(src.valid());
- assert(dest.bpp() == 8 || dest.bpp() == 16 || dest.bpp() == 32);
- assert(src.bpp() == dest.bpp());
-
- if (dest.bpp() == 8)
- COPYBITMAP_CORE(UINT8, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else if (dest.bpp() == 16)
- COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else
- COPYBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+void copybitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
+{
+ DECLARE_NO_PRIORITY;
+ COPYBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
@@ -1790,36 +1832,22 @@ void copybitmap(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32 destx
those that match transpen
-------------------------------------------------*/
-void copybitmap_trans(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen)
+void copybitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen)
{
DECLARE_NO_PRIORITY;
+ if (transpen > 0xffff)
+ copybitmap(dest, src, flipx, flipy, destx, desty, cliprect);
+ else
+ COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(src.valid());
- assert(dest.bpp() == 8 || dest.bpp() == 16 || dest.bpp() == 32);
- assert(src.bpp() == dest.bpp());
-
- if (dest.bpp() == 8)
- {
- if (transpen > 0xff)
- copybitmap(dest, src, flipx, flipy, destx, desty, cliprect);
- else
- COPYBITMAP_CORE(UINT8, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
- }
- else if (dest.bpp() == 16)
- {
- if (transpen > 0xffff)
- copybitmap(dest, src, flipx, flipy, destx, desty, cliprect);
- else
- COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
- }
+void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen)
+{
+ DECLARE_NO_PRIORITY;
+ if (transpen == 0xffffffff)
+ copybitmap(dest, src, flipx, flipy, destx, desty, cliprect);
else
- {
- if (transpen == 0xffffffff)
- copybitmap(dest, src, flipx, flipy, destx, desty, cliprect);
- else
- COPYBITMAP_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
- }
+ COPYBITMAP_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
}
@@ -1834,10 +1862,17 @@ void copybitmap_trans(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32
applying scrolling to one or more rows/colums
-------------------------------------------------*/
-void copyscrollbitmap(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
+void copyscrollbitmap(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
+{
+ // just call through to the transparent case as the underlying copybitmap will
+ // optimize for pen == 0xffffffff
+ copyscrollbitmap_trans(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, 0xffffffff);
+}
+
+void copyscrollbitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
{
- /* just call through to the transparent case as the underlying copybitmap will
- optimize for pen == 0xffffffff */
+ // just call through to the transparent case as the underlying copybitmap will
+ // optimize for pen == 0xffffffff
copyscrollbitmap_trans(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, 0xffffffff);
}
@@ -1849,114 +1884,111 @@ void copyscrollbitmap(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const INT32
scrolling to one or more rows/colums
-------------------------------------------------*/
-void copyscrollbitmap_trans(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen)
+template<class _BitmapClass>
+static inline void copyscrollbitmap_trans_common(_BitmapClass &dest, _BitmapClass &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen)
{
- /* no rowscroll and no colscroll means no scroll */
+ // no rowscroll and no colscroll means no scroll
if (numrows == 0 && numcols == 0)
- {
- copybitmap_trans(dest, src, 0, 0, 0, 0, cliprect, transpen);
- return;
- }
+ return copybitmap_trans(dest, src, 0, 0, 0, 0, cliprect, transpen);
- assert(dest.valid());
- assert(src.valid());
- assert(dest.bpp() == 8 || dest.bpp() == 16 || dest.bpp() == 32);
- assert(dest.bpp() == src.bpp());
assert(numrows != 0 || rowscroll == NULL);
assert(numrows == 0 || rowscroll != NULL);
assert(numcols != 0 || colscroll == NULL);
assert(numcols == 0 || colscroll != NULL);
- /* fully scrolling X,Y playfield */
+ // fully scrolling X,Y playfield
if (numrows <= 1 && numcols <= 1)
{
INT32 xscroll = normalize_xscroll(src, (numrows == 0) ? 0 : rowscroll[0]);
INT32 yscroll = normalize_yscroll(src, (numcols == 0) ? 0 : colscroll[0]);
- INT32 sx, sy;
- /* iterate over all portions of the scroll that overlap the destination */
- for (sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
- for (sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
+ // iterate over all portions of the scroll that overlap the destination
+ for (INT32 sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
+ for (INT32 sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
copybitmap_trans(dest, src, 0, 0, sx, sy, cliprect, transpen);
}
- /* scrolling columns plus horizontal scroll */
+ // scrolling columns plus horizontal scroll
else if (numrows <= 1)
{
INT32 xscroll = normalize_xscroll(src, (numrows == 0) ? 0 : rowscroll[0]);
rectangle subclip = cliprect;
- int col, colwidth, groupcols;
- /* determine width of each column */
- colwidth = src.width() / numcols;
+ // determine width of each column
+ int colwidth = src.width() / numcols;
assert(src.width() % colwidth == 0);
- /* iterate over each column */
- for (col = 0; col < numcols; col += groupcols)
+ // iterate over each column
+ int groupcols;
+ for (int col = 0; col < numcols; col += groupcols)
{
INT32 yscroll = colscroll[col];
- INT32 sx, sy;
- /* count consecutive columns scrolled by the same amount */
+ // count consecutive columns scrolled by the same amount
for (groupcols = 1; col + groupcols < numcols; groupcols++)
if (colscroll[col + groupcols] != yscroll)
break;
- /* iterate over reps of the columns in question */
+ // iterate over reps of the columns in question
yscroll = normalize_yscroll(src, yscroll);
- for (sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
+ for (INT32 sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
{
- /* compute the cliprect for this group */
+ // compute the cliprect for this group
subclip.min_x = col * colwidth + sx;
subclip.max_x = (col + groupcols) * colwidth - 1 + sx;
subclip &= cliprect;
- /* iterate over all portions of the scroll that overlap the destination */
- for (sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
+ // iterate over all portions of the scroll that overlap the destination
+ for (INT32 sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
copybitmap_trans(dest, src, 0, 0, sx, sy, subclip, transpen);
}
}
}
- /* scrolling rows plus vertical scroll */
+ // scrolling rows plus vertical scroll
else if (numcols <= 1)
{
INT32 yscroll = normalize_yscroll(src, (numcols == 0) ? 0 : colscroll[0]);
rectangle subclip = cliprect;
- int row, rowheight, grouprows;
- /* determine width of each rows */
- rowheight = src.height() / numrows;
+ // determine width of each rows
+ int rowheight = src.height() / numrows;
assert(src.height() % rowheight == 0);
- /* iterate over each row */
- for (row = 0; row < numrows; row += grouprows)
+ // iterate over each row
+ int grouprows;
+ for (int row = 0; row < numrows; row += grouprows)
{
INT32 xscroll = rowscroll[row];
- INT32 sx, sy;
- /* count consecutive rows scrolled by the same amount */
+ // count consecutive rows scrolled by the same amount
for (grouprows = 1; row + grouprows < numrows; grouprows++)
if (rowscroll[row + grouprows] != xscroll)
break;
- /* iterate over reps of the rows in question */
+ // iterate over reps of the rows in question
xscroll = normalize_xscroll(src, xscroll);
- for (sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
+ for (INT32 sy = yscroll - src.height(); sy < dest.height(); sy += src.height())
{
- /* compute the cliprect for this group */
+ // compute the cliprect for this group
subclip.min_y = row * rowheight + sy;
subclip.max_y = (row + grouprows) * rowheight - 1 + sy;
subclip &= cliprect;
- /* iterate over all portions of the scroll that overlap the destination */
- for (sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
+ // iterate over all portions of the scroll that overlap the destination
+ for (INT32 sx = xscroll - src.width(); sx < dest.width(); sx += src.width())
copybitmap_trans(dest, src, 0, 0, sx, sy, subclip, transpen);
}
}
}
}
+void copyscrollbitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen)
+{ copyscrollbitmap_trans_common(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, transpen); }
+
+void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen)
+{ copyscrollbitmap_trans_common(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, transpen); }
+
/***************************************************************************
@@ -1969,21 +2001,16 @@ void copyscrollbitmap_trans(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const
pixels
-------------------------------------------------*/
-void copyrozbitmap(bitmap_t &dest, const rectangle &cliprect, bitmap_t &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
+void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
{
DECLARE_NO_PRIORITY;
+ COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(src.valid());
- assert(dest.bpp() == 8 || dest.bpp() == 16 || dest.bpp() == 32);
- assert(src.bpp() == dest.bpp());
-
- if (dest.bpp() == 8)
- COPYROZBITMAP_CORE(UINT8, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else if (dest.bpp() == 16)
- COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
- else
- COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
+void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
+{
+ DECLARE_NO_PRIORITY;
+ COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
@@ -1994,19 +2021,14 @@ void copyrozbitmap(bitmap_t &dest, const rectangle &cliprect, bitmap_t &src, INT
transpen
-------------------------------------------------*/
-void copyrozbitmap_trans(bitmap_t &dest, const rectangle &cliprect, bitmap_t &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transpen)
+void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transpen)
{
DECLARE_NO_PRIORITY;
+ COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
+}
- assert(dest.valid());
- assert(src.valid());
- assert(dest.bpp() == 8 || dest.bpp() == 16 || dest.bpp() == 32);
- assert(src.bpp() == dest.bpp());
-
- if (dest.bpp() == 8)
- COPYROZBITMAP_CORE(UINT8, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
- else if (dest.bpp() == 16)
- COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
- else
- COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
+void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transpen)
+{
+ DECLARE_NO_PRIORITY;
+ COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
}
diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h
index 58b02f98306..5138390907d 100644
--- a/src/emu/drawgfx.h
+++ b/src/emu/drawgfx.h
@@ -196,84 +196,112 @@ void gfx_element_build_temporary(gfx_element *gfx, running_machine &machine, UIN
/* ----- core graphics drawing ----- */
/* specific drawgfx implementations for each transparency type */
-void drawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
-void drawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
-void drawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
-void drawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
-void drawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
-void drawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen, UINT8 alpha);
+void drawgfx_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
+void drawgfx_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
+void drawgfx_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+void drawgfx_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+void drawgfx_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+void drawgfx_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+void drawgfx_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
+void drawgfx_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
+void drawgfx_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
+void drawgfx_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
+void drawgfx_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen, UINT8 alpha);
/* ----- zoomed graphics drawing ----- */
/* specific drawgfxzoom implementations for each transparency type */
-void drawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
-void drawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
-void drawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
-void drawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
-void drawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
-void drawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen, UINT8 alpha);
+void drawgfxzoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
+void drawgfxzoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
+void drawgfxzoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+void drawgfxzoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+void drawgfxzoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+void drawgfxzoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+void drawgfxzoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
+void drawgfxzoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
+void drawgfxzoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
+void drawgfxzoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
+void drawgfxzoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen, UINT8 alpha);
/* ----- priority masked graphics drawing ----- */
/* specific pdrawgfx implementations for each transparency type */
-void pdrawgfx_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask);
-void pdrawgfx_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask, UINT32 transpen);
-void pdrawgfx_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask, UINT32 transpen);
-void pdrawgfx_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask, UINT32 transmask);
-void pdrawgfx_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
-void pdrawgfx_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_t &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha);
+void pdrawgfx_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
+void pdrawgfx_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
+void pdrawgfx_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfx_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfx_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfx_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfx_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+void pdrawgfx_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+void pdrawgfx_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
+void pdrawgfx_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
+void pdrawgfx_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha);
/* ----- priority masked zoomed graphics drawing ----- */
/* specific pdrawgfxzoom implementations for each transparency type */
-void pdrawgfxzoom_opaque(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask);
-void pdrawgfxzoom_transpen(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask, UINT32 transpen);
-void pdrawgfxzoom_transpen_raw(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask, UINT32 transpen);
-void pdrawgfxzoom_transmask(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask, UINT32 transmask);
-void pdrawgfxzoom_transtable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
-void pdrawgfxzoom_alpha(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha);
+void pdrawgfxzoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
+void pdrawgfxzoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
+void pdrawgfxzoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfxzoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfxzoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfxzoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+void pdrawgfxzoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+void pdrawgfxzoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+void pdrawgfxzoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
+void pdrawgfxzoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable);
+void pdrawgfxzoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha);
/* ----- scanline copying ----- */
/* copy pixels from an 8bpp buffer to a single scanline of a bitmap */
-void draw_scanline8(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata);
+void draw_scanline8(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata);
+void draw_scanline8(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT8 *srcptr, const pen_t *paldata);
/* copy pixels from a 16bpp buffer to a single scanline of a bitmap */
-void draw_scanline16(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata);
+void draw_scanline16(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata);
+void draw_scanline16(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT16 *srcptr, const pen_t *paldata);
/* copy pixels from a 32bpp buffer to a single scanline of a bitmap */
-void draw_scanline32(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata);
+void draw_scanline32(bitmap_ind16 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata);
+void draw_scanline32(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, const pen_t *paldata);
/* ----- scanline extraction ----- */
/* copy pixels from a single scanline of a bitmap to an 8bpp buffer */
-void extract_scanline8(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
+void extract_scanline8(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
+void extract_scanline8(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
/* copy pixels from a single scanline of a bitmap to a 16bpp buffer */
-void extract_scanline16(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
+void extract_scanline16(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
+void extract_scanline16(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
/* copy pixels from a single scanline of a bitmap to a 32bpp buffer */
-void extract_scanline32(bitmap_t &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
+void extract_scanline32(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
+void extract_scanline32(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
/* ----- bitmap copying ----- */
/* copy from one bitmap to another, copying all unclipped pixels */
-void copybitmap(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
+void copybitmap(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
+void copybitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
/* copy from one bitmap to another, copying all unclipped pixels except those that match transpen */
-void copybitmap_trans(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
+void copybitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
+void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
/*
Copy a bitmap onto another with scroll and wraparound.
@@ -288,10 +316,12 @@ void copybitmap_trans(bitmap_t &dest, bitmap_t &src, int flipx, int flipy, INT32
*/
/* copy from one bitmap to another, copying all unclipped pixels, and applying scrolling to one or more rows/colums */
-void copyscrollbitmap(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
+void copyscrollbitmap(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
+void copyscrollbitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
/* copy from one bitmap to another, copying all unclipped pixels except those that match transpen, and applying scrolling to one or more rows/colums */
-void copyscrollbitmap_trans(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
+void copyscrollbitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
+void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
/*
Copy a bitmap applying rotation, zooming, and arbitrary distortion.
@@ -323,10 +353,12 @@ void copyscrollbitmap_trans(bitmap_t &dest, bitmap_t &src, UINT32 numrows, const
*/
/* copy from one bitmap to another, with zoom and rotation, copying all unclipped pixels */
-void copyrozbitmap(bitmap_t &dest, const rectangle &cliprect, bitmap_t &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
+void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
+void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
/* copy from one bitmap to another, with zoom and rotation, copying all unclipped pixels whose values do not match transpen */
-void copyrozbitmap_trans(bitmap_t &dest, const rectangle &cliprect, bitmap_t &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
+void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
+void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
diff --git a/src/emu/drawgfxm.h b/src/emu/drawgfxm.h
index b85668b94da..43149bbc490 100644
--- a/src/emu/drawgfxm.h
+++ b/src/emu/drawgfxm.h
@@ -58,13 +58,13 @@
/* special priority type meaning "none" */
typedef struct { char dummy[3]; } NO_PRIORITY;
-extern bitmap_t drawgfx_dummy_priority_bitmap;
+extern bitmap_ind8 drawgfx_dummy_priority_bitmap;
#define DECLARE_NO_PRIORITY bitmap_t &priority = drawgfx_dummy_priority_bitmap;
/* macros for using the optional priority */
#define PRIORITY_VALID(x) (sizeof(x) != sizeof(NO_PRIORITY))
-#define PRIORITY_ADDR(p,t,y,x) (PRIORITY_VALID(t) ? (&(p).pix<t>(y, x)) : NULL)
+#define PRIORITY_ADDR(p,t,y,x) (PRIORITY_VALID(t) ? (&(p).pixt<t>(y, x)) : NULL)
#define PRIORITY_ADVANCE(t,p,i) do { if (PRIORITY_VALID(t)) (p) += (i); } while (0)
@@ -305,15 +305,6 @@ while (0) \
against the destination using 'alpha'
-------------------------------------------------*/
-#define PIXEL_OP_REMAP_TRANSPEN_ALPHA16(DEST, PRIORITY, SOURCE) \
-do \
-{ \
- UINT32 srcdata = (SOURCE); \
- if (srcdata != transpen) \
- (DEST) = alpha_blend_r16((DEST), paldata[srcdata], alpha); \
-} \
-while (0) \
-
#define PIXEL_OP_REMAP_TRANSPEN_ALPHA32(DEST, PRIORITY, SOURCE) \
do \
{ \
@@ -323,19 +314,6 @@ do \
} \
while (0) \
-#define PIXEL_OP_REMAP_TRANSPEN_ALPHA16_PRIORITY(DEST, PRIORITY, SOURCE) \
-do \
-{ \
- UINT32 srcdata = (SOURCE); \
- if (srcdata != transpen) \
- { \
- if (((1 << ((PRIORITY) & 0x1f)) & pmask) == 0) \
- (DEST) = alpha_blend_r16((DEST), paldata[srcdata], alpha); \
- (PRIORITY) = 31; \
- } \
-} \
-while (0) \
-
#define PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY(DEST, PRIORITY, SOURCE) \
do \
{ \
@@ -387,7 +365,8 @@ do { \
assert(cliprect.min_x >= 0); \
assert(cliprect.max_x < dest.width()); \
assert(cliprect.min_y >= 0); \
- assert(cliprect.max_y < dest.height()); \
+ assert(cliprect.max_y < dest.height()); \
+ assert(code < gfx->total_elements); \
\
/* ignore empty/invalid cliprects */ \
if (cliprect.empty()) \
@@ -400,10 +379,10 @@ do { \
\
/* apply left clip */ \
srcx = 0; \
- if (destx < cliprect.min_x) \
+ if (destx < cliprect.min_x) \
{ \
srcx = cliprect.min_x - destx; \
- destx = cliprect.min_x; \
+ destx = cliprect.min_x; \
} \
\
/* apply right clip */ \
@@ -417,10 +396,10 @@ do { \
\
/* apply top clip */ \
srcy = 0; \
- if (desty < cliprect.min_y) \
+ if (desty < cliprect.min_y) \
{ \
srcy = cliprect.min_y - desty; \
- desty = cliprect.min_y; \
+ desty = cliprect.min_y; \
} \
\
/* apply bottom clip */ \
@@ -459,7 +438,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata; \
srcdata += dy; \
\
@@ -494,7 +473,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata; \
srcdata += dy; \
\
@@ -541,7 +520,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata; \
srcdata += dy; \
\
@@ -582,7 +561,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata; \
srcdata += dy; \
\
@@ -612,7 +591,7 @@ do { \
} \
} \
} while (0); \
- g_profiler.stop(); \
+ g_profiler.stop(); \
} while (0)
@@ -737,7 +716,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata + (srcy >> 16) * gfx->line_modulo; \
INT32 cursrcx = srcx; \
srcy += dy; \
@@ -776,7 +755,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const UINT8 *srcptr = srcdata + (srcy >> 16) * gfx->line_modulo; \
INT32 cursrcx = srcx; \
srcy += dy; \
@@ -894,7 +873,7 @@ do { \
leftovers = (destendx + 1 - destx) - 4 * numblocks; \
\
/* compute the address of the first source pixel of the first row */ \
- srcdata = &src.pix<PIXEL_TYPE>(srcy, srcx); \
+ srcdata = &src.pixt<PIXEL_TYPE>(srcy, srcx); \
\
/* non-flipped case */ \
if (!flipx) \
@@ -903,7 +882,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const PIXEL_TYPE *srcptr = srcdata; \
srcdata += dy; \
\
@@ -938,7 +917,7 @@ do { \
for (cury = desty; cury <= destendy; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, destx); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, destx); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, destx); \
const PIXEL_TYPE *srcptr = srcdata; \
srcdata += dy; \
\
@@ -1035,7 +1014,7 @@ do { \
for (cury = cliprect.min_y; cury <= cliprect.max_y; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, cliprect.min_x); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, cliprect.min_x); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, cliprect.min_x); \
const PIXEL_TYPE *srcptr; \
INT32 srcx = startx; \
INT32 srcy = starty; \
@@ -1045,7 +1024,7 @@ do { \
/* check srcy for the whole row at once */ \
if ((UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16); \
\
/* iterate over unrolled blocks of 4 */ \
for (curx = 0; curx < numblocks; curx++) \
@@ -1096,8 +1075,8 @@ do { \
for (cury = cliprect.min_y; cury <= cliprect.max_y; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, cliprect.min_x); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, cliprect.min_x); \
- const PIXEL_TYPE *srcptr = &src.pix<PIXEL_TYPE>(starty >> 16); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, cliprect.min_x); \
+ const PIXEL_TYPE *srcptr = &src.pixt<PIXEL_TYPE>(starty >> 16); \
INT32 srcx = startx; \
\
starty = (starty + incyy) & srcfixheight; \
@@ -1143,7 +1122,7 @@ do { \
for (cury = cliprect.min_y; cury <= cliprect.max_y; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, cliprect.min_x); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, cliprect.min_x); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, cliprect.min_x); \
const PIXEL_TYPE *srcptr; \
INT32 srcx = startx; \
INT32 srcy = starty; \
@@ -1156,7 +1135,7 @@ do { \
{ \
if ((UINT32)srcx < srcfixwidth && (UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[0], priptr[0], srcptr[0]); \
} \
srcx += incxx; \
@@ -1164,7 +1143,7 @@ do { \
\
if ((UINT32)srcx < srcfixwidth && (UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[1], priptr[1], srcptr[0]); \
} \
srcx += incxx; \
@@ -1172,7 +1151,7 @@ do { \
\
if ((UINT32)srcx < srcfixwidth && (UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[2], priptr[2], srcptr[0]); \
} \
srcx += incxx; \
@@ -1180,7 +1159,7 @@ do { \
\
if ((UINT32)srcx < srcfixwidth && (UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[3], priptr[3], srcptr[0]); \
} \
srcx += incxx; \
@@ -1195,7 +1174,7 @@ do { \
{ \
if ((UINT32)srcx < srcfixwidth && (UINT32)srcy < srcfixheight) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[0], priptr[0], srcptr[0]); \
} \
srcx += incxx; \
@@ -1219,7 +1198,7 @@ do { \
for (cury = cliprect.min_y; cury <= cliprect.max_y; cury++) \
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, cury, cliprect.min_x); \
- PIXEL_TYPE *destptr = &dest.pix<PIXEL_TYPE>(cury, cliprect.min_x); \
+ PIXEL_TYPE *destptr = &dest.pixt<PIXEL_TYPE>(cury, cliprect.min_x); \
const PIXEL_TYPE *srcptr; \
INT32 srcx = startx; \
INT32 srcy = starty; \
@@ -1230,22 +1209,22 @@ do { \
/* iterate over unrolled blocks of 4 */ \
for (curx = 0; curx < numblocks; curx++) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[0], priptr[0], srcptr[0]); \
srcx = (srcx + incxx) & srcfixwidth; \
srcy = (srcy + incxy) & srcfixheight; \
\
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[1], priptr[1], srcptr[0]); \
srcx = (srcx + incxx) & srcfixwidth; \
srcy = (srcy + incxy) & srcfixheight; \
\
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[2], priptr[2], srcptr[0]); \
srcx = (srcx + incxx) & srcfixwidth; \
srcy = (srcy + incxy) & srcfixheight; \
\
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[3], priptr[3], srcptr[0]); \
srcx = (srcx + incxx) & srcfixwidth; \
srcy = (srcy + incxy) & srcfixheight; \
@@ -1257,7 +1236,7 @@ do { \
/* iterate over leftover pixels */ \
for (curx = 0; curx < leftovers; curx++) \
{ \
- srcptr = &src.pix<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
+ srcptr = &src.pixt<PIXEL_TYPE>(srcy >> 16, srcx >> 16); \
PIXEL_OP(destptr[0], priptr[0], srcptr[0]); \
srcx = (srcx + incxx) & srcfixwidth; \
srcy = (srcy + incxy) & srcfixheight; \
@@ -1299,7 +1278,7 @@ do { \
\
{ \
PRIORITY_TYPE *priptr = PRIORITY_ADDR(priority, PRIORITY_TYPE, desty, destx); \
- PIXEL_TYPE *destptr = &bitmap.pix<PIXEL_TYPE>(desty, destx); \
+ PIXEL_TYPE *destptr = &bitmap.pixt<PIXEL_TYPE>(desty, destx); \
\
/* iterate over unrolled blocks of 4 */ \
while (length >= 4) \
@@ -1352,7 +1331,7 @@ do { \
assert(destptr != NULL); \
\
{ \
- const PIXEL_TYPE *srcptr = &bitmap.pix<PIXEL_TYPE>(srcy, srcx); \
+ const PIXEL_TYPE *srcptr = &bitmap.pixt<PIXEL_TYPE>(srcy, srcx); \
\
/* iterate over unrolled blocks of 4 */ \
while (length >= 4) \
diff --git a/src/emu/drivers/empty.c b/src/emu/drivers/empty.c
index d89e8b84e43..4367a23f441 100644
--- a/src/emu/drivers/empty.c
+++ b/src/emu/drivers/empty.c
@@ -28,6 +28,13 @@ static MACHINE_START( ___empty )
}
+static SCREEN_UPDATE_RGB32( empty )
+{
+ bitmap.fill(RGB_BLACK);
+ return 0;
+}
+
+
/*************************************
*
@@ -41,7 +48,7 @@ static MACHINE_CONFIG_START( ___empty, driver_device )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_STATIC(empty)
MCFG_SCREEN_SIZE(640,480)
MCFG_SCREEN_VISIBLE_AREA(0,639, 0,479)
MCFG_SCREEN_REFRESH_RATE(30)
diff --git a/src/emu/emu.mak b/src/emu/emu.mak
index 6a481c36a52..d8951667366 100644
--- a/src/emu/emu.mak
+++ b/src/emu/emu.mak
@@ -198,7 +198,8 @@ EMUMACHINEOBJS = \
$(EMUMACHINE)/k053252.o \
$(EMUMACHINE)/k056230.o \
$(EMUMACHINE)/latch8.o \
- $(EMUMACHINE)/ldcore.o \
+ $(EMUMACHINE)/laserdsc.o \
+ $(EMUMACHINE)/ldstub.o \
$(EMUMACHINE)/ldpr8210.o \
$(EMUMACHINE)/ldv1000.o \
$(EMUMACHINE)/ldvp931.o \
@@ -345,7 +346,6 @@ $(LIBSOUND): $(SOUNDOBJS)
$(EMUOBJ)/rendfont.o: $(EMUOBJ)/uismall.fh
$(EMUOBJ)/video.o: $(EMUSRC)/rendersw.c
-$(EMUVIDEO)/v9938.o: $(EMUSRC)/video/v9938mod.c
$(EMUMACHINE)/s3c2400.o: $(EMUSRC)/machine/s3c24xx.c
$(EMUMACHINE)/s3c2410.o: $(EMUSRC)/machine/s3c24xx.c
diff --git a/src/emu/emupal.c b/src/emu/emupal.c
index c92566d9a04..7160fcf5790 100644
--- a/src/emu/emupal.c
+++ b/src/emu/emupal.c
@@ -119,8 +119,7 @@ void palette_init(running_machine &machine)
/* determine the color mode */
switch (format)
{
- case BITMAP_FORMAT_INDEXED16:
- case BITMAP_FORMAT_RGB15:
+ case BITMAP_FORMAT_IND16:
case BITMAP_FORMAT_RGB32:
/* indexed and RGB modes are fine for everything */
break;
@@ -268,7 +267,7 @@ void palette_set_shadow_dRGB32(running_machine &machine, int mode, int dr, int d
int i;
/* only applies to RGB direct modes */
- assert(palette->format != BITMAP_FORMAT_INDEXED16);
+ assert(palette->format != BITMAP_FORMAT_IND16);
assert(stable->base != NULL);
/* clamp the deltas (why?) */
@@ -614,7 +613,7 @@ static void allocate_palette(running_machine &machine, palette_private *palette)
switch (palette->format)
{
/* 16-bit paletteized case */
- case BITMAP_FORMAT_INDEXED16:
+ case BITMAP_FORMAT_IND16:
palette->black_pen = palette_get_black_entry(machine.palette);
palette->white_pen = palette_get_white_entry(machine.palette);
if (palette->black_pen >= 65536)
@@ -623,12 +622,6 @@ static void allocate_palette(running_machine &machine, palette_private *palette)
palette->white_pen = 65536;
break;
- /* 15-bit direct case */
- case BITMAP_FORMAT_RGB15:
- palette->black_pen = rgb_to_rgb15(MAKE_RGB(0x00,0x00,0x00));
- palette->white_pen = rgb_to_rgb15(MAKE_RGB(0xff,0xff,0xff));
- break;
-
/* 32-bit direct case */
case BITMAP_FORMAT_RGB32:
palette->black_pen = MAKE_RGB(0x00,0x00,0x00);
@@ -657,17 +650,13 @@ static void allocate_color_tables(running_machine &machine, palette_private *pal
/* allocate memory for the pen table */
switch (palette->format)
{
- case BITMAP_FORMAT_INDEXED16:
+ case BITMAP_FORMAT_IND16:
/* create a dummy 1:1 mapping */
machine.pens = pentable = auto_alloc_array(machine, pen_t, total_colors + 2);
for (i = 0; i < total_colors + 2; i++)
pentable[i] = i;
break;
- case BITMAP_FORMAT_RGB15:
- machine.pens = palette_entry_list_adjusted_rgb15(machine.palette);
- break;
-
case BITMAP_FORMAT_RGB32:
machine.pens = palette_entry_list_adjusted(machine.palette);
break;
@@ -693,7 +682,7 @@ static void allocate_shadow_tables(running_machine &machine, palette_private *pa
int i;
/* palettized mode gets a single 64k table in slots 0 and 2 */
- if (palette->format == BITMAP_FORMAT_INDEXED16)
+ if (palette->format == BITMAP_FORMAT_IND16)
{
palette->shadow_table[0].base = palette->shadow_table[2].base = table;
for (i = 0; i < 65536; i++)
@@ -716,7 +705,7 @@ static void allocate_shadow_tables(running_machine &machine, palette_private *pa
int i;
/* palettized mode gets a single 64k table in slots 1 and 3 */
- if (palette->format == BITMAP_FORMAT_INDEXED16)
+ if (palette->format == BITMAP_FORMAT_IND16)
{
palette->shadow_table[1].base = palette->shadow_table[3].base = table;
for (i = 0; i < 65536; i++)
@@ -750,7 +739,7 @@ static void configure_rgb_shadows(running_machine &machine, int mode, float fact
int i;
/* only applies to RGB direct modes */
- assert(palette->format != BITMAP_FORMAT_INDEXED16);
+ assert(palette->format != BITMAP_FORMAT_IND16);
assert(stable->base != NULL);
/* regenerate the table */
diff --git a/src/emu/machine.c b/src/emu/machine.c
index a4a65cbc0e2..3e6df66a619 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -1110,19 +1110,6 @@ void driver_device::video_reset()
//-------------------------------------------------
-// video_update - default implementation which
-// calls to the legacy video_update function
-//-------------------------------------------------
-
-bool driver_device::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
-{
- // if nothing provided, just copy the screen's generic bitmap
- copybitmap(bitmap, screen.default_bitmap(), 0, 0, 0, 0, cliprect);
- return 0;
-}
-
-
-//-------------------------------------------------
// device_rom_region - return a pointer to the
// game's ROMs
//-------------------------------------------------
diff --git a/src/emu/machine.h b/src/emu/machine.h
index ec6b02f140b..3199f78ed6b 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -160,6 +160,10 @@ const int DEBUG_FLAG_OSD_ENABLED = 0x00001000; // The OSD debugger is enabled
#define auto_free(m, v) pool_free(static_cast<running_machine &>(m).respool(), v)
#define auto_bitmap_alloc(m, w, h, f) auto_alloc(m, bitmap_t(w, h, f))
+#define auto_bitmap_ind8_alloc(m, w, h) auto_alloc(m, bitmap_ind8(w, h))
+#define auto_bitmap_ind16_alloc(m, w, h) auto_alloc(m, bitmap_ind16(w, h))
+#define auto_bitmap_ind32_alloc(m, w, h) auto_alloc(m, bitmap_ind32(w, h))
+#define auto_bitmap_rgb32_alloc(m, w, h) auto_alloc(m, bitmap_rgb32(w, h))
#define auto_strdup(m, s) strcpy(auto_alloc_array(m, char, strlen(s) + 1), s)
@@ -414,7 +418,7 @@ public:
const pen_t * pens; // remapped palette pen numbers
colortable_t * colortable; // global colortable for remapping
pen_t * shadow_table; // table for looking up a shadowed pen
- bitmap_t priority_bitmap; // priority bitmap
+ bitmap_ind8 priority_bitmap; // priority bitmap
// debugger-related information
UINT32 debug_flags; // the current debug flags
@@ -558,9 +562,6 @@ public:
static void static_set_callback(device_t &device, callback_type type, legacy_callback_func callback);
static void static_set_palette_init(device_t &device, palette_init_func callback);
- // additional video helpers
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
-
// generic helpers
// watchdog read/write handlers
diff --git a/src/emu/machine/laserdsc.c b/src/emu/machine/laserdsc.c
new file mode 100644
index 00000000000..d588008984a
--- /dev/null
+++ b/src/emu/machine/laserdsc.c
@@ -0,0 +1,1229 @@
+/*************************************************************************
+
+ laserdsc.c
+
+ Core laserdisc player implementation.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#include "emu.h"
+#include "laserdsc.h"
+#include "avcomp.h"
+#include "vbiparse.h"
+#include "config.h"
+#include "render.h"
+
+
+
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
+
+#define LOG_SLIDER 0
+
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+// these specs code from IEC 60857, for NTSC players
+const UINT32 LEAD_IN_MIN_RADIUS_IN_UM = 53500; // 53.5 mm
+const UINT32 PROGRAM_MIN_RADIUS_IN_UM = 55000; // 55 mm
+const UINT32 PROGRAM_MAX_RADIUS_IN_UM = 145000; // 145 mm
+const UINT32 LEAD_OUT_MIN_SIZE_IN_UM = 2000; // 2 mm
+
+// the track pitch is defined as a range; we pick a nominal pitch
+// that ensures we can fit 54,000 tracks
+const UINT32 MIN_TRACK_PITCH_IN_NM = 1400; // 1.4 um
+const UINT32 MAX_TRACK_PITCH_IN_NM = 2000; // 2 um
+const UINT32 NOMINAL_TRACK_PITCH_IN_NM = (PROGRAM_MAX_RADIUS_IN_UM - PROGRAM_MIN_RADIUS_IN_UM) * 1000 / 54000;
+
+// we simulate extra lead-in and lead-out tracks
+const UINT32 VIRTUAL_LEAD_IN_TRACKS = (PROGRAM_MIN_RADIUS_IN_UM - LEAD_IN_MIN_RADIUS_IN_UM) * 1000 / NOMINAL_TRACK_PITCH_IN_NM;
+const UINT32 MAX_TOTAL_TRACKS = 54000;
+const UINT32 VIRTUAL_LEAD_OUT_TRACKS = LEAD_OUT_MIN_SIZE_IN_UM * 1000 / NOMINAL_TRACK_PITCH_IN_NM;
+
+
+
+//**************************************************************************
+// CORE IMPLEMENTATION
+//**************************************************************************
+
+//-------------------------------------------------
+// laserdisc_device - constructor
+//-------------------------------------------------
+
+laserdisc_device::laserdisc_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, type, name, shortname, tag, owner, clock),
+ device_sound_interface(mconfig, *this),
+ m_screen_name(NULL),
+ m_overwidth(0),
+ m_overheight(0),
+ m_overclip(0, -1, 0, -1),
+ m_overupdate_device(NULL),
+ m_disc(NULL),
+ m_vbidata(NULL),
+ m_width(0),
+ m_height(0),
+ m_fps_times_1million(0),
+ m_samplerate(0),
+ m_readresult(CHDERR_NONE),
+ m_chdtracks(0),
+ m_audiosquelch(0),
+ m_videosquelch(0),
+ m_fieldnum(0),
+ m_curtrack(0),
+ m_maxtrack(0),
+ m_attospertrack(0),
+ m_sliderupdate(attotime::zero),
+ m_videoindex(0),
+ m_stream(NULL),
+ m_audiobufsize(0),
+ m_audiobufin(0),
+ m_audiobufout(0),
+ m_audiocursamples(0),
+ m_audiomaxsamples(0),
+ m_videoenable(false),
+ m_videotex(NULL),
+ m_videopalette(NULL),
+ m_overenable(false),
+ m_overindex(0),
+ m_overtex(NULL)
+{
+ // initialize overlay_config
+ m_orig_config.m_overposx = m_orig_config.m_overposy = 0.0f;
+ m_orig_config.m_overscalex = m_orig_config.m_overscaley = 1.0f;
+ *static_cast<laserdisc_overlay_config *>(this) = m_orig_config;
+}
+
+
+//-------------------------------------------------
+// ~laserdisc_device - destructor
+//-------------------------------------------------
+
+laserdisc_device::~laserdisc_device()
+{
+}
+
+
+
+//**************************************************************************
+// PUBLIC INTERFACES
+//**************************************************************************
+
+//-------------------------------------------------
+// get_field_code - return raw field information
+// read from the disc
+//-------------------------------------------------
+
+UINT32 laserdisc_device::get_field_code(laserdisc_field_code code, bool zero_if_squelched)
+{
+ // return nothing if the video is off (external devices can't sense)
+ if (zero_if_squelched && m_videosquelch)
+ return 0;
+
+ switch (code)
+ {
+ case LASERDISC_CODE_WHITE_FLAG:
+ return m_metadata[m_fieldnum].white;
+
+ case LASERDISC_CODE_LINE16:
+ return m_metadata[m_fieldnum].line16;
+
+ case LASERDISC_CODE_LINE17:
+ return m_metadata[m_fieldnum].line17;
+
+ case LASERDISC_CODE_LINE18:
+ return m_metadata[m_fieldnum].line18;
+
+ case LASERDISC_CODE_LINE1718:
+ return m_metadata[m_fieldnum].line1718;
+ }
+ return 0;
+}
+
+
+//-------------------------------------------------
+// screen_update - handle updating the screen
+//-------------------------------------------------
+
+UINT32 laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ // handle the overlay if present
+ screen_bitmap &overbitmap = m_overbitmap[m_overindex];
+ if (overbitmap.valid() && !m_overupdate.isnull())
+ {
+ // scale the cliprect to the overlay size
+ rectangle clip(m_overclip);
+ clip.min_y = cliprect.min_y * overbitmap.height() / bitmap.height();
+ if (cliprect.min_y == screen.visible_area().min_y)
+ clip.min_y = MIN(clip.min_y, m_overclip.min_y);
+ clip.max_y = (cliprect.max_y + 1) * overbitmap.height() / bitmap.height() - 1;
+
+ // call the update callback
+ switch (m_overupdate.format())
+ {
+ case BITMAP_FORMAT_IND16: m_overupdate(screen, overbitmap.as_ind16(), clip); break;
+ case BITMAP_FORMAT_RGB32: m_overupdate(screen, overbitmap.as_rgb32(), clip); break;
+ default: throw emu_fatalerror("Invalid bitmap format!");
+ }
+ }
+
+ // if this is the last update, do the rendering
+ if (cliprect.max_y == screen.visible_area().max_y)
+ {
+ // update the texture with the overlay contents
+ if (overbitmap.valid())
+ m_overtex->set_bitmap(overbitmap, m_overclip, overbitmap.texformat());
+
+ // get the laserdisc video
+ bitmap_yuy16 &vidbitmap = get_video();
+ m_videotex->set_bitmap(vidbitmap, vidbitmap.cliprect(), TEXFORMAT_YUY16);
+
+ // reset the screen contents
+ screen.container().empty();
+
+ // add the video texture
+ if (m_videoenable)
+ screen.container().add_quad(0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), m_videotex, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
+
+ // add the overlay
+ if (m_overenable && overbitmap.valid())
+ {
+ float x0 = 0.5f - 0.5f * m_overscalex + m_overposx;
+ float y0 = 0.5f - 0.5f * m_overscaley + m_overposy;
+ float x1 = x0 + m_overscalex;
+ float y1 = y0 + m_overscaley;
+ screen.container().add_quad(x0, y0, x1, y1, MAKE_ARGB(0xff,0xff,0xff,0xff), m_overtex, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1));
+ }
+
+ // swap to the next bitmap
+ m_overindex = (m_overindex + 1) % ARRAY_LENGTH(m_overbitmap);
+ }
+ return 0;
+}
+
+
+//-------------------------------------------------
+// static_set_screen - set the screen name
+//-------------------------------------------------
+
+void laserdisc_device::static_set_screen(device_t &device, const char *screen)
+{
+ downcast<laserdisc_device &>(device).m_screen_name = screen;
+}
+
+
+//-------------------------------------------------
+// static_set_get_disc - set the get disc
+// delegate
+//-------------------------------------------------
+
+void laserdisc_device::static_set_get_disc(device_t &device, laserdisc_get_disc_delegate callback)
+{
+ downcast<laserdisc_device &>(device).m_getdisc_callback = callback;
+}
+
+
+//-------------------------------------------------
+// static_set_get_disc - set the audio interceptor
+// delegate
+//-------------------------------------------------
+
+void laserdisc_device::static_set_audio(device_t &device, laserdisc_audio_delegate callback)
+{
+ downcast<laserdisc_device &>(device).m_audio_callback = callback;
+}
+
+
+//-------------------------------------------------
+// static_set_overlay - set the overlay parameters
+//-------------------------------------------------
+
+void laserdisc_device::static_set_overlay(device_t &device, UINT32 width, UINT32 height, screen_update_delegate update, const char *update_device)
+{
+ laserdisc_device &ld = downcast<laserdisc_device &>(device);
+ ld.m_overwidth = width;
+ ld.m_overheight = height;
+ ld.m_overclip.set(0, width - 1, 0, height - 1);
+ ld.m_overupdate = update;
+ ld.m_overupdate_device = update_device;
+}
+
+
+//-------------------------------------------------
+// static_set_overlay - set the overlay visible
+// subregion
+//-------------------------------------------------
+
+void laserdisc_device::static_set_overlay_clip(device_t &device, INT32 minx, INT32 maxx, INT32 miny, INT32 maxy)
+{
+ downcast<laserdisc_device &>(device).m_overclip.set(minx, maxx, miny, maxy);
+}
+
+
+//-------------------------------------------------
+// static_set_overlay_position - set the overlay
+// position parameters
+//-------------------------------------------------
+
+void laserdisc_device::static_set_overlay_position(device_t &device, float posx, float posy)
+{
+ laserdisc_device &ld = downcast<laserdisc_device &>(device);
+ ld.m_orig_config.m_overposx = ld.m_overposx = posx;
+ ld.m_orig_config.m_overposy = ld.m_overposy = posy;
+}
+
+
+//-------------------------------------------------
+// static_set_overlay_scale - set the overlay
+// scale parameters
+//-------------------------------------------------
+
+void laserdisc_device::static_set_overlay_scale(device_t &device, float scalex, float scaley)
+{
+ laserdisc_device &ld = downcast<laserdisc_device &>(device);
+ ld.m_orig_config.m_overscalex = ld.m_overscalex = scalex;
+ ld.m_orig_config.m_overscaley = ld.m_overscaley = scaley;
+
+}
+
+
+//**************************************************************************
+// DEVICE INTERFACE
+//**************************************************************************
+
+//-------------------------------------------------
+// device start callback
+//-------------------------------------------------
+
+void laserdisc_device::device_start()
+{
+ // ensure that our screen is started first
+ m_screen = machine().device<screen_device>(m_screen_name);
+ assert(m_screen != NULL);
+ if (!m_screen->started())
+ throw device_missing_dependencies();
+
+ // initialize the various pieces
+ init_disc();
+ init_video();
+ init_audio();
+
+ // register callbacks
+ config_register(machine(), "laserdisc", config_saveload_delegate(FUNC(laserdisc_device::config_load), this), config_saveload_delegate(FUNC(laserdisc_device::config_save), this));
+}
+
+
+//-------------------------------------------------
+// device stop callback
+//-------------------------------------------------
+
+void laserdisc_device::device_stop()
+{
+ // make sure all async operations have completed
+ if (m_disc != NULL)
+ chd_async_complete(m_disc);
+
+ // free any textures and palettes
+ if (m_videotex != NULL)
+ machine().render().texture_free(m_videotex);
+ if (m_videopalette != NULL)
+ palette_deref(m_videopalette);
+ if (m_overtex != NULL)
+ machine().render().texture_free(m_overtex);
+}
+
+
+//-------------------------------------------------
+// device reset callback
+//-------------------------------------------------
+
+void laserdisc_device::device_reset()
+{
+ // attempt to wire up the audio
+ m_stream->set_sample_rate(m_samplerate);
+
+ // set up the general ld
+ m_audiosquelch = 3;
+ m_videosquelch = 1;
+ m_fieldnum = 0;
+ m_curtrack = 1;
+ m_attospertrack = 0;
+ m_sliderupdate = machine().time();
+}
+
+
+//-------------------------------------------------
+// device_timer - handle timers set by this
+// device
+//-------------------------------------------------
+
+void laserdisc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TID_VBI_FETCH:
+ {
+ // wait for previous read and decode to finish
+ process_track_data();
+
+ // update current track based on slider speed
+ update_slider_pos();
+
+ // update the state
+ add_and_clamp_track(player_update(m_metadata[m_fieldnum], m_fieldnum, machine().time()));
+
+ // flush any audio before we read more
+ m_stream->update();
+
+ // start reading the track data for the next round
+ m_fieldnum ^= 1;
+ read_track_data();
+ break;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// sound_stream_update - audio streamer for
+// laserdiscs
+//-------------------------------------------------
+
+void laserdisc_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+{
+ // compute AND values based on the squelch
+ INT16 leftand = (m_audiosquelch & 1) ? 0x0000 : 0xffff;
+ INT16 rightand = (m_audiosquelch & 2) ? 0x0000 : 0xffff;
+
+ // see if we have enough samples to fill the buffer; if not, drop out
+ int samples_avail = m_audiobufin - m_audiobufout;
+ if (samples_avail < 0)
+ samples_avail += m_audiobufsize;
+
+ // if no attached ld, just clear the buffers
+ stream_sample_t *dst0 = outputs[0];
+ stream_sample_t *dst1 = outputs[1];
+ if (samples_avail < samples)
+ {
+ memset(dst0, 0, samples * sizeof(dst0[0]));
+ memset(dst1, 0, samples * sizeof(dst1[0]));
+ }
+
+ // otherwise, stream from our buffer
+ else
+ {
+ INT16 *buffer0 = m_audiobuffer[0];
+ INT16 *buffer1 = m_audiobuffer[1];
+ int sampout = m_audiobufout;
+
+ // copy samples, clearing behind us as we go
+ while (sampout != m_audiobufin && samples-- > 0)
+ {
+ *dst0++ = buffer0[sampout] & leftand;
+ *dst1++ = buffer1[sampout] & rightand;
+ buffer0[sampout] = 0;
+ buffer1[sampout] = 0;
+ sampout++;
+ if (sampout >= m_audiobufsize)
+ sampout = 0;
+ }
+ m_audiobufout = sampout;
+
+ // clear out the rest of the buffer
+ if (samples > 0)
+ {
+ sampout = (m_audiobufout == 0) ? m_audiobufsize - 1 : m_audiobufout - 1;
+ stream_sample_t fill0 = buffer0[sampout] & leftand;
+ stream_sample_t fill1 = buffer1[sampout] & rightand;
+
+ while (samples-- > 0)
+ {
+ *dst0++ = fill0;
+ *dst1++ = fill1;
+ }
+ }
+ }
+}
+
+
+//**************************************************************************
+// SUBCLASS HELPERS
+//**************************************************************************
+
+//-------------------------------------------------
+// set_slider_speed - dynamically change the
+// slider speed
+//-------------------------------------------------
+
+void laserdisc_device::set_slider_speed(INT32 tracks_per_vsync)
+{
+ // update to the current time
+ update_slider_pos();
+
+ // if 0, set the time to 0
+ attotime vsyncperiod = m_screen->frame_period();
+ if (tracks_per_vsync == 0)
+ m_attospertrack = 0;
+
+ // positive values store positive times
+ else if (tracks_per_vsync > 0)
+ m_attospertrack = (vsyncperiod / tracks_per_vsync).as_attoseconds();
+
+ // negative values store negative times
+ else
+ m_attospertrack = -(vsyncperiod / -tracks_per_vsync).as_attoseconds();
+
+ if (LOG_SLIDER)
+ printf("Slider speed = %d\n", tracks_per_vsync);
+}
+
+
+//-------------------------------------------------
+// advance_slider - advance the slider by
+// a certain number of tracks
+//-------------------------------------------------
+
+void laserdisc_device::advance_slider(INT32 numtracks)
+{
+ // first update to the current time
+ update_slider_pos();
+
+ // then update the track position
+ add_and_clamp_track(numtracks);
+ if (LOG_SLIDER)
+ printf("Advance by %d\n", numtracks);
+}
+
+
+//-------------------------------------------------
+// get_slider_position - get the current
+// slider position
+//-------------------------------------------------
+
+laserdisc_device::slider_position laserdisc_device::get_slider_position()
+{
+ // update the slider position first
+ update_slider_pos();
+
+ // return the status
+ if (m_curtrack == 1)
+ return SLIDER_MINIMUM;
+ else if (m_curtrack < VIRTUAL_LEAD_IN_TRACKS)
+ return SLIDER_VIRTUAL_LEADIN;
+ else if (m_curtrack < VIRTUAL_LEAD_IN_TRACKS + m_chdtracks)
+ return SLIDER_CHD;
+ else if (m_curtrack < VIRTUAL_LEAD_IN_TRACKS + MAX_TOTAL_TRACKS)
+ return SLIDER_OUTSIDE_CHD;
+ else if (m_curtrack < m_maxtrack - 1)
+ return SLIDER_VIRTUAL_LEADOUT;
+ else
+ return SLIDER_MAXIMUM;
+}
+
+
+//-------------------------------------------------
+// generic_update - generically update in a way
+// that works for most situations
+//-------------------------------------------------
+
+INT32 laserdisc_device::generic_update(const vbi_metadata &vbi, int fieldnum, attotime curtime, player_state_info &newstate)
+{
+ INT32 advanceby = 0;
+ int frame;
+
+ // start by assuming the state doesn't change
+ newstate = m_player_state;
+
+ // handle things based on the state
+ switch (m_player_state.m_state)
+ {
+ case LDSTATE_EJECTING:
+ // when time expires, switch to the ejected state
+ if (curtime >= m_player_state.m_endtime)
+ newstate.m_state = LDSTATE_EJECTED;
+ break;
+
+ case LDSTATE_EJECTED:
+ // do nothing
+ break;
+
+ case LDSTATE_PARKED:
+ // do nothing
+ break;
+
+ case LDSTATE_LOADING:
+ // when time expires, switch to the spinup state
+ if (curtime >= m_player_state.m_endtime)
+ newstate.m_state = LDSTATE_SPINUP;
+ advanceby = -GENERIC_SEARCH_SPEED;
+ break;
+
+ case LDSTATE_SPINUP:
+ // when time expires, switch to the playing state
+ if (curtime >= m_player_state.m_endtime)
+ newstate.m_state = LDSTATE_PLAYING;
+ advanceby = -GENERIC_SEARCH_SPEED;
+ break;
+
+ case LDSTATE_PAUSING:
+ // if he hit the start of a frame, switch to paused state
+ if (is_start_of_frame(vbi))
+ {
+ newstate.m_state = LDSTATE_PAUSED;
+ newstate.m_param = fieldnum;
+ }
+
+ // else advance until we hit it
+ else if (fieldnum == 1)
+ advanceby = 1;
+ break;
+
+ case LDSTATE_PAUSED:
+ // if we paused on field 1, we must flip back and forth
+ if (m_player_state.m_param == 1)
+ advanceby = (fieldnum == 1) ? 1 : -1;
+ break;
+
+ case LDSTATE_PLAYING:
+ // if we hit the target frame, switch to the paused state
+ if (m_player_state.m_param > 0 && is_start_of_frame(vbi) && frame_from_metadata(vbi) == m_player_state.m_param)
+ {
+ newstate.m_state = LDSTATE_PAUSED;
+ newstate.m_param = fieldnum;
+ }
+
+ // otherwise after the second field of each frame
+ else if (fieldnum == 1)
+ advanceby = 1;
+ break;
+
+ case LDSTATE_PLAYING_SLOW_REVERSE:
+ // after the second field of each frame, see if we need to advance
+ if (fieldnum == 1 && ++m_player_state.m_substate > m_player_state.m_param)
+ {
+ advanceby = -1;
+ m_player_state.m_substate = 0;
+ }
+ break;
+
+ case LDSTATE_PLAYING_SLOW_FORWARD:
+ // after the second field of each frame, see if we need to advance
+ if (fieldnum == 1 && ++m_player_state.m_substate > m_player_state.m_param)
+ {
+ advanceby = 1;
+ m_player_state.m_substate = 0;
+ }
+ break;
+
+ case LDSTATE_PLAYING_FAST_REVERSE:
+ // advance after the second field of each frame
+ if (fieldnum == 1)
+ advanceby = -m_player_state.m_param;
+ break;
+
+ case LDSTATE_PLAYING_FAST_FORWARD:
+ // advance after the second field of each frame
+ if (fieldnum == 1)
+ advanceby = m_player_state.m_param;
+ break;
+
+ case LDSTATE_SCANNING:
+ // advance after the second field of each frame
+ if (fieldnum == 1)
+ advanceby = m_player_state.m_param >> 8;
+
+ // after we run out of vsyncs, revert to the saved state
+ if (++m_player_state.m_substate >= (m_player_state.m_param & 0xff))
+ newstate = m_saved_state;
+ break;
+
+ case LDSTATE_STEPPING_REVERSE:
+ // wait for the first field of the frame and then leap backwards
+ if (is_start_of_frame(vbi))
+ {
+ advanceby = (fieldnum == 1) ? -1 : -2;
+ newstate.m_state = LDSTATE_PAUSING;
+ }
+ break;
+
+ case LDSTATE_STEPPING_FORWARD:
+ // wait for the first field of the frame and then switch to pausing state
+ if (is_start_of_frame(vbi))
+ newstate.m_state = LDSTATE_PAUSING;
+ break;
+
+ case LDSTATE_SEEKING:
+ // if we're in the final state, look for a matching frame and pause there
+ frame = frame_from_metadata(vbi);
+ if (m_player_state.m_substate == 1 && is_start_of_frame(vbi) && frame == m_player_state.m_param)
+ {
+ newstate.m_state = LDSTATE_PAUSED;
+ newstate.m_param = fieldnum;
+ }
+
+ // otherwise, if we got frame data from the VBI, update our seeking logic
+ else if (m_player_state.m_substate == 0 && frame != FRAME_NOT_PRESENT)
+ {
+ INT32 delta = (m_player_state.m_param - 2) - frame;
+
+ // if we're within a couple of frames, just play until we hit it
+ if (delta >= 0 && delta <= 2)
+ m_player_state.m_substate++;
+
+ // otherwise, compute the delta assuming 1:1 track to frame; this will correct eventually
+ else
+ {
+ if (delta < 0)
+ delta--;
+ advanceby = delta;
+ advanceby = MIN(advanceby, GENERIC_SEARCH_SPEED);
+ advanceby = MAX(advanceby, -GENERIC_SEARCH_SPEED);
+ }
+ }
+
+ // otherwise, keep advancing until we know what's up
+ else
+ {
+ if (fieldnum == 1)
+ advanceby = 1;
+ }
+ break;
+
+ default:
+ // do nothing
+ break;
+ }
+
+ return advanceby;
+}
+
+
+//**************************************************************************
+// INITIALIZATION
+//**************************************************************************
+
+//-------------------------------------------------
+// init_disc - initialize the state of the
+// CHD disc
+//-------------------------------------------------
+
+void laserdisc_device::init_disc()
+{
+ // get a handle to the disc to play
+ if (!m_getdisc_callback.isnull())
+ m_disc = m_getdisc_callback(*this);
+ else
+ m_disc = get_disk_handle(machine(), tag());
+
+ // set default parameters
+ m_width = 720;
+ m_height = 240;
+ m_fps_times_1million = 59940000;
+ m_samplerate = 48000;
+
+ // get the disc metadata and extract the ld
+ m_chdtracks = 0;
+ m_maxtrack = VIRTUAL_LEAD_IN_TRACKS + MAX_TOTAL_TRACKS + VIRTUAL_LEAD_OUT_TRACKS;
+ if (m_disc != NULL)
+ {
+ // require the A/V codec
+ if (chd_get_header(m_disc)->compression != CHDCOMPRESSION_AV)
+ throw emu_fatalerror("Laserdisc video must be compressed with the A/V codec!");
+
+ // read the metadata
+ char metadata[256];
+ chd_error err = chd_get_metadata(m_disc, AV_METADATA_TAG, 0, metadata, sizeof(metadata), NULL, NULL, NULL);
+ if (err != CHDERR_NONE)
+ throw emu_fatalerror("Non-A/V CHD file specified");
+
+ // extract the metadata
+ int fps, fpsfrac, interlaced, channels;
+ if (sscanf(metadata, AV_METADATA_FORMAT, &fps, &fpsfrac, &m_width, &m_height, &interlaced, &channels, &m_samplerate) != 7)
+ throw emu_fatalerror("Invalid metadata in CHD file");
+ else
+ m_fps_times_1million = fps * 1000000 + fpsfrac;
+
+ // require interlaced video
+ if (!interlaced)
+ throw emu_fatalerror("Laserdisc video must be interlaced!");
+
+ // determine the maximum track and allocate a frame buffer
+ UINT32 totalhunks = chd_get_header(m_disc)->totalhunks;
+ m_chdtracks = totalhunks / 2;
+
+ // allocate memory for the precomputed per-frame metadata
+ m_vbidata = auto_alloc_array(machine(), UINT8, totalhunks * VBI_PACKED_BYTES);
+ UINT32 vbilength;
+ err = chd_get_metadata(m_disc, AV_LD_METADATA_TAG, 0, m_vbidata, totalhunks * VBI_PACKED_BYTES, &vbilength, NULL, NULL);
+ if (err != CHDERR_NONE || vbilength != totalhunks * VBI_PACKED_BYTES)
+ throw emu_fatalerror("Precomputed VBI metadata missing or incorrect size");
+ }
+ m_maxtrack = MAX(m_maxtrack, VIRTUAL_LEAD_IN_TRACKS + VIRTUAL_LEAD_OUT_TRACKS + m_chdtracks);
+}
+
+
+//-------------------------------------------------
+// init_video - initialize the state of the
+// video rendering
+//-------------------------------------------------
+
+void laserdisc_device::init_video()
+{
+ // register for VBLANK callbacks
+ m_screen->register_vblank_callback(vblank_state_delegate(FUNC(laserdisc_device::vblank_state_changed), this));
+
+ // allocate palette for applying brightness/contrast/gamma
+ m_videopalette = palette_alloc(256, 1);
+ if (m_videopalette == NULL)
+ throw emu_fatalerror("Out of memory allocating video palette");
+ for (int index = 0; index < 256; index++)
+ palette_entry_set_color(m_videopalette, index, MAKE_RGB(index, index, index));
+
+ // allocate video frames
+ for (int index = 0; index < ARRAY_LENGTH(m_frame); index++)
+ {
+ // first allocate a YUY16 bitmap at 2x the height
+ frame_data &frame = m_frame[index];
+ frame.m_bitmap.allocate(m_width, m_height * 2);
+ frame.m_bitmap.set_palette(m_videopalette);
+ fillbitmap_yuy16(frame.m_bitmap, 40, 109, 240);
+
+ // make a copy of the bitmap that clips out the VBI and horizontal blanking areas
+ frame.m_visbitmap.wrap(&frame.m_bitmap.pix16(44, frame.m_bitmap.width() * 8 / 720),
+ frame.m_bitmap.width() - 2 * frame.m_bitmap.width() * 8 / 720,
+ frame.m_bitmap.height() - 44,
+ frame.m_bitmap.rowpixels());
+ frame.m_visbitmap.set_palette(m_videopalette);
+ }
+
+ // allocate an empty frame of the same size
+ m_emptyframe.allocate(m_width, m_height * 2);
+ m_emptyframe.set_palette(m_videopalette);
+ fillbitmap_yuy16(m_emptyframe, 0, 128, 128);
+
+ // allocate texture for rendering
+ m_videoenable = true;
+ m_videotex = machine().render().texture_alloc();
+ if (m_videotex == NULL)
+ fatalerror("Out of memory allocating video texture");
+
+ // allocate overlay
+ m_overenable = overlay_configured();
+ if (m_overenable)
+ {
+ // bind our handlers
+ device_t *device = (m_overupdate_device == NULL) ? machine().driver_data() : machine().device(m_overupdate_device);
+ if (device == NULL) throw emu_fatalerror("Unable to find overlay update device '%s' for laserdisc '%s'\n", m_overupdate_device, tag());
+ m_overupdate.late_bind(*device);
+
+ // configure bitmap formats
+ texture_format texformat;
+ switch (m_overupdate.format())
+ {
+ default:
+ case BITMAP_FORMAT_IND16: texformat = TEXFORMAT_PALETTEA16; break;
+ case BITMAP_FORMAT_RGB32: texformat = TEXFORMAT_ARGB32; break;
+ }
+
+ // allocate overlay bitmaps
+ for (int index = 0; index < ARRAY_LENGTH(m_overbitmap); index++)
+ {
+ m_overbitmap[index].set_format(m_overupdate.format(), texformat);
+ m_overbitmap[index].allocate(m_overwidth, m_overheight);
+ m_overbitmap[index].set_palette(machine().palette);
+ }
+
+ // allocate overlay texture
+ m_overtex = machine().render().texture_alloc();
+ if (m_overtex == NULL)
+ fatalerror("Out of memory allocating overlay texture");
+ }
+}
+
+
+//-------------------------------------------------
+// init_audio - initialize the state of the
+// audio rendering
+//-------------------------------------------------
+
+void laserdisc_device::init_audio()
+{
+ // allocate a stream
+ m_stream = stream_alloc(0, 2, 48000);
+
+ // allocate audio buffers
+ m_audiomaxsamples = ((UINT64)m_samplerate * 1000000 + m_fps_times_1million - 1) / m_fps_times_1million;
+ m_audiobufsize = m_audiomaxsamples * 4;
+ m_audiobuffer[0] = auto_alloc_array(machine(), INT16, m_audiobufsize);
+ m_audiobuffer[1] = auto_alloc_array(machine(), INT16, m_audiobufsize);
+}
+
+
+//**************************************************************************
+// INTERNAL HELPERS
+//**************************************************************************
+
+//-------------------------------------------------
+// fillbitmap_yuy16 - fill a YUY16 bitmap with a
+// given color pattern
+//-------------------------------------------------
+
+void laserdisc_device::fillbitmap_yuy16(bitmap_yuy16 &bitmap, UINT8 yval, UINT8 cr, UINT8 cb)
+{
+ UINT16 color0 = (yval << 8) | cb;
+ UINT16 color1 = (yval << 8) | cr;
+
+ // write 32 bits of color (2 pixels at a time)
+ for (int y = 0; y < bitmap.height(); y++)
+ {
+ UINT16 *dest = &bitmap.pix16(y);
+ for (int x = 0; x < bitmap.width() / 2; x++)
+ {
+ *dest++ = color0;
+ *dest++ = color1;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// update_slider_pos - based on the current
+// speed and elapsed time, update the current
+// track position
+//-------------------------------------------------
+
+void laserdisc_device::update_slider_pos()
+{
+ attotime curtime = machine().time();
+
+ // if not moving, update to now
+ if (m_attospertrack == 0)
+ m_sliderupdate = curtime;
+
+ // otherwise, compute the number of tracks covered
+ else
+ {
+ attoseconds_t delta = (curtime - m_sliderupdate).as_attoseconds();
+
+ // determine how many tracks we covered and advance
+ if (m_attospertrack >= 0)
+ {
+ INT32 tracks_covered = delta / m_attospertrack;
+ add_and_clamp_track(tracks_covered);
+ if (tracks_covered != 0)
+ m_sliderupdate += attotime(0, tracks_covered * m_attospertrack);
+ }
+ else
+ {
+ INT32 tracks_covered = delta / -m_attospertrack;
+ add_and_clamp_track(-tracks_covered);
+ if (tracks_covered != 0)
+ m_sliderupdate += attotime(0, tracks_covered * -m_attospertrack);
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// vblank_state_changed - called on each state
+// change of the VBLANK signal
+//-------------------------------------------------
+
+void laserdisc_device::vblank_state_changed(screen_device &screen, bool vblank_state)
+{
+ // update current track based on slider speed
+ update_slider_pos();
+
+ // on rising edge, process previously-read frame and inform the player
+ if (vblank_state)
+ {
+ // call the player's VSYNC callback
+ player_vsync(m_metadata[m_fieldnum], m_fieldnum, machine().time());
+
+ // set a timer to begin fetching the next frame just before the VBI data would be fetched
+ timer_set(screen.time_until_pos(16*2), TID_VBI_FETCH);
+ }
+}
+
+
+//-------------------------------------------------
+// current_frame - return a reference to the
+// currently visible frame
+//-------------------------------------------------
+
+laserdisc_device::frame_data &laserdisc_device::current_frame()
+{
+ // determine the most recent live set of frames
+ frame_data *frame = &m_frame[m_videoindex];
+ if (frame->m_numfields < 2)
+ frame = &m_frame[(m_videoindex + ARRAY_LENGTH(m_frame) - 1) % ARRAY_LENGTH(m_frame)];
+ return *frame;
+}
+
+
+//-------------------------------------------------
+// read_track_data - read and process data for
+// a particular video track
+//-------------------------------------------------
+
+void laserdisc_device::read_track_data()
+{
+ // compute the chdhunk number we are going to read
+ INT32 chdtrack = m_curtrack - 1 - VIRTUAL_LEAD_IN_TRACKS;
+ chdtrack = MAX(chdtrack, 0);
+ chdtrack = MIN(chdtrack, m_chdtracks - 1);
+ UINT32 readhunk = chdtrack * 2 + m_fieldnum;
+
+ // cheat and look up the metadata we are about to retrieve
+ vbi_metadata vbidata = { 0 };
+ if (m_vbidata != NULL)
+ vbi_metadata_unpack(&vbidata, NULL, &m_vbidata[readhunk * VBI_PACKED_BYTES]);
+
+ // if we're in the lead-in area, force the VBI data to be standard lead-in
+ if (m_curtrack - 1 < VIRTUAL_LEAD_IN_TRACKS)
+ {
+ vbidata.line16 = 0;
+ vbidata.line17 = vbidata.line18 = vbidata.line1718 = VBI_CODE_LEADIN;
+ }
+//printf("track %5d.%d: %06X %06X %06X\n", m_curtrack, m_fieldnum, vbidata.line16, vbidata.line17, vbidata.line18);
+
+ // if we're about to read the first field in a frame, advance
+ frame_data *frame = &m_frame[m_videoindex];
+ if ((vbidata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ {
+ if (frame->m_numfields >= 2)
+ m_videoindex = (m_videoindex + 1) % ARRAY_LENGTH(m_frame);
+ frame = &m_frame[m_videoindex];
+ frame->m_numfields = 0;
+ }
+
+ // if we're squelched, reset the frame counter
+ if (m_videosquelch)
+ frame->m_numfields = 0;
+
+ // remember the last field number
+ frame->m_lastfield = m_curtrack * 2 + m_fieldnum;
+
+ // set the video target information
+ m_avconfig.video.wrap(&frame->m_bitmap.pix16(m_fieldnum), frame->m_bitmap.width(), frame->m_bitmap.height() / 2, frame->m_bitmap.rowpixels() * 2);
+
+ // set the audio target information
+ if (m_audiobufin + m_audiomaxsamples <= m_audiobufsize)
+ {
+ // if we can fit without wrapping, just read the data directly
+ m_avconfig.audio[0] = &m_audiobuffer[0][m_audiobufin];
+ m_avconfig.audio[1] = &m_audiobuffer[1][m_audiobufin];
+ }
+ else
+ {
+ // otherwise, read to the beginning of the buffer
+ m_avconfig.audio[0] = &m_audiobuffer[0][0];
+ m_avconfig.audio[1] = &m_audiobuffer[1][0];
+ }
+
+ // override if we're not decoding
+ m_avconfig.maxsamples = m_audiomaxsamples;
+ m_avconfig.actsamples = &m_audiocursamples;
+ m_audiocursamples = 0;
+
+ // set the VBI data for the new field from our precomputed data
+ if (m_vbidata != NULL)
+ {
+ UINT32 vbiframe;
+ vbi_metadata_unpack(&m_metadata[m_fieldnum], &vbiframe, &m_vbidata[readhunk * VBI_PACKED_BYTES]);
+ }
+
+ // if we're in the lead-in area, force the VBI data to be standard lead-in
+ if (m_curtrack - 1 < VIRTUAL_LEAD_IN_TRACKS)
+ {
+ m_metadata[m_fieldnum].line16 = 0;
+ m_metadata[m_fieldnum].line17 = m_metadata[m_fieldnum].line18 = m_metadata[m_fieldnum].line1718 = VBI_CODE_LEADIN;
+ }
+
+ // configure the codec and then read
+ m_readresult = CHDERR_FILE_NOT_FOUND;
+ if (m_disc != NULL && !m_videosquelch)
+ {
+ m_readresult = chd_codec_config(m_disc, AV_CODEC_DECOMPRESS_CONFIG, &m_avconfig);
+ if (m_readresult == CHDERR_NONE)
+ m_readresult = chd_read_async(m_disc, readhunk, NULL);
+ }
+}
+
+
+//-------------------------------------------------
+// process_track_data - process data from a
+// track after it has been read
+//-------------------------------------------------
+
+void laserdisc_device::process_track_data()
+{
+ // wait for the async operation to complete
+ if (m_readresult == CHDERR_OPERATION_PENDING)
+ m_readresult = chd_async_complete(m_disc);
+
+ // remove the video if we had an error
+ if (m_readresult != CHDERR_NONE)
+ m_avconfig.video.reset();
+
+ // count the field as read if we are successful
+ if (m_avconfig.video.valid())
+ {
+ m_frame[m_videoindex].m_numfields++;
+ player_overlay(m_avconfig.video);
+ }
+
+ // pass the audio to the callback
+ if (!m_audio_callback.isnull())
+ m_audio_callback(*this, m_samplerate, m_audiocursamples, m_avconfig.audio[0], m_avconfig.audio[1]);
+
+ // shift audio data if we read it into the beginning of the buffer
+ if (m_audiocursamples != 0 && m_audiobufin != 0)
+ for (int chnum = 0; chnum < 2; chnum++)
+ if (m_avconfig.audio[chnum] == &m_audiobuffer[chnum][0])
+ {
+ // move data to the end
+ int samplesleft = m_audiobufsize - m_audiobufin;
+ samplesleft = MIN(samplesleft, m_audiocursamples);
+ memmove(&m_audiobuffer[chnum][m_audiobufin], &m_audiobuffer[chnum][0], samplesleft * 2);
+
+ // shift data at the beginning
+ if (samplesleft < m_audiocursamples)
+ memmove(&m_audiobuffer[chnum][0], &m_audiobuffer[chnum][samplesleft], (m_audiocursamples - samplesleft) * 2);
+ }
+
+ // update the input buffer pointer
+ m_audiobufin = (m_audiobufin + m_audiocursamples) % m_audiobufsize;
+}
+
+
+
+//**************************************************************************
+// CONFIG SETTINGS ACCESS
+//**************************************************************************
+
+//-------------------------------------------------
+// config_load - read and apply data from the
+// configuration file
+//-------------------------------------------------
+
+void laserdisc_device::config_load(int config_type, xml_data_node *parentnode)
+{
+ // we only care about game files
+ if (config_type != CONFIG_TYPE_GAME)
+ return;
+
+ // might not have any data
+ if (parentnode == NULL)
+ return;
+
+ // iterate over overlay nodes
+ for (xml_data_node *ldnode = xml_get_sibling(parentnode->child, "device"); ldnode != NULL; ldnode = xml_get_sibling(ldnode->next, "device"))
+ {
+ const char *devtag = xml_get_attribute_string(ldnode, "tag", "");
+ if (strcmp(devtag, tag()) == 0)
+ {
+ // handle the overlay node
+ xml_data_node *overnode = xml_get_sibling(ldnode->child, "overlay");
+ if (overnode != NULL)
+ {
+ // fetch positioning controls
+ m_overposx = xml_get_attribute_float(overnode, "hoffset", m_overposx);
+ m_overscalex = xml_get_attribute_float(overnode, "hstretch", m_overscalex);
+ m_overposy = xml_get_attribute_float(overnode, "voffset", m_overposy);
+ m_overscaley = xml_get_attribute_float(overnode, "vstretch", m_overscaley);
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// config_save - save data to the configuration
+// file
+//-------------------------------------------------
+
+void laserdisc_device::config_save(int config_type, xml_data_node *parentnode)
+{
+ // we only care about game files
+ if (config_type != CONFIG_TYPE_GAME)
+ return;
+
+ // create a node
+ xml_data_node *ldnode = xml_add_child(parentnode, "device", NULL);
+ if (ldnode != NULL)
+ {
+ // output the basics
+ xml_set_attribute(ldnode, "tag", tag());
+
+ // add an overlay node
+ xml_data_node *overnode = xml_add_child(ldnode, "overlay", NULL);
+ bool changed = false;
+ if (overnode != NULL)
+ {
+ // output the positioning controls
+ if (m_overposx != m_orig_config.m_overposx)
+ {
+ xml_set_attribute_float(overnode, "hoffset", m_overposx);
+ changed = true;
+ }
+
+ if (m_overscalex != m_orig_config.m_overscalex)
+ {
+ xml_set_attribute_float(overnode, "hstretch", m_overscalex);
+ changed = true;
+ }
+
+ if (m_overposy != m_orig_config.m_overposy)
+ {
+ xml_set_attribute_float(overnode, "voffset", m_overposy);
+ changed = true;
+ }
+
+ if (m_overscaley != m_orig_config.m_overscaley)
+ {
+ xml_set_attribute_float(overnode, "vstretch", m_overscaley);
+ changed = true;
+ }
+ }
+
+ // if nothing changed, kill the node
+ if (!changed)
+ xml_delete_node(ldnode);
+ }
+}
+
diff --git a/src/emu/machine/laserdsc.h b/src/emu/machine/laserdsc.h
index 62f3ffcb7e6..cabca985898 100644
--- a/src/emu/machine/laserdsc.h
+++ b/src/emu/machine/laserdsc.h
@@ -2,10 +2,38 @@
laserdsc.h
- Generic laserdisc support.
-
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+ Core laserdisc player implementation.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
*************************************************************************/
@@ -14,230 +42,396 @@
#ifndef __LASERDSC_H__
#define __LASERDSC_H__
-#include "chd.h"
-
+#include "vbiparse.h"
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
-/* types of players supported */
-enum
+// laserdisc field codes
+enum laserdisc_field_code
{
- LASERDISC_TYPE_UNKNOWN,
- LASERDISC_TYPE_PIONEER_PR7820, /* Pioneer PR-7820 */
- LASERDISC_TYPE_PIONEER_PR8210, /* Pioneer PR-8210 / LD-V1100 */
- LASERDISC_TYPE_SIMUTREK_SPECIAL, /* Pioneer PR-8210 with mods */
- LASERDISC_TYPE_PIONEER_LDV1000, /* Pioneer LD-V1000 */
- LASERDISC_TYPE_PHILLIPS_22VP931, /* Phillips 22VP931 */
- LASERDISC_TYPE_PHILLIPS_22VP932, /* Phillips 22VP932 (PAL) */
- LASERDISC_TYPE_SONY_LDP1450 /* Sony LDP-1450 */
+ LASERDISC_CODE_WHITE_FLAG = 11, // boolean white flag
+ LASERDISC_CODE_LINE16 = 16, // 24-bit line 16 code
+ LASERDISC_CODE_LINE17 = 17, // 24-bit line 17 code
+ LASERDISC_CODE_LINE18 = 18, // 24-bit line 18 code
+ LASERDISC_CODE_LINE1718 = 1718 // 24-bit best of line 17/18 code
};
-/* laserdisc control lines */
-#define LASERDISC_LINE_ENTER 0 /* "ENTER" key/line */
-#define LASERDISC_LINE_CONTROL 1 /* "CONTROL" line */
-#define LASERDISC_LINE_RESET 2 /* "RESET" line */
-#define LASERDISC_INPUT_LINES 3
-
-/* laserdisc status lines */
-#define LASERDISC_LINE_READY 0 /* "READY" line */
-#define LASERDISC_LINE_STATUS 1 /* "STATUS STROBE" line */
-#define LASERDISC_LINE_COMMAND 2 /* "COMMAND STROBE" line */
-#define LASERDISC_LINE_DATA_AVAIL 3 /* data available "line" */
-#define LASERDISC_OUTPUT_LINES 4
-
-/* laserdisc field codes */
-#define LASERDISC_CODE_WHITE_FLAG 11 /* boolean white flag */
-#define LASERDISC_CODE_LINE16 16 /* 24-bit line 16 code */
-#define LASERDISC_CODE_LINE17 17 /* 24-bit line 17 code */
-#define LASERDISC_CODE_LINE18 18 /* 24-bit line 18 code */
-#define LASERDISC_CODE_LINE1718 1718 /* 24-bit best of line 17/18 code */
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-typedef chd_file *(*laserdisc_get_disc_func)(device_t *device);
-
-typedef void (*laserdisc_audio_func)(device_t *device, int samplerate, int samples, const INT16 *ch0, const INT16 *ch1);
-typedef void (*vp931_data_ready_func)(device_t *device, int state);
+// special frame and chapter numbers from VBI conversion
+#define FRAME_NOT_PRESENT -2 // no frame number information present
+#define FRAME_LEAD_IN -1 // lead-in code detected
+#define FRAME_LEAD_OUT 99999 // lead-out code detected
+#define CHAPTER_NOT_PRESENT -2 // no chapter number information present
+#define CHAPTER_LEAD_IN -1 // lead-in code detected
+#define CHAPTER_LEAD_OUT 100 // lead-out code detected
-typedef struct _laserdisc_config laserdisc_config;
-struct _laserdisc_config
-{
- laserdisc_get_disc_func getdisc;
- laserdisc_audio_func audio;
- const char * sound;
- const char * screen;
-
- /* overlay information */
- screen_update_func overupdate;
- UINT32 overwidth, overheight, overformat;
- INT32 overclip_min_x;
- INT32 overclip_max_x;
- INT32 overclip_min_y;
- INT32 overclip_max_y;
- float overposx, overposy;
- float overscalex, overscaley;
-};
+// generic head movement speeds; use player-specific information where appropriate
+#define GENERIC_SLOW_SPEED (5) // 1/5 normal speed
+#define GENERIC_FAST_SPEED (3) // 3x normal speed
+#define GENERIC_SCAN_SPEED (50) // 50x normal speed
+#define GENERIC_SEARCH_SPEED (5000) // 5000x normal speed
+// generic timings; use player-specific information where appropriate
+#define GENERIC_EJECT_TIME (attotime::from_seconds(5))
+#define GENERIC_SPINUP_TIME (attotime::from_seconds(2))
+#define GENERIC_LOAD_TIME (attotime::from_seconds(5))
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-#define MCFG_LASERDISC_ADD(_tag, _type, _screen, _sound) \
- MCFG_DEVICE_ADD(_tag, _type, 0) \
- MCFG_DEVICE_CONFIG_DATAPTR(laserdisc_config, screen, _screen) \
- MCFG_DEVICE_CONFIG_DATAPTR(laserdisc_config, sound, _sound) \
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
#define MCFG_LASERDISC_GET_DISC(_func) \
- MCFG_DEVICE_CONFIG_DATAPTR(laserdisc_config, getdisc, _func)
+ laserdisc_device::static_set_get_disc(*device, _func); \
#define MCFG_LASERDISC_AUDIO(_func) \
- MCFG_DEVICE_CONFIG_DATAPTR(laserdisc_config, audio, _func)
+ laserdisc_device::static_set_audio(*device, _func); \
+
+#define MCFG_LASERDISC_OVERLAY(_width, _height, _func) \
+ laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate(&screen_update_##_func, "screen_update_" #_func), device->tag()); \
-#define MCFG_LASERDISC_OVERLAY(_update, _width, _height, _format) \
- MCFG_DEVICE_CONFIG_DATAPTR(laserdisc_config, overupdate, SCREEN_UPDATE_NAME(_update)) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overwidth, _width) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overheight, _height) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overformat, _format)
+#define MCFG_LASERDISC_OVERLAY_DRIVER(_width, _height, _class, _method) \
+ laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate(&_class::_method, #_class "::" #_method)); \
+
+#define MCFG_LASERDISC_OVERLAY_DEVICE(_width, _height, _device, _class, _method) \
+ laserdisc_device::static_set_overlay(*device, _width, _height, screen_update_delegate(&_class::_method, #_class "::" #_method), _device); \
#define MCFG_LASERDISC_OVERLAY_CLIP(_minx, _maxx, _miny, _maxy) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overclip_min_x, _minx) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overclip_max_x, _maxx) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overclip_min_y, _miny) \
- MCFG_DEVICE_CONFIG_DATA32(laserdisc_config, overclip_max_y, _maxy)
+ laserdisc_device::static_set_overlay_clip(*device, _minx, _maxx, _miny, _maxy); \
#define MCFG_LASERDISC_OVERLAY_POSITION(_posx, _posy) \
- MCFG_DEVICE_CONFIG_DATAFP32(laserdisc_config, overposx, _posx, 24) \
- MCFG_DEVICE_CONFIG_DATAFP32(laserdisc_config, overposy, _posy, 24)
+ laserdisc_device::static_set_overlay_position(*device, _posx, _posy); \
#define MCFG_LASERDISC_OVERLAY_SCALE(_scalex, _scaley) \
- MCFG_DEVICE_CONFIG_DATAFP32(laserdisc_config, overscalex, _scalex, 24) \
- MCFG_DEVICE_CONFIG_DATAFP32(laserdisc_config, overscaley, _scaley, 24)
+ laserdisc_device::static_set_overlay_scale(*device, _scalex, _scaley); \
-/* use these to add laserdisc screens with proper video update parameters */
-#define MCFG_LASERDISC_SCREEN_ADD_NTSC(_tag, _overlayformat) \
+// use these to add laserdisc screens with proper video update parameters
+#define MCFG_LASERDISC_SCREEN_ADD_NTSC(_tag, _ldtag) \
+ MCFG_DEVICE_MODIFY(_ldtag) \
+ laserdisc_device::static_set_screen(*device, _tag); \
MCFG_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
- \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(_overlayformat) \
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz*2, 910, 0, 704, 525, 44, 524) \
- MCFG_SCREEN_UPDATE(laserdisc) \
+ MCFG_SCREEN_UPDATE_DEVICE(_ldtag, laserdisc_device, screen_update) \
-/* not correct yet; fix me... */
-#define MCFG_LASERDISC_SCREEN_ADD_PAL(_tag, _format) \
+// not correct yet; fix me...
+#define MCFG_LASERDISC_SCREEN_ADD_PAL(_tag, _ldtag) \
+ MCFG_DEVICE_MODIFY(_ldtag) \
+ laserdisc_device::static_set_screen(*device, _tag); \
MCFG_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
- \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(_format) \
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz, 910, 0, 704, 525.0/2, 0, 480/2) \
- MCFG_SCREEN_UPDATE(laserdisc) \
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-
-/* ----- core control and status ----- */
+ MCFG_SCREEN_UPDATE_DEVICE(_ldtag, laserdisc_device, screen_update) \
-/* get a bitmap for the current frame; return TRUE if valid or FALSE if video off */
-int laserdisc_get_video(device_t *device, bitmap_t **bitmap);
-/* return the raw philips or white flag codes */
-UINT32 laserdisc_get_field_code(device_t *device, UINT32 code, UINT8 zero_if_squelched);
+//**************************************************************************
+// MACROS
+//**************************************************************************
+#define SCANNING_PARAM(speed,duration) (((speed) << 8) | ((duration) & 0xff))
-/* ----- input and output ----- */
-/* write to the parallel data port of the player */
-void laserdisc_data_w(device_t *device, UINT8 data);
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
-/* assert or clear a signal line connected to the player */
-void laserdisc_line_w(device_t *device, UINT8 line, UINT8 newstate);
+// forward declarations
+class laserdisc_device;
-/* read from the parallel data port of the player */
-UINT8 laserdisc_data_r(device_t *device);
+// delegates
+typedef delegate<chd_file *(laserdisc_device &device)> laserdisc_get_disc_delegate;
+typedef delegate<void (laserdisc_device &device, int samplerate, int samples, const INT16 *ch0, const INT16 *ch1)> laserdisc_audio_delegate;
-/* read the state of a signal line connected to the player */
-UINT8 laserdisc_line_r(device_t *device, UINT8 line);
+// ======================> laserdisc_overlay_config
+// overlay configuration
+struct laserdisc_overlay_config
+{
+ float m_overposx;
+ float m_overposy;
+ float m_overscalex;
+ float m_overscaley;
+};
-/* ----- player specifics ----- */
-
-/* specify the "slow" speed of the Pioneer PR-7820 */
-void pr7820_set_slow_speed(device_t *device, double frame_rate_scaler);
-
-/* set a callback for data ready on the Phillips 22VP931 */
-void vp931_set_data_ready_callback(device_t *device, vp931_data_ready_func callback);
-
-/* control the audio squelch of the Simutrek modified players */
-void simutrek_set_audio_squelch(device_t *device, int state);
-
-
-
-/* ----- video interface ----- */
-
-/* enable/disable the video */
-void laserdisc_video_enable(device_t *device, int enable);
-
-/* enable/disable the overlay */
-void laserdisc_overlay_enable(device_t *device, int enable);
-/* video update callback */
-SCREEN_UPDATE( laserdisc );
+// ======================> laserdisc_device
+// base laserdisc class
+class laserdisc_device : public device_t,
+ public device_sound_interface,
+ public laserdisc_overlay_config
+{
+protected:
+ // construction/destruction
+ laserdisc_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock);
+ virtual ~laserdisc_device();
+
+public:
+ // reset line control
+
+ // core control and status
+ bool video_active() { return (!m_videosquelch && current_frame().m_numfields >= 2); }
+ bitmap_yuy16 &get_video() { return (!video_active()) ? m_emptyframe : current_frame().m_visbitmap; }
+ UINT32 get_field_code(laserdisc_field_code code, bool zero_if_squelched);
+
+ // video interface
+ void video_enable(bool enable) { m_videoenable = enable; }
+ void overlay_enable(bool enable) { m_overenable = enable; }
+
+ // video update callback
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ // configuration
+ bool overlay_configured() const { return (m_overwidth > 0 && m_overheight > 0 && !m_overupdate.isnull()); }
+ void get_overlay_config(laserdisc_overlay_config &config) { config = static_cast<laserdisc_overlay_config &>(*this); }
+ void set_overlay_config(const laserdisc_overlay_config &config) { static_cast<laserdisc_overlay_config &>(*this) = config; }
+
+ // static configuration helpers
+ static void static_set_screen(device_t &device, const char *screen);
+ static void static_set_get_disc(device_t &device, laserdisc_get_disc_delegate callback);
+ static void static_set_audio(device_t &device, laserdisc_audio_delegate callback);
+ static void static_set_overlay(device_t &device, UINT32 width, UINT32 height, screen_update_delegate update, const char *update_device = NULL);
+ static void static_set_overlay_clip(device_t &device, INT32 minx, INT32 maxx, INT32 miny, INT32 maxy);
+ static void static_set_overlay_position(device_t &device, float posx, float posy);
+ static void static_set_overlay_scale(device_t &device, float scalex, float scaley);
+
+protected:
+ // timer IDs
+ enum
+ {
+ TID_VBI_FETCH,
+ TID_FIRST_PLAYER_TIMER
+ };
+
+ // common laserdisc states
+ enum player_state
+ {
+ LDSTATE_NONE, // unspecified state
+ LDSTATE_EJECTING, // in the process of ejecting
+ LDSTATE_EJECTED, // fully ejected
+ LDSTATE_PARKED, // head parked in lead-in
+ LDSTATE_LOADING, // loading from ejected state
+ LDSTATE_SPINUP, // spinning up
+ LDSTATE_PAUSING, // looking for a frame boundary to pause
+ LDSTATE_PAUSED, // found a frame boundary; now paused
+ // parameter specifies the fieldnum of the first frame
+ LDSTATE_PLAYING, // playing forward normally, with audio
+ // parameter specifies the target frame, or 0 if none
+ LDSTATE_PLAYING_SLOW_REVERSE, // playing slow in the reverse direction, with no audio
+ // parameter specifies the number of times to repeat each track
+ LDSTATE_PLAYING_SLOW_FORWARD, // playing slow in the forward direction, with no audio
+ // parameter specifies the number of times to repeat each track
+ LDSTATE_PLAYING_FAST_REVERSE, // playing fast in the reverse direction, with no audio
+ // parameter specifies the number of frames to skip backwards after each frame
+ LDSTATE_PLAYING_FAST_FORWARD, // playing fast in the forward direction, with no audio
+ // parameter specifies the number of frames to skip forwards after each frame
+ LDSTATE_STEPPING_REVERSE, // single frame stepping in the reverse direction
+ LDSTATE_STEPPING_FORWARD, // single frame stepping in the forward direction
+ LDSTATE_SCANNING, // scanning in the forward or reverse direction
+ // parameter(0:7) controls how many vsyncs until revert to savestate
+ // parameter(8:31) specifies the speed
+ LDSTATE_SEEKING, // seeking to a specific frame
+ // parameter specifies the target frame
+ LDSTATE_OTHER // other states start here
+ };
+
+ // slider position
+ enum slider_position
+ {
+ SLIDER_MINIMUM, // at the minimum value
+ SLIDER_VIRTUAL_LEADIN, // within the virtual lead-in area
+ SLIDER_CHD, // within the boundaries of the CHD
+ SLIDER_OUTSIDE_CHD, // outside of the CHD area but before the virtual lead-out area
+ SLIDER_VIRTUAL_LEADOUT, // within the virtual lead-out area
+ SLIDER_MAXIMUM // at the maximum value
+ };
+
+ // information about the current player state
+ struct player_state_info
+ {
+ player_state m_state; // current state
+ INT32 m_substate; // internal sub-state; starts at 0 on any state change
+ INT32 m_param; // parameter for current state
+ attotime m_endtime; // minimum ending time for current state
+ };
+
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime) = 0;
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime) = 0;
+ virtual void player_overlay(bitmap_yuy16 &bitmap) = 0;
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_stop();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ // device_sound_interface overrides
+ virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
+
+ // subclass helpers
+ screen_device &screen() { assert(m_screen != NULL); return *m_screen; }
+ void set_audio_squelch(bool squelchleft, bool squelchright) { m_stream->update(); m_audiosquelch = (squelchleft ? 1 : 0) | (squelchright ? 2 : 0); }
+ void set_video_squelch(bool squelch) { m_videosquelch = squelch; }
+ void set_slider_speed(INT32 tracks_per_vsync);
+ void advance_slider(INT32 numtracks);
+ slider_position get_slider_position();
+ INT32 generic_update(const vbi_metadata &vbi, int fieldnum, attotime curtime, player_state_info &curstate);
+
+ // general helpers
+ bool is_start_of_frame(const vbi_metadata &vbi);
+ int frame_from_metadata(const vbi_metadata &metadata);
+ int chapter_from_metadata(const vbi_metadata &metadata);
+
+ player_state_info m_player_state; // active state
+ player_state_info m_saved_state; // saved state during temporary operations
+
+private:
+ // internal type definitions
+ struct frame_data
+ {
+ bitmap_yuy16 m_bitmap; // cached bitmap
+ bitmap_yuy16 m_visbitmap; // wrapper around bitmap with only visible lines
+ UINT8 m_numfields; // number of fields in this frame
+ INT32 m_lastfield; // last absolute field number
+ };
+
+ // internal helpers
+ void init_disc();
+ void init_video();
+ void init_audio();
+ void add_and_clamp_track(INT32 delta) { m_curtrack += delta; m_curtrack = MAX(m_curtrack, 1); m_curtrack = MIN(m_curtrack, m_maxtrack - 1); }
+ void fillbitmap_yuy16(bitmap_yuy16 &bitmap, UINT8 yval, UINT8 cr, UINT8 cb);
+ void update_slider_pos();
+ void vblank_state_changed(screen_device &screen, bool vblank_state);
+ frame_data &current_frame();
+ void read_track_data();
+ void process_track_data();
+ void config_load(int config_type, xml_data_node *parentnode);
+ void config_save(int config_type, xml_data_node *parentnode);
+
+ // configuration
+ laserdisc_get_disc_delegate m_getdisc_callback;
+ laserdisc_audio_delegate m_audio_callback; // audio streaming callback
+ const char * m_screen_name; // name of the screen device
+ laserdisc_overlay_config m_orig_config; // original overlay configuration
+ UINT32 m_overwidth; // overlay screen width
+ UINT32 m_overheight; // overlay screen height
+ rectangle m_overclip; // overlay visarea
+ screen_update_delegate m_overupdate; // overlay update delegate
+ const char * m_overupdate_device; // device for the overlay update
+
+ // disc parameters
+ chd_file * m_disc; // handle to the disc itself
+ UINT8 * m_vbidata; // pointer to precomputed VBI data
+ int m_width; // width of video
+ int m_height; // height of video
+ UINT32 m_fps_times_1million; // frame rate of video
+ int m_samplerate; // audio samplerate
+ chd_error m_readresult; // result of the most recent read
+ UINT32 m_chdtracks; // number of tracks in the CHD
+ av_codec_decompress_config m_avconfig; // decompression configuration
+
+ // core states
+ UINT8 m_audiosquelch; // audio squelch state: bit 0 = audio 1, bit 1 = audio 2
+ UINT8 m_videosquelch; // video squelch state: bit 0 = on/off
+ UINT8 m_fieldnum; // field number (0 or 1)
+ INT32 m_curtrack; // current track at this end of this vsync
+ UINT32 m_maxtrack; // maximum track number
+ attoseconds_t m_attospertrack; // attoseconds per track, or 0 if not moving
+ attotime m_sliderupdate; // time of last slider update
+
+ // video data
+ screen_device * m_screen; // pointer to the screen device
+ frame_data m_frame[3]; // circular list of frames
+ UINT8 m_videoindex; // index of the current video buffer
+ bitmap_yuy16 m_emptyframe; // blank frame
+
+ // audio data
+ sound_stream * m_stream;
+ INT16 * m_audiobuffer[2]; // buffer for audio samples
+ UINT32 m_audiobufsize; // size of buffer
+ UINT32 m_audiobufin; // input index
+ UINT32 m_audiobufout; // output index
+ UINT32 m_audiocursamples; // current samples this track
+ UINT32 m_audiomaxsamples; // maximum samples per track
+
+ // metadata
+ vbi_metadata m_metadata[2]; // metadata parsed from the stream, for each field
+
+ // video updating
+ bool m_videoenable; // is video enabled?
+ render_texture * m_videotex; // texture for the video
+ palette_t * m_videopalette; // palette for the video
+
+ // overlays
+ bool m_overenable; // is the overlay enabled?
+ screen_bitmap m_overbitmap[2]; // overlay bitmaps
+ int m_overindex; // index of the overlay bitmap
+ render_texture * m_overtex; // texture for the overlay
+};
-/* ----- configuration ----- */
-/* return a copy of the current live configuration settings */
-void laserdisc_get_config(device_t *device, laserdisc_config *config);
+//**************************************************************************
+// INLINE FUNCTIONS
+//**************************************************************************
-/* change the current live configuration settings */
-void laserdisc_set_config(device_t *device, const laserdisc_config *config);
+//-------------------------------------------------
+// is_start_of_frame - return true if this is
+// the start of a frame
+//-------------------------------------------------
+inline bool laserdisc_device::is_start_of_frame(const vbi_metadata &vbi)
+{
+ // is it not known if the white flag or the presence of a frame code
+ // determines the start of frame; the former seems to be the "official"
+ // way, but the latter seems to be the practical implementation
+ return (vbi.white || (vbi.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE);
+}
-/* ----- device interface ----- */
+//-------------------------------------------------
+// frame_from_metadata - return the frame number
+// encoded in the metadata, if present, or
+// FRAME_NOT_PRESENT
+//-------------------------------------------------
-/* device get info callback */
-DECLARE_LEGACY_DEVICE(PIONEER_PR7820,pioneer_pr7820);
-DECLARE_LEGACY_DEVICE(PIONEER_PR8210,pioneer_pr8210);
-DECLARE_LEGACY_DEVICE(SIMUTREK_SPECIAL,simutrek_special);
-DECLARE_LEGACY_DEVICE(PIONEER_LDV1000,pioneer_ldv1000);
-DECLARE_LEGACY_DEVICE(PHILLIPS_22VP931,phillips_22vp931);
-DECLARE_LEGACY_DEVICE(PHILLIPS_22VP932,phillips_22vp932);
-DECLARE_LEGACY_DEVICE(SONY_LDP1450,sony_ldp1450);
+inline int laserdisc_device::frame_from_metadata(const vbi_metadata &metadata)
+{
+ if ((metadata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ return VBI_CAV_PICTURE(metadata.line1718);
+ else if (metadata.line1718 == VBI_CODE_LEADIN)
+ return FRAME_LEAD_IN;
+ else if (metadata.line1718 == VBI_CODE_LEADOUT)
+ return FRAME_LEAD_OUT;
+ return FRAME_NOT_PRESENT;
+}
-/* audio get info callback */
-DECLARE_LEGACY_SOUND_DEVICE(LASERDISC_SOUND, laserdisc_sound);
-/* type setter */
-int laserdisc_get_type(device_t *device);
-void laserdisc_set_type(device_t *device, int type);
+//-------------------------------------------------
+// chapter_from_metadata - return the chapter
+// number encoded in the metadata, if present,
+// or CHAPTER_NOT_PRESENT
+//-------------------------------------------------
-INLINE bool device_is_laserdisc(device_t *device)
+inline int laserdisc_device::chapter_from_metadata(const vbi_metadata &metadata)
{
- return(device->type() == PIONEER_PR7820 ||
- device->type() == PIONEER_PR8210 ||
- device->type() == SIMUTREK_SPECIAL ||
- device->type() == PIONEER_LDV1000 ||
- device->type() == PHILLIPS_22VP931 ||
- device->type() == PHILLIPS_22VP932 ||
- device->type() == SONY_LDP1450);
+ if ((metadata.line1718 & VBI_MASK_CHAPTER) == VBI_CODE_CHAPTER)
+ return VBI_CHAPTER(metadata.line1718);
+ else if (metadata.line1718 == VBI_CODE_LEADIN)
+ return CHAPTER_LEAD_IN;
+ else if (metadata.line1718 == VBI_CODE_LEADOUT)
+ return CHAPTER_LEAD_OUT;
+ return CHAPTER_NOT_PRESENT;
}
-#endif /* __LASERDSC_H__ */
+
+#endif
diff --git a/src/emu/machine/ldcore.c b/src/emu/machine/ldcore.c
deleted file mode 100644
index 8e738853dde..00000000000
--- a/src/emu/machine/ldcore.c
+++ /dev/null
@@ -1,1709 +0,0 @@
-/*************************************************************************
-
- ldcore.c
-
- Private core laserdisc player implementation.
-
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
-
-*************************************************************************/
-
-#include "emu.h"
-#include "ldcore.h"
-#include "avcomp.h"
-#include "vbiparse.h"
-#include "config.h"
-#include "render.h"
-
-
-
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
-
-#define LOG_SLIDER 0
-
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-/* these specs code from IEC 60857, for NTSC players */
-#define LEAD_IN_MIN_RADIUS_IN_UM 53500 /* 53.5 mm */
-#define PROGRAM_MIN_RADIUS_IN_UM 55000 /* 55 mm */
-#define PROGRAM_MAX_RADIUS_IN_UM 145000 /* 145 mm */
-#define LEAD_OUT_MIN_SIZE_IN_UM 2000 /* 2 mm */
-
-/* the track pitch is defined as a range; we pick a nominal pitch
- that ensures we can fit 54,000 tracks */
-#define MIN_TRACK_PITCH_IN_NM 1400 /* 1.4 um */
-#define MAX_TRACK_PITCH_IN_NM 2000 /* 2 um */
-#define NOMINAL_TRACK_PITCH_IN_NM ((PROGRAM_MAX_RADIUS_IN_UM - PROGRAM_MIN_RADIUS_IN_UM) * 1000 / 54000)
-
-/* we simulate extra lead-in and lead-out tracks */
-#define VIRTUAL_LEAD_IN_TRACKS ((PROGRAM_MIN_RADIUS_IN_UM - LEAD_IN_MIN_RADIUS_IN_UM) * 1000 / NOMINAL_TRACK_PITCH_IN_NM)
-#define MAX_TOTAL_TRACKS 54000
-#define VIRTUAL_LEAD_OUT_TRACKS (LEAD_OUT_MIN_SIZE_IN_UM * 1000 / NOMINAL_TRACK_PITCH_IN_NM)
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* video frame data */
-typedef struct _frame_data frame_data;
-struct _frame_data
-{
- bitmap_t * bitmap; /* cached bitmap */
- bitmap_t * visbitmap; /* wrapper around bitmap with only visible lines */
- UINT8 numfields; /* number of fields in this frame */
- INT32 lastfield; /* last absolute field number */
-};
-
-
-/* core-specific data */
-struct _ldcore_data
-{
- /* general config */
- laserdisc_config config; /* copy of the inline config */
- ldplayer_interface intf; /* interface to the player */
-
- /* disc parameters */
- chd_file * disc; /* handle to the disc itself */
- UINT8 * vbidata; /* pointer to precomputed VBI data */
- int width; /* width of video */
- int height; /* height of video */
- UINT32 fps_times_1million; /* frame rate of video */
- int samplerate; /* audio samplerate */
- chd_error readresult; /* result of the most recent read */
- UINT32 chdtracks; /* number of tracks in the CHD */
- av_codec_decompress_config avconfig; /* decompression configuration */
-
- /* core states */
- UINT8 audiosquelch; /* audio squelch state: bit 0 = audio 1, bit 1 = audio 2 */
- UINT8 videosquelch; /* video squelch state: bit 0 = on/off */
- UINT8 fieldnum; /* field number (0 or 1) */
- INT32 curtrack; /* current track at this end of this vsync */
- UINT32 maxtrack; /* maximum track number */
- attoseconds_t attospertrack; /* attoseconds per track, or 0 if not moving */
- attotime sliderupdate; /* time of last slider update */
-
- /* video data */
- frame_data frame[3]; /* circular list of frames */
- UINT8 videoindex; /* index of the current video buffer */
- bitmap_t * videotarget; /* fake target bitmap for decompression */
- bitmap_t * emptyframe; /* blank frame */
-
- /* audio data */
- INT16 * audiobuffer[2]; /* buffer for audio samples */
- UINT32 audiobufsize; /* size of buffer */
- UINT32 audiobufin; /* input index */
- UINT32 audiobufout; /* output index */
- UINT32 audiocursamples; /* current samples this track */
- UINT32 audiomaxsamples; /* maximum samples per track */
- device_t *audiocustom; /* custom sound device */
-
- /* metadata */
- vbi_metadata metadata[2]; /* metadata parsed from the stream, for each field */
-
- /* I/O data */
- UINT8 datain; /* current input data value */
- UINT8 linein[LASERDISC_INPUT_LINES]; /* current input line state */
- UINT8 dataout; /* current output data value */
- UINT8 lineout[LASERDISC_OUTPUT_LINES]; /* current output line state */
-
- /* video updating */
- UINT8 videoenable; /* is video enabled? */
- render_texture * videotex; /* texture for the video */
- palette_t * videopalette; /* palette for the video */
- UINT8 overenable; /* is the overlay enabled? */
- bitmap_t * overbitmap[2]; /* overlay bitmaps */
- int overindex; /* index of the overlay bitmap */
- render_texture * overtex; /* texture for the overlay */
-};
-
-
-/* sound callback info */
-typedef struct _sound_token sound_token;
-struct _sound_token
-{
- sound_stream * stream;
- laserdisc_state * ld;
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-/* generic helper functions */
-static TIMER_CALLBACK( perform_player_update );
-static void read_track_data(laserdisc_state *ld);
-static void process_track_data(device_t *device);
-static DEVICE_START( laserdisc_sound );
-static STREAM_UPDATE( custom_stream_callback );
-static void configuration_load(device_t *device, int config_type, xml_data_node *parentnode);
-static void configuration_save(device_t *device, int config_type, xml_data_node *parentnode);
-
-
-
-/***************************************************************************
- GLOBAL VARIABLES
-***************************************************************************/
-
-
-
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- get_safe_token - makes sure that the passed
- in device is, in fact, a laserdisc device
--------------------------------------------------*/
-
-INLINE laserdisc_state *get_safe_token(device_t *device)
-{
- assert(device != NULL);
- assert(device_is_laserdisc(device));
-
- return (laserdisc_state *)downcast<legacy_device_base *>(device)->token();
-}
-
-
-/*-------------------------------------------------
- update_audio - update the audio stream to the
- current time
--------------------------------------------------*/
-
-INLINE void update_audio(laserdisc_state *ld)
-{
- ldcore_data *ldcore = ld->core;
- if (ldcore->audiocustom != NULL)
- {
- sound_token *token = (sound_token *)downcast<legacy_device_base *>(ldcore->audiocustom)->token();
- token->stream->update();
- }
-}
-
-
-/*-------------------------------------------------
- add_and_clamp_track - add a delta to the
- current track and clamp to minimum/maximum
- values
--------------------------------------------------*/
-
-INLINE void add_and_clamp_track(ldcore_data *ldcore, INT32 delta)
-{
- ldcore->curtrack += delta;
- ldcore->curtrack = MAX(ldcore->curtrack, 1);
- ldcore->curtrack = MIN(ldcore->curtrack, ldcore->maxtrack - 1);
-}
-
-
-/*-------------------------------------------------
- fillbitmap_yuy16 - fill a YUY16 bitmap with a
- given color pattern
--------------------------------------------------*/
-
-INLINE void fillbitmap_yuy16(bitmap_t &bitmap, UINT8 yval, UINT8 cr, UINT8 cb)
-{
- UINT16 color0 = (yval << 8) | cb;
- UINT16 color1 = (yval << 8) | cr;
- int x, y;
-
- /* write 32 bits of color (2 pixels at a time) */
- for (y = 0; y < bitmap.height(); y++)
- {
- UINT16 *dest = &bitmap.pix16(y);
- for (x = 0; x < bitmap.width() / 2; x++)
- {
- *dest++ = color0;
- *dest++ = color1;
- }
- }
-}
-
-
-
-/***************************************************************************
- GENERIC IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- update_slider_pos - based on the current
- speed and elapsed time, update the current
- track position
--------------------------------------------------*/
-
-static void update_slider_pos(ldcore_data *ldcore, attotime curtime)
-{
- /* if not moving, update to now */
- if (ldcore->attospertrack == 0)
- ldcore->sliderupdate = curtime;
-
- /* otherwise, compute the number of tracks covered */
- else
- {
- attoseconds_t delta = (curtime - ldcore->sliderupdate).as_attoseconds();
- INT32 tracks_covered;
-
- /* determine how many tracks we covered and advance */
- if (ldcore->attospertrack >= 0)
- {
- tracks_covered = delta / ldcore->attospertrack;
- add_and_clamp_track(ldcore, tracks_covered);
- if (tracks_covered != 0)
- ldcore->sliderupdate += attotime(0, tracks_covered * ldcore->attospertrack);
- }
- else
- {
- tracks_covered = delta / -ldcore->attospertrack;
- add_and_clamp_track(ldcore, -tracks_covered);
- if (tracks_covered != 0)
- ldcore->sliderupdate += attotime(0, tracks_covered * -ldcore->attospertrack);
- }
- }
-}
-
-
-/*-------------------------------------------------
- vblank_state_changed - called on each state
- change of the VBLANK signal
--------------------------------------------------*/
-
-static void vblank_state_changed(device_t *device, screen_device &screen, bool vblank_state)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- attotime curtime = screen.machine().time();
-
- /* update current track based on slider speed */
- update_slider_pos(ldcore, curtime);
-
- /* on rising edge, process previously-read frame and inform the player */
- if (vblank_state)
- {
- /* call the player's VSYNC callback */
- if (ldcore->intf.vsync != NULL)
- (*ldcore->intf.vsync)(ld, &ldcore->metadata[ldcore->fieldnum], ldcore->fieldnum, curtime);
-
- /* set a timer to begin fetching the next frame just before the VBI data would be fetched */
- screen.machine().scheduler().timer_set(screen.time_until_pos(16*2), FUNC(perform_player_update), 0, ld);
- }
-}
-
-
-/*-------------------------------------------------
- vblank_state_changed - called on each state
- change of the VBLANK signal
--------------------------------------------------*/
-
-static TIMER_CALLBACK( perform_player_update )
-{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldcore_data *ldcore = ld->core;
- attotime curtime = machine.time();
-
- /* wait for previous read and decode to finish */
- process_track_data(ld->device);
-
- /* update current track based on slider speed */
- update_slider_pos(ldcore, curtime);
-
- /* update the state */
- if (ldcore->intf.update != NULL)
- add_and_clamp_track(ldcore, (*ldcore->intf.update)(ld, &ldcore->metadata[ldcore->fieldnum], ldcore->fieldnum, curtime));
-
- /* flush any audio before we read more */
- update_audio(ld);
-
- /* start reading the track data for the next round */
- ldcore->fieldnum ^= 1;
- read_track_data(ld);
-}
-
-
-/*-------------------------------------------------
- laserdisc_data_w - write data to the given
- laserdisc player
--------------------------------------------------*/
-
-void laserdisc_data_w(device_t *device, UINT8 data)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- UINT8 prev = ldcore->datain;
- ldcore->datain = data;
-
- /* call through to the player-specific write handler */
- if (ldcore->intf.writedata != NULL)
- (*ldcore->intf.writedata)(ld, prev, data);
-}
-
-
-/*-------------------------------------------------
- laserdisc_line_w - control an input line
--------------------------------------------------*/
-
-void laserdisc_line_w(device_t *device, UINT8 line, UINT8 newstate)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
-
- assert(line < LASERDISC_INPUT_LINES);
- assert(newstate == ASSERT_LINE || newstate == CLEAR_LINE || newstate == PULSE_LINE);
-
- /* assert */
- if (newstate == ASSERT_LINE || newstate == PULSE_LINE)
- {
- if (ldcore->linein[line] != ASSERT_LINE)
- {
- /* call through to the player-specific line handler */
- if (ldcore->intf.writeline[line] != NULL)
- (*ldcore->intf.writeline[line])(ld, CLEAR_LINE, ASSERT_LINE);
- }
- ldcore->linein[line] = ASSERT_LINE;
- }
-
- /* deassert */
- if (newstate == CLEAR_LINE || newstate == PULSE_LINE)
- {
- if (ldcore->linein[line] != CLEAR_LINE)
- {
- /* call through to the player-specific line handler */
- if (ldcore->intf.writeline[line] != NULL)
- (*ldcore->intf.writeline[line])(ld, ASSERT_LINE, CLEAR_LINE);
- }
- ldcore->linein[line] = CLEAR_LINE;
- }
-}
-
-
-/*-------------------------------------------------
- laserdisc_data_r - return the current
- data byte
--------------------------------------------------*/
-
-UINT8 laserdisc_data_r(device_t *device)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- UINT8 result = ldcore->dataout;
-
- /* call through to the player-specific data handler */
- if (ldcore->intf.readdata != NULL)
- result = (*ldcore->intf.readdata)(ld);
-
- return result;
-}
-
-
-/*-------------------------------------------------
- laserdisc_line_r - return the current state
- of an output line
--------------------------------------------------*/
-
-UINT8 laserdisc_line_r(device_t *device, UINT8 line)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- UINT8 result;
-
- assert(line < LASERDISC_OUTPUT_LINES);
- result = ldcore->lineout[line];
-
- /* call through to the player-specific data handler */
- if (ldcore->intf.readline[line] != NULL)
- result = (*ldcore->intf.readline[line])(ld);
-
- return result;
-}
-
-
-/*-------------------------------------------------
- laserdisc_get_video - return the current
- video frame; return TRUE if valid or FALSE
- if video off
--------------------------------------------------*/
-
-int laserdisc_get_video(device_t *device, bitmap_t **bitmap)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- frame_data *frame;
-
- /* determine the most recent live set of frames */
- frame = &ldcore->frame[ldcore->videoindex];
- if (frame->numfields < 2)
- frame = &ldcore->frame[(ldcore->videoindex + ARRAY_LENGTH(ldcore->frame) - 1) % ARRAY_LENGTH(ldcore->frame)];
-
- /* if no video present, return the empty frame */
- if (ldcore->videosquelch || frame->numfields < 2)
- {
- *bitmap = ldcore->emptyframe;
- return FALSE;
- }
- else
- {
- *bitmap = frame->visbitmap;
- return TRUE;
- }
-}
-
-
-/*-------------------------------------------------
- laserdisc_get_field_code - return raw field
- information read from the disc
--------------------------------------------------*/
-
-UINT32 laserdisc_get_field_code(device_t *device, UINT32 code, UINT8 zero_if_squelched)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- int field = ldcore->fieldnum;
-
- /* return nothing if the video is off (external devices can't sense) */
- if (zero_if_squelched && ldcore->videosquelch)
- return 0;
-
- switch (code)
- {
- case LASERDISC_CODE_WHITE_FLAG:
- return ldcore->metadata[field].white;
-
- case LASERDISC_CODE_LINE16:
- return ldcore->metadata[field].line16;
-
- case LASERDISC_CODE_LINE17:
- return ldcore->metadata[field].line17;
-
- case LASERDISC_CODE_LINE18:
- return ldcore->metadata[field].line18;
-
- case LASERDISC_CODE_LINE1718:
- return ldcore->metadata[field].line1718;
- }
-
- return 0;
-}
-
-
-
-/***************************************************************************
- PLAYER-TO-CORE INTERFACES
-***************************************************************************/
-
-/*-------------------------------------------------
- ldcore_get_safe_token - return a token with
- type checking from a device
--------------------------------------------------*/
-
-laserdisc_state *ldcore_get_safe_token(device_t *device)
-{
- return get_safe_token(device);
-}
-
-
-/*-------------------------------------------------
- ldcore_set_audio_squelch - set the left/right
- audio squelch states
--------------------------------------------------*/
-
-void ldcore_set_audio_squelch(laserdisc_state *ld, UINT8 squelchleft, UINT8 squelchright)
-{
- update_audio(ld);
- ld->core->audiosquelch = (squelchleft ? 1 : 0) | (squelchright ? 2 : 0);
-}
-
-
-/*-------------------------------------------------
- ldcore_set_video_squelch - set the video
- squelch state
--------------------------------------------------*/
-
-void ldcore_set_video_squelch(laserdisc_state *ld, UINT8 squelch)
-{
- ld->core->videosquelch = squelch;
-}
-
-
-/*-------------------------------------------------
- ldcore_set_slider_speed - dynamically change
- the slider speed
--------------------------------------------------*/
-
-void ldcore_set_slider_speed(laserdisc_state *ld, INT32 tracks_per_vsync)
-{
- ldcore_data *ldcore = ld->core;
- attotime vsyncperiod = ld->screen->frame_period();
-
- update_slider_pos(ldcore, ld->device->machine().time());
-
- /* if 0, set the time to 0 */
- if (tracks_per_vsync == 0)
- ldcore->attospertrack = 0;
-
- /* positive values store positive times */
- else if (tracks_per_vsync > 0)
- ldcore->attospertrack = (vsyncperiod / tracks_per_vsync).as_attoseconds();
-
- /* negative values store negative times */
- else
- ldcore->attospertrack = -(vsyncperiod / -tracks_per_vsync).as_attoseconds();
-
- if (LOG_SLIDER)
- printf("Slider speed = %d\n", tracks_per_vsync);
-}
-
-
-/*-------------------------------------------------
- ldcore_advance_slider - advance the slider by
- a certain number of tracks
--------------------------------------------------*/
-
-void ldcore_advance_slider(laserdisc_state *ld, INT32 numtracks)
-{
- ldcore_data *ldcore = ld->core;
-
- update_slider_pos(ldcore, ld->device->machine().time());
- add_and_clamp_track(ldcore, numtracks);
- if (LOG_SLIDER)
- printf("Advance by %d\n", numtracks);
-}
-
-
-/*-------------------------------------------------
- ldcore_get_slider_position - get the current
- slider position
--------------------------------------------------*/
-
-slider_position ldcore_get_slider_position(laserdisc_state *ld)
-{
- ldcore_data *ldcore = ld->core;
-
- /* update the slider position first */
- update_slider_pos(ldcore, ld->device->machine().time());
-
- /* return the status */
- if (ldcore->curtrack == 1)
- return SLIDER_MINIMUM;
- else if (ldcore->curtrack < VIRTUAL_LEAD_IN_TRACKS)
- return SLIDER_VIRTUAL_LEADIN;
- else if (ldcore->curtrack < VIRTUAL_LEAD_IN_TRACKS + ldcore->chdtracks)
- return SLIDER_CHD;
- else if (ldcore->curtrack < VIRTUAL_LEAD_IN_TRACKS + MAX_TOTAL_TRACKS)
- return SLIDER_OUTSIDE_CHD;
- else if (ldcore->curtrack < ldcore->maxtrack - 1)
- return SLIDER_VIRTUAL_LEADOUT;
- else
- return SLIDER_MAXIMUM;
-}
-
-
-
-/***************************************************************************
- GENERIC HELPER FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- ldcore_generic_update - generically update in
- a way that works for most situations
--------------------------------------------------*/
-
-INT32 ldcore_generic_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime, ldplayer_state *newstate)
-{
- INT32 advanceby = 0;
- int frame;
-
- /* start by assuming the state doesn't change */
- *newstate = ld->state;
-
- /* handle things based on the state */
- switch (ld->state.state)
- {
- case LDSTATE_EJECTING:
- /* when time expires, switch to the ejected state */
- if (curtime >= ld->state.endtime)
- newstate->state = LDSTATE_EJECTED;
- break;
-
- case LDSTATE_EJECTED:
- /* do nothing */
- break;
-
- case LDSTATE_PARKED:
- /* do nothing */
- break;
-
- case LDSTATE_LOADING:
- /* when time expires, switch to the spinup state */
- if (curtime >= ld->state.endtime)
- newstate->state = LDSTATE_SPINUP;
- advanceby = -GENERIC_SEARCH_SPEED;
- break;
-
- case LDSTATE_SPINUP:
- /* when time expires, switch to the playing state */
- if (curtime >= ld->state.endtime)
- newstate->state = LDSTATE_PLAYING;
- advanceby = -GENERIC_SEARCH_SPEED;
- break;
-
- case LDSTATE_PAUSING:
- /* if he hit the start of a frame, switch to paused state */
- if (is_start_of_frame(vbi))
- {
- newstate->state = LDSTATE_PAUSED;
- newstate->param = fieldnum;
- }
-
- /* else advance until we hit it */
- else if (fieldnum == 1)
- advanceby = 1;
- break;
-
- case LDSTATE_PAUSED:
- /* if we paused on field 1, we must flip back and forth */
- if (ld->state.param == 1)
- advanceby = (fieldnum == 1) ? 1 : -1;
- break;
-
- case LDSTATE_PLAYING:
- /* if we hit the target frame, switch to the paused state */
- if (ld->state.param > 0 && is_start_of_frame(vbi) && frame_from_metadata(vbi) == ld->state.param)
- {
- newstate->state = LDSTATE_PAUSED;
- newstate->param = fieldnum;
- }
-
- /* otherwise after the second field of each frame */
- else if (fieldnum == 1)
- advanceby = 1;
- break;
-
- case LDSTATE_PLAYING_SLOW_REVERSE:
- /* after the second field of each frame, see if we need to advance */
- if (fieldnum == 1 && ++ld->state.substate > ld->state.param)
- {
- advanceby = -1;
- ld->state.substate = 0;
- }
- break;
-
- case LDSTATE_PLAYING_SLOW_FORWARD:
- /* after the second field of each frame, see if we need to advance */
- if (fieldnum == 1 && ++ld->state.substate > ld->state.param)
- {
- advanceby = 1;
- ld->state.substate = 0;
- }
- break;
-
- case LDSTATE_PLAYING_FAST_REVERSE:
- /* advance after the second field of each frame */
- if (fieldnum == 1)
- advanceby = -ld->state.param;
- break;
-
- case LDSTATE_PLAYING_FAST_FORWARD:
- /* advance after the second field of each frame */
- if (fieldnum == 1)
- advanceby = ld->state.param;
- break;
-
- case LDSTATE_SCANNING:
- /* advance after the second field of each frame */
- if (fieldnum == 1)
- advanceby = ld->state.param >> 8;
-
- /* after we run out of vsyncs, revert to the saved state */
- if (++ld->state.substate >= (ld->state.param & 0xff))
- *newstate = ld->savestate;
- break;
-
- case LDSTATE_STEPPING_REVERSE:
- /* wait for the first field of the frame and then leap backwards */
- if (is_start_of_frame(vbi))
- {
- advanceby = (fieldnum == 1) ? -1 : -2;
- newstate->state = LDSTATE_PAUSING;
- }
- break;
-
- case LDSTATE_STEPPING_FORWARD:
- /* wait for the first field of the frame and then switch to pausing state */
- if (is_start_of_frame(vbi))
- newstate->state = LDSTATE_PAUSING;
- break;
-
- case LDSTATE_SEEKING:
- /* if we're in the final state, look for a matching frame and pause there */
- frame = frame_from_metadata(vbi);
- if (ld->state.substate == 1 && is_start_of_frame(vbi) && frame == ld->state.param)
- {
- newstate->state = LDSTATE_PAUSED;
- newstate->param = fieldnum;
- }
-
- /* otherwise, if we got frame data from the VBI, update our seeking logic */
- else if (ld->state.substate == 0 && frame != FRAME_NOT_PRESENT)
- {
- INT32 delta = (ld->state.param - 2) - frame;
-
- /* if we're within a couple of frames, just play until we hit it */
- if (delta >= 0 && delta <= 2)
- ld->state.substate++;
-
- /* otherwise, compute the delta assuming 1:1 track to frame; this will correct eventually */
- else
- {
- if (delta < 0)
- delta--;
- advanceby = delta;
- advanceby = MIN(advanceby, GENERIC_SEARCH_SPEED);
- advanceby = MAX(advanceby, -GENERIC_SEARCH_SPEED);
- }
- }
-
- /* otherwise, keep advancing until we know what's up */
- else
- {
- if (fieldnum == 1)
- advanceby = 1;
- }
- break;
- }
-
- return advanceby;
-}
-
-
-/*-------------------------------------------------
- read_track_data - read and process data for
- a particular video track
--------------------------------------------------*/
-
-static void read_track_data(laserdisc_state *ld)
-{
- ldcore_data *ldcore = ld->core;
- UINT32 tracknum = ldcore->curtrack;
- UINT32 fieldnum = ldcore->fieldnum;
- vbi_metadata vbidata = { 0 };
- frame_data *frame;
- UINT32 vbiframe;
- UINT32 readhunk;
- INT32 chdtrack;
-
- /* compute the chdhunk number we are going to read */
- chdtrack = tracknum - 1 - VIRTUAL_LEAD_IN_TRACKS;
- chdtrack = MAX(chdtrack, 0);
- chdtrack = MIN(chdtrack, ldcore->chdtracks - 1);
- readhunk = chdtrack * 2 + fieldnum;
-
- /* cheat and look up the metadata we are about to retrieve */
- if (ldcore->vbidata != NULL)
- vbi_metadata_unpack(&vbidata, NULL, &ldcore->vbidata[readhunk * VBI_PACKED_BYTES]);
-
- /* if we're in the lead-in area, force the VBI data to be standard lead-in */
- if (tracknum - 1 < VIRTUAL_LEAD_IN_TRACKS)
- {
- vbidata.line16 = 0;
- vbidata.line17 = vbidata.line18 = vbidata.line1718 = VBI_CODE_LEADIN;
- }
-//printf("track %5d.%d: %06X %06X %06X\n", tracknum, fieldnum, vbidata.line16, vbidata.line17, vbidata.line18);
-
- /* if we're about to read the first field in a frame, advance */
- frame = &ldcore->frame[ldcore->videoindex];
- if ((vbidata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- {
- if (frame->numfields >= 2)
- ldcore->videoindex = (ldcore->videoindex + 1) % ARRAY_LENGTH(ldcore->frame);
- frame = &ldcore->frame[ldcore->videoindex];
- frame->numfields = 0;
- }
-
- /* if we're squelched, reset the frame counter */
- if (ldcore->videosquelch)
- frame->numfields = 0;
-
- /* remember the last field number */
- frame->lastfield = tracknum * 2 + fieldnum;
-
- /* set the video target information */
- ldcore->videotarget = auto_alloc(ld->device->machine(), bitmap_t(&frame->bitmap->pix16(fieldnum), frame->bitmap->width(), frame->bitmap->height() / 2, frame->bitmap->rowpixels() * 2, frame->bitmap->format()));
- ldcore->avconfig.video = ldcore->videotarget;
-
- /* set the audio target information */
- if (ldcore->audiobufin + ldcore->audiomaxsamples <= ldcore->audiobufsize)
- {
- /* if we can fit without wrapping, just read the data directly */
- ldcore->avconfig.audio[0] = &ldcore->audiobuffer[0][ldcore->audiobufin];
- ldcore->avconfig.audio[1] = &ldcore->audiobuffer[1][ldcore->audiobufin];
- }
- else
- {
- /* otherwise, read to the beginning of the buffer */
- ldcore->avconfig.audio[0] = &ldcore->audiobuffer[0][0];
- ldcore->avconfig.audio[1] = &ldcore->audiobuffer[1][0];
- }
-
- /* override if we're not decoding */
- ldcore->avconfig.maxsamples = ldcore->audiomaxsamples;
- ldcore->avconfig.actsamples = &ldcore->audiocursamples;
- ldcore->audiocursamples = 0;
-
- /* set the VBI data for the new field from our precomputed data */
- if (ldcore->vbidata != NULL)
- vbi_metadata_unpack(&ldcore->metadata[fieldnum], &vbiframe, &ldcore->vbidata[readhunk * VBI_PACKED_BYTES]);
-
- /* if we're in the lead-in area, force the VBI data to be standard lead-in */
- if (tracknum - 1 < VIRTUAL_LEAD_IN_TRACKS)
- {
- ldcore->metadata[fieldnum].line16 = 0;
- ldcore->metadata[fieldnum].line17 = ldcore->metadata[fieldnum].line18 = ldcore->metadata[fieldnum].line1718 = VBI_CODE_LEADIN;
- }
-
- /* configure the codec and then read */
- ldcore->readresult = CHDERR_FILE_NOT_FOUND;
- if (ldcore->disc != NULL && !ldcore->videosquelch)
- {
- ldcore->readresult = chd_codec_config(ldcore->disc, AV_CODEC_DECOMPRESS_CONFIG, &ldcore->avconfig);
- if (ldcore->readresult == CHDERR_NONE)
- ldcore->readresult = chd_read_async(ldcore->disc, readhunk, NULL);
- }
-}
-
-
-/*-------------------------------------------------
- process_track_data - process data from a
- track after it has been read
--------------------------------------------------*/
-
-static void process_track_data(device_t *device)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
-
- /* wait for the async operation to complete */
- if (ldcore->readresult == CHDERR_OPERATION_PENDING)
- ldcore->readresult = chd_async_complete(ldcore->disc);
-
- /* remove the video if we had an error */
- if (ldcore->readresult != CHDERR_NONE)
- ldcore->avconfig.video = NULL;
-
- /* count the field as read if we are successful */
- if (ldcore->avconfig.video != NULL)
- ldcore->frame[ldcore->videoindex].numfields++;
-
- /* render the display if present */
- if (ldcore->avconfig.video != NULL && ldcore->intf.overlay != NULL)
- (*ldcore->intf.overlay)(ld, *ldcore->avconfig.video);
-
- /* pass the audio to the callback */
- if (ldcore->config.audio != NULL)
- (*ldcore->config.audio)(device, ldcore->samplerate, ldcore->audiocursamples, ldcore->avconfig.audio[0], ldcore->avconfig.audio[1]);
-
- /* shift audio data if we read it into the beginning of the buffer */
- if (ldcore->audiocursamples != 0 && ldcore->audiobufin != 0)
- {
- int chnum;
-
- /* iterate over channels */
- for (chnum = 0; chnum < 2; chnum++)
- if (ldcore->avconfig.audio[chnum] == &ldcore->audiobuffer[chnum][0])
- {
- int samplesleft;
-
- /* move data to the end */
- samplesleft = ldcore->audiobufsize - ldcore->audiobufin;
- samplesleft = MIN(samplesleft, ldcore->audiocursamples);
- memmove(&ldcore->audiobuffer[chnum][ldcore->audiobufin], &ldcore->audiobuffer[chnum][0], samplesleft * 2);
-
- /* shift data at the beginning */
- if (samplesleft < ldcore->audiocursamples)
- memmove(&ldcore->audiobuffer[chnum][0], &ldcore->audiobuffer[chnum][samplesleft], (ldcore->audiocursamples - samplesleft) * 2);
- }
- }
-
- /* update the input buffer pointer */
- ldcore->audiobufin = (ldcore->audiobufin + ldcore->audiocursamples) % ldcore->audiobufsize;
-}
-
-
-/*-------------------------------------------------
- laserdisc_sound_start - custom audio start
- for laserdiscs
--------------------------------------------------*/
-
-static DEVICE_START( laserdisc_sound )
-{
- sound_token *token = (sound_token *)downcast<legacy_device_base *>(device)->token();
- token->stream = device->machine().sound().stream_alloc(*device, 0, 2, 48000, token, custom_stream_callback);
- token->ld = NULL;
-}
-
-
-/*-------------------------------------------------
- laserdisc_sound_get_info - information
- callback for laserdisc audio
--------------------------------------------------*/
-
-DEVICE_GET_INFO( laserdisc_sound )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as 64-bit signed integers --- */
- case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(sound_token); break;
-
- /* --- the following bits of info are returned as pointers to data or functions --- */
- case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(laserdisc_sound);break;
-
- /* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_NAME: strcpy(info->s, "Laserdisc Analog"); break;
- case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- }
-}
-
-
-/*-------------------------------------------------
- custom_stream_callback - audio streamer
- for laserdiscs
--------------------------------------------------*/
-
-static STREAM_UPDATE( custom_stream_callback )
-{
- sound_token *token = (sound_token *)param;
- laserdisc_state *ld = token->ld;
- ldcore_data *ldcore = ld->core;
- stream_sample_t *dst0 = outputs[0];
- stream_sample_t *dst1 = outputs[1];
- INT16 leftand, rightand;
- int samples_avail = 0;
-
- /* compute AND values based on the squelch */
- leftand = (ldcore->audiosquelch & 1) ? 0x0000 : 0xffff;
- rightand = (ldcore->audiosquelch & 2) ? 0x0000 : 0xffff;
-
- /* see if we have enough samples to fill the buffer; if not, drop out */
- samples_avail = ldcore->audiobufin - ldcore->audiobufout;
- if (samples_avail < 0)
- samples_avail += ldcore->audiobufsize;
-
- /* if no attached ld, just clear the buffers */
- if (samples_avail < samples)
- {
- memset(dst0, 0, samples * sizeof(dst0[0]));
- memset(dst1, 0, samples * sizeof(dst1[0]));
- }
-
- /* otherwise, stream from our buffer */
- else
- {
- INT16 *buffer0 = ldcore->audiobuffer[0];
- INT16 *buffer1 = ldcore->audiobuffer[1];
- int sampout = ldcore->audiobufout;
-
- /* copy samples, clearing behind us as we go */
- while (sampout != ldcore->audiobufin && samples-- > 0)
- {
- *dst0++ = buffer0[sampout] & leftand;
- *dst1++ = buffer1[sampout] & rightand;
- buffer0[sampout] = 0;
- buffer1[sampout] = 0;
- sampout++;
- if (sampout >= ldcore->audiobufsize)
- sampout = 0;
- }
- ldcore->audiobufout = sampout;
-
- /* clear out the rest of the buffer */
- if (samples > 0)
- {
- sampout = (ldcore->audiobufout == 0) ? ldcore->audiobufsize - 1 : ldcore->audiobufout - 1;
- stream_sample_t fill0 = buffer0[sampout] & leftand;
- stream_sample_t fill1 = buffer1[sampout] & rightand;
-
- while (samples-- > 0)
- {
- *dst0++ = fill0;
- *dst1++ = fill1;
- }
- }
- }
-}
-
-
-
-/***************************************************************************
- CONFIG SETTINGS ACCESS
-***************************************************************************/
-
-/*-------------------------------------------------
- configuration_load - read and apply data from
- the configuration file
--------------------------------------------------*/
-
-static void configuration_load(device_t *device, int config_type, xml_data_node *parentnode)
-{
- xml_data_node *overnode;
- xml_data_node *ldnode;
-
- /* we only care about game files */
- if (config_type != CONFIG_TYPE_GAME)
- return;
-
- /* might not have any data */
- if (parentnode == NULL)
- return;
-
- /* iterate over overlay nodes */
- for (ldnode = xml_get_sibling(parentnode->child, "device"); ldnode != NULL; ldnode = xml_get_sibling(ldnode->next, "device"))
- {
- const char *devtag = xml_get_attribute_string(ldnode, "tag", "");
- if (strcmp(devtag,device->tag()) == 0)
- {
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
-
- /* handle the overlay node */
- overnode = xml_get_sibling(ldnode->child, "overlay");
- if (overnode != NULL)
- {
- /* fetch positioning controls */
- ldcore->config.overposx = xml_get_attribute_float(overnode, "hoffset", ldcore->config.overposx);
- ldcore->config.overscalex = xml_get_attribute_float(overnode, "hstretch", ldcore->config.overscalex);
- ldcore->config.overposy = xml_get_attribute_float(overnode, "voffset", ldcore->config.overposy);
- ldcore->config.overscaley = xml_get_attribute_float(overnode, "vstretch", ldcore->config.overscaley);
- }
- }
- }
-}
-
-
-/*-------------------------------------------------
- configuration_save - save data to the
- configuration file
--------------------------------------------------*/
-
-static void configuration_save(device_t *device, int config_type, xml_data_node *parentnode)
-{
- /* we only care about game files */
- if (config_type != CONFIG_TYPE_GAME)
- return;
-
- laserdisc_config *origconfig = (laserdisc_config *)downcast<const legacy_device_base *>(device)->inline_config();
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- xml_data_node *overnode;
- xml_data_node *ldnode;
-
- /* create a node */
- ldnode = xml_add_child(parentnode, "device", NULL);
- if (ldnode != NULL)
- {
- int changed = FALSE;
-
- /* output the basics */
- xml_set_attribute(ldnode, "tag", device->tag());
-
- /* add an overlay node */
- overnode = xml_add_child(ldnode, "overlay", NULL);
- if (overnode != NULL)
- {
- /* output the positioning controls */
- if (ldcore->config.overposx != origconfig->overposx)
- {
- xml_set_attribute_float(overnode, "hoffset", ldcore->config.overposx);
- changed = TRUE;
- }
-
- if (ldcore->config.overscalex != origconfig->overscalex)
- {
- xml_set_attribute_float(overnode, "hstretch", ldcore->config.overscalex);
- changed = TRUE;
- }
-
- if (ldcore->config.overposy != origconfig->overposy)
- {
- xml_set_attribute_float(overnode, "voffset", ldcore->config.overposy);
- changed = TRUE;
- }
-
- if (ldcore->config.overscaley != origconfig->overscaley)
- {
- xml_set_attribute_float(overnode, "vstretch", ldcore->config.overscaley);
- changed = TRUE;
- }
- }
-
- /* if nothing changed, kill the node */
- if (!changed)
- xml_delete_node(ldnode);
- }
-}
-
-
-
-/***************************************************************************
- VIDEO INTERFACE
-***************************************************************************/
-
-/*-------------------------------------------------
- laserdisc_video_enable - enable/disable the
- video
--------------------------------------------------*/
-
-void laserdisc_video_enable(device_t *device, int enable)
-{
- laserdisc_state *ld = get_safe_token(device);
- ld->core->videoenable = enable;
-}
-
-
-/*-------------------------------------------------
- laserdisc_video_enable - enable/disable the
- video
--------------------------------------------------*/
-
-void laserdisc_overlay_enable(device_t *device, int enable)
-{
- laserdisc_state *ld = get_safe_token(device);
- ld->core->overenable = enable;
-}
-
-
-/*-------------------------------------------------
- video update callback
--------------------------------------------------*/
-
-SCREEN_UPDATE( laserdisc )
-{
- device_t *laserdisc = screen.machine().device("laserdisc"); // TODO: allow more than one laserdisc
- if (laserdisc != NULL)
- {
- const rectangle &visarea = screen.visible_area();
- laserdisc_state *ld = (laserdisc_state *)downcast<legacy_device_base *>(laserdisc)->token();
- ldcore_data *ldcore = ld->core;
- bitmap_t *overbitmap = ldcore->overbitmap[ldcore->overindex];
- bitmap_t *vidbitmap = NULL;
-
- /* handle the overlay if present */
- if (overbitmap != NULL && ldcore->config.overupdate != NULL)
- {
- rectangle clip = cliprect;
-
- /* scale the cliprect to the overlay size and then call the update callback */
- clip.min_x = ldcore->config.overclip_min_x;
- clip.max_x = ldcore->config.overclip_max_x;
- clip.min_y = cliprect.min_y * overbitmap->height() / bitmap.height();
- if (cliprect.min_y == visarea.min_y)
- clip.min_y = MIN(clip.min_y, ldcore->config.overclip_min_y);
- clip.max_y = (cliprect.max_y + 1) * overbitmap->height() / bitmap.height() - 1;
- (*ldcore->config.overupdate)(screen, *overbitmap, clip);
- }
-
- /* if this is the last update, do the rendering */
- if (cliprect.max_y == visarea.max_y)
- {
- /* update the texture with the overlay contents */
- if (overbitmap != NULL)
- {
- rectangle overclip(ldcore->config.overclip_min_x, ldcore->config.overclip_max_x, ldcore->config.overclip_min_y, ldcore->config.overclip_max_y);
- if (overbitmap->format() == BITMAP_FORMAT_INDEXED16)
- ldcore->overtex->set_bitmap(overbitmap, &overclip, TEXFORMAT_PALETTEA16, laserdisc->machine().palette);
- else if (overbitmap->format() == BITMAP_FORMAT_RGB32)
- ldcore->overtex->set_bitmap(overbitmap, &overclip, TEXFORMAT_ARGB32);
- }
-
- /* get the laserdisc video */
- laserdisc_get_video(laserdisc, &vidbitmap);
- if (vidbitmap != NULL)
- ldcore->videotex->set_bitmap(vidbitmap, NULL, TEXFORMAT_YUY16, ldcore->videopalette);
-
- /* reset the screen contents */
- screen.container().empty();
-
- /* add the video texture */
- if (ldcore->videoenable)
- screen.container().add_quad(0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), ldcore->videotex, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
-
- /* add the overlay */
- if (ldcore->overenable && overbitmap != NULL)
- {
- float x0 = 0.5f - 0.5f * ldcore->config.overscalex + ldcore->config.overposx;
- float y0 = 0.5f - 0.5f * ldcore->config.overscaley + ldcore->config.overposy;
- float x1 = x0 + ldcore->config.overscalex;
- float y1 = y0 + ldcore->config.overscaley;
- screen.container().add_quad(x0, y0, x1, y1, MAKE_ARGB(0xff,0xff,0xff,0xff), ldcore->overtex, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1));
- }
-
- /* swap to the next bitmap */
- ldcore->overindex = (ldcore->overindex + 1) % ARRAY_LENGTH(ldcore->overbitmap);
- }
- }
-
- return 0;
-}
-
-
-
-/***************************************************************************
- CONFIGURATION
-***************************************************************************/
-
-/*-------------------------------------------------
- laserdisc_get_config - return a copy of the
- current live configuration settings
--------------------------------------------------*/
-
-void laserdisc_get_config(device_t *device, laserdisc_config *config)
-{
- laserdisc_state *ld = get_safe_token(device);
- *config = ld->core->config;
-}
-
-
-/*-------------------------------------------------
- laserdisc_get_config - change the current live
- configuration settings
--------------------------------------------------*/
-
-void laserdisc_set_config(device_t *device, const laserdisc_config *config)
-{
- laserdisc_state *ld = get_safe_token(device);
- ld->core->config = *config;
-}
-
-
-
-/***************************************************************************
- INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- init_disc - initialize the state of the
- CHD disc
--------------------------------------------------*/
-
-static void init_disc(device_t *device)
-{
- const laserdisc_config *config = (const laserdisc_config *)downcast<const legacy_device_base *>(device)->inline_config();
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- chd_error err;
-
- /* get a handle to the disc to play */
- if (config->getdisc != NULL)
- ldcore->disc = (*config->getdisc)(device);
- else
- ldcore->disc = get_disk_handle(device->machine(), device->tag());
-
- /* set default parameters */
- ldcore->width = 720;
- ldcore->height = 240;
- ldcore->fps_times_1million = 59940000;
- ldcore->samplerate = 48000;
-
- /* get the disc metadata and extract the ld */
- ldcore->chdtracks = 0;
- ldcore->maxtrack = VIRTUAL_LEAD_IN_TRACKS + MAX_TOTAL_TRACKS + VIRTUAL_LEAD_OUT_TRACKS;
- if (ldcore->disc != NULL)
- {
- UINT32 totalhunks = chd_get_header(ldcore->disc)->totalhunks;
- int fps, fpsfrac, interlaced, channels;
- char metadata[256];
- UINT32 vbilength;
-
- /* require the A/V codec */
- if (chd_get_header(ldcore->disc)->compression != CHDCOMPRESSION_AV)
- fatalerror("Laserdisc video must be compressed with the A/V codec!");
-
- /* read the metadata */
- err = chd_get_metadata(ldcore->disc, AV_METADATA_TAG, 0, metadata, sizeof(metadata), NULL, NULL, NULL);
- if (err != CHDERR_NONE)
- fatalerror("Non-A/V CHD file specified");
-
- /* extract the metadata */
- if (sscanf(metadata, AV_METADATA_FORMAT, &fps, &fpsfrac, &ldcore->width, &ldcore->height, &interlaced, &channels, &ldcore->samplerate) != 7)
- fatalerror("Invalid metadata in CHD file");
- else
- ldcore->fps_times_1million = fps * 1000000 + fpsfrac;
-
- /* require interlaced video */
- if (!interlaced)
- fatalerror("Laserdisc video must be interlaced!");
-
- /* determine the maximum track and allocate a frame buffer */
- ldcore->chdtracks = totalhunks / 2;
-
- /* allocate memory for the precomputed per-frame metadata */
- ldcore->vbidata = auto_alloc_array(device->machine(), UINT8, totalhunks * VBI_PACKED_BYTES);
- err = chd_get_metadata(ldcore->disc, AV_LD_METADATA_TAG, 0, ldcore->vbidata, totalhunks * VBI_PACKED_BYTES, &vbilength, NULL, NULL);
- if (err != CHDERR_NONE || vbilength != totalhunks * VBI_PACKED_BYTES)
- fatalerror("Precomputed VBI metadata missing or incorrect size");
- }
- ldcore->maxtrack = MAX(ldcore->maxtrack, VIRTUAL_LEAD_IN_TRACKS + VIRTUAL_LEAD_OUT_TRACKS + ldcore->chdtracks);
-}
-
-
-/*-------------------------------------------------
- init_video - initialize the state of the
- video rendering
--------------------------------------------------*/
-
-static void init_video(device_t *device)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
- int index;
-
- /* register for VBLANK callbacks */
- ld->screen->register_vblank_callback(vblank_state_delegate(FUNC(vblank_state_changed), device));
-
- /* allocate video frames */
- for (index = 0; index < ARRAY_LENGTH(ldcore->frame); index++)
- {
- frame_data *frame = &ldcore->frame[index];
-
- /* first allocate a YUY16 bitmap at 2x the height */
- frame->bitmap = auto_alloc(device->machine(), bitmap_t(ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16));
- fillbitmap_yuy16(*frame->bitmap, 40, 109, 240);
-
- /* make a copy of the bitmap that clips out the VBI and horizontal blanking areas */
- frame->visbitmap = auto_alloc(device->machine(), bitmap_t(&frame->bitmap->pix16(44, frame->bitmap->width() * 8 / 720),
- frame->bitmap->width() - 2 * frame->bitmap->width() * 8 / 720,
- frame->bitmap->height() - 44,
- frame->bitmap->rowpixels(), frame->bitmap->format()));
- }
-
- /* allocate an empty frame of the same size */
- ldcore->emptyframe = auto_bitmap_alloc(device->machine(), ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
- fillbitmap_yuy16(*ldcore->emptyframe, 0, 128, 128);
-
- /* allocate texture for rendering */
- ldcore->videoenable = TRUE;
- ldcore->videotex = device->machine().render().texture_alloc();
- if (ldcore->videotex == NULL)
- fatalerror("Out of memory allocating video texture");
-
- /* allocate palette for applying brightness/contrast/gamma */
- ldcore->videopalette = palette_alloc(256, 1);
- if (ldcore->videopalette == NULL)
- fatalerror("Out of memory allocating video palette");
- for (index = 0; index < 256; index++)
- palette_entry_set_color(ldcore->videopalette, index, MAKE_RGB(index, index, index));
-
- /* allocate overlay */
- if (ldcore->config.overwidth > 0 && ldcore->config.overheight > 0 && ldcore->config.overupdate != NULL)
- {
- ldcore->overenable = TRUE;
- ldcore->overbitmap[0] = auto_bitmap_alloc(device->machine(), ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
- ldcore->overbitmap[1] = auto_bitmap_alloc(device->machine(), ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
- ldcore->overtex = device->machine().render().texture_alloc();
- if (ldcore->overtex == NULL)
- fatalerror("Out of memory allocating overlay texture");
- }
-}
-
-
-/*-------------------------------------------------
- init_audio - initialize the state of the
- audio rendering
--------------------------------------------------*/
-
-static void init_audio(device_t *device)
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
-
- /* find the custom audio */
- ldcore->audiocustom = device->machine().device(ldcore->config.sound);
-
- /* allocate audio buffers */
- ldcore->audiomaxsamples = ((UINT64)ldcore->samplerate * 1000000 + ldcore->fps_times_1million - 1) / ldcore->fps_times_1million;
- ldcore->audiobufsize = ldcore->audiomaxsamples * 4;
- ldcore->audiobuffer[0] = auto_alloc_array(device->machine(), INT16, ldcore->audiobufsize);
- ldcore->audiobuffer[1] = auto_alloc_array(device->machine(), INT16, ldcore->audiobufsize);
-}
-
-
-
-/***************************************************************************
- DEVICE INTERFACE
-***************************************************************************/
-
-/*-------------------------------------------------
- device start callback
--------------------------------------------------*/
-
-static DEVICE_START( laserdisc )
-{
- const laserdisc_config *config = (const laserdisc_config *)downcast<const legacy_device_base *>(device)->inline_config();
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore;
-
- /* ensure that our screen is started first */
- ld->screen = downcast<screen_device *>(device->machine().device(config->screen));
- assert(ld->screen != NULL);
- if (!ld->screen->started())
- throw device_missing_dependencies();
-
- /* save a copy of the device pointer */
- ld->device = device;
-
- /* allocate memory for the core state */
- ld->core = auto_alloc_clear(device->machine(), ldcore_data);
- ldcore = ld->core;
-
- if (device->type() == PIONEER_PR8210)
- ldcore->intf = pr8210_interface;
- else if (device->type() == SIMUTREK_SPECIAL)
- ldcore->intf = simutrek_interface;
- else if (device->type() == PIONEER_LDV1000)
- ldcore->intf = ldv1000_interface;
- else if (device->type() == PHILLIPS_22VP931)
- ldcore->intf = vp931_interface;
-
- ld->player = (ldplayer_data *)auto_alloc_array_clear(device->machine(), UINT8, ldcore->intf.statesize);
-
- /* copy config data to the live state */
- ldcore->config = *config;
- if (ldcore->config.overclip_max_x == ldcore->config.overclip_min_x || ldcore->config.overclip_max_y == ldcore->config.overclip_min_y)
- {
- ldcore->config.overclip_min_x = ldcore->config.overclip_min_y = 0;
- ldcore->config.overclip_max_x = ldcore->config.overwidth - 1;
- ldcore->config.overclip_max_y = ldcore->config.overheight - 1;
- }
- if (ldcore->config.overscalex == 0)
- ldcore->config.overscalex = 1.0f;
- if (ldcore->config.overscaley == 0)
- ldcore->config.overscaley = 1.0f;
-
- /* initialize the various pieces */
- init_disc(device);
- init_video(device);
- init_audio(device);
-
- /* register callbacks */
- config_register(device->machine(), "laserdisc", config_saveload_delegate(FUNC(configuration_load), device), config_saveload_delegate(FUNC(configuration_save), device));
-}
-
-
-/*-------------------------------------------------
- device exit callback
--------------------------------------------------*/
-
-static DEVICE_STOP( laserdisc )
-{
- laserdisc_state *ld = get_safe_token(device);
- ldcore_data *ldcore = ld->core;
-
- /* make sure all async operations have completed */
- if (ldcore->disc != NULL)
- chd_async_complete(ldcore->disc);
-
- /* free any textures and palettes */
- device->machine().render().texture_free(ldcore->videotex);
- if (ldcore->videopalette != NULL)
- palette_deref(ldcore->videopalette);
- device->machine().render().texture_free(ldcore->overtex);
-}
-
-
-/*-------------------------------------------------
- device reset callback
--------------------------------------------------*/
-
-static DEVICE_RESET( laserdisc )
-{
- laserdisc_state *ld = get_safe_token(device);
- attotime curtime = device->machine().time();
- ldcore_data *ldcore = ld->core;
- int line;
-
- /* attempt to wire up the audio */
- if (ldcore->audiocustom != NULL)
- {
- sound_token *token = (sound_token *)downcast<legacy_device_base *>(ldcore->audiocustom)->token();
- token->ld = ld;
- token->stream->set_sample_rate(ldcore->samplerate);
- }
-
- /* set up the general ld */
- ldcore->audiosquelch = 3;
- ldcore->videosquelch = 1;
- ldcore->fieldnum = 0;
- ldcore->curtrack = 1;
- ldcore->attospertrack = 0;
- ldcore->sliderupdate = curtime;
-
- /* reset the I/O lines */
- for (line = 0; line < LASERDISC_INPUT_LINES; line++)
- ldcore->linein[line] = CLEAR_LINE;
- for (line = 0; line < LASERDISC_OUTPUT_LINES; line++)
- ldcore->lineout[line] = CLEAR_LINE;
-
- /* call the initialization */
- if (ldcore->intf.init != NULL)
- (*ldcore->intf.init)(ld);
-}
-
-
-/*-------------------------------------------------
- device set info callback
--------------------------------------------------*/
-
-int laserdisc_get_type(device_t *device)
-{
- if (device->type() == PIONEER_PR7820)
- return LASERDISC_TYPE_PIONEER_PR7820;
- if (device->type() == PIONEER_PR8210)
- return LASERDISC_TYPE_PIONEER_PR8210;
- if (device->type() == SIMUTREK_SPECIAL)
- return LASERDISC_TYPE_SIMUTREK_SPECIAL;
- if (device->type() == PIONEER_LDV1000)
- return LASERDISC_TYPE_PIONEER_LDV1000;
- if (device->type() == PHILLIPS_22VP931)
- return LASERDISC_TYPE_PHILLIPS_22VP931;
- if (device->type() == PHILLIPS_22VP932)
- return LASERDISC_TYPE_PHILLIPS_22VP932;
- if (device->type() == SONY_LDP1450)
- return LASERDISC_TYPE_SONY_LDP1450;
- return LASERDISC_TYPE_UNKNOWN;
-}
-
-void laserdisc_set_type(device_t *device, int type)
-{
- // this is no longer supported
-}
-
-
-DEVICE_GET_INFO( laserdisc )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as 64-bit signed integers --- */
- case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(laserdisc_state); break;
- case DEVINFO_INT_INLINE_CONFIG_BYTES: info->i = sizeof(laserdisc_config); break;
-
- /* --- the following bits of info are returned as pointers to data or functions --- */
- case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(laserdisc); break;
- case DEVINFO_FCT_STOP: info->stop = DEVICE_STOP_NAME(laserdisc); break;
- case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(laserdisc); break;
-
- /* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_FAMILY: strcpy(info->s, "Laserdisc Player"); break;
- case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
- case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
- }
-}
-
-DEVICE_GET_INFO( unkldplay )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = NULL; return;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = NULL; return;
- /* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_NAME: strcpy(info->s,"Unknown Laserdisc Player"); return;
- case DEVINFO_STR_SHORTNAME: strcpy(info->s,"unkldplay"); return;
- }
-
- DEVICE_GET_INFO_CALL( laserdisc );
-}
-
-DEVICE_GET_INFO( pioneer_pr7820 )
-{
- DEVICE_GET_INFO_CALL( unkldplay );
-}
-
-DEVICE_GET_INFO( pioneer_pr8210 )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = pr8210_interface.romregion; return;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = pr8210_interface.machine_config; return;
-
- /* --- the following bits of info are returned as NULL-terminated strings -- */
- case DEVINFO_STR_NAME: strcpy(info->s, pr8210_interface.name); return;
- case DEVINFO_STR_SHORTNAME: strcpy(info->s, pr8210_interface.shortname); return;
- }
-
- DEVICE_GET_INFO_CALL( laserdisc );
-}
-
-DEVICE_GET_INFO( simutrek_special )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = simutrek_interface.romregion; return;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = simutrek_interface.machine_config; return;
-
- /* --- the following bits of info are returned as NULL-terminated strings -- */
- case DEVINFO_STR_NAME: strcpy(info->s, simutrek_interface.name); return;
- case DEVINFO_STR_SHORTNAME: strcpy(info->s, simutrek_interface.shortname); return;
- }
-
- DEVICE_GET_INFO_CALL( laserdisc );
-}
-
-DEVICE_GET_INFO( pioneer_ldv1000 )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = ldv1000_interface.romregion; return;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = ldv1000_interface.machine_config; return;
-
- /* --- the following bits of info are returned as NULL-terminated strings -- */
- case DEVINFO_STR_NAME: strcpy(info->s, ldv1000_interface.name); return;
- case DEVINFO_STR_SHORTNAME: strcpy(info->s, ldv1000_interface.shortname); return;
- }
-
- DEVICE_GET_INFO_CALL( laserdisc );
-}
-
-DEVICE_GET_INFO( phillips_22vp931 )
-{
- switch (state)
- {
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = vp931_interface.romregion; return;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = vp931_interface.machine_config; return;
-
- /* --- the following bits of info are returned as NULL-terminated strings -- */
- case DEVINFO_STR_NAME: strcpy(info->s, vp931_interface.name); return;
- case DEVINFO_STR_SHORTNAME: strcpy(info->s, vp931_interface.shortname); return;
- }
-
- DEVICE_GET_INFO_CALL( laserdisc );
-}
-
-DEVICE_GET_INFO( phillips_22vp932 )
-{
- DEVICE_GET_INFO_CALL( unkldplay );
-}
-
-DEVICE_GET_INFO( sony_ldp1450 )
-{
- DEVICE_GET_INFO_CALL( unkldplay );
-}
-
-DEFINE_LEGACY_DEVICE(PIONEER_PR7820,pioneer_pr7820);
-DEFINE_LEGACY_DEVICE(PIONEER_PR8210,pioneer_pr8210);
-DEFINE_LEGACY_DEVICE(SIMUTREK_SPECIAL,simutrek_special);
-DEFINE_LEGACY_DEVICE(PIONEER_LDV1000,pioneer_ldv1000);
-DEFINE_LEGACY_DEVICE(PHILLIPS_22VP931,phillips_22vp931);
-DEFINE_LEGACY_DEVICE(PHILLIPS_22VP932,phillips_22vp932);
-DEFINE_LEGACY_DEVICE(SONY_LDP1450,sony_ldp1450);
-DEFINE_LEGACY_SOUND_DEVICE(LASERDISC_SOUND, laserdisc_sound);
diff --git a/src/emu/machine/ldcore.h b/src/emu/machine/ldcore.h
deleted file mode 100644
index 7ea180f1e64..00000000000
--- a/src/emu/machine/ldcore.h
+++ /dev/null
@@ -1,268 +0,0 @@
-/*************************************************************************
-
- ldcore.h
-
- Private core laserdisc player implementation.
-
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
-
-*************************************************************************/
-
-#pragma once
-
-#ifndef __LDCORE_H__
-#define __LDCORE_H__
-
-#include "laserdsc.h"
-#include "vbiparse.h"
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-/* common laserdisc states */
-enum
-{
- LDSTATE_NONE, /* unspecified state */
- LDSTATE_EJECTING, /* in the process of ejecting */
- LDSTATE_EJECTED, /* fully ejected */
- LDSTATE_PARKED, /* head parked in lead-in */
- LDSTATE_LOADING, /* loading from ejected state */
- LDSTATE_SPINUP, /* spinning up */
- LDSTATE_PAUSING, /* looking for a frame boundary to pause */
- LDSTATE_PAUSED, /* found a frame boundary; now paused */
- /* parameter specifies the fieldnum of the first frame */
- LDSTATE_PLAYING, /* playing forward normally, with audio */
- /* parameter specifies the target frame, or 0 if none */
- LDSTATE_PLAYING_SLOW_REVERSE, /* playing slow in the reverse direction, with no audio */
- /* parameter specifies the number of times to repeat each track */
- LDSTATE_PLAYING_SLOW_FORWARD, /* playing slow in the forward direction, with no audio */
- /* parameter specifies the number of times to repeat each track */
- LDSTATE_PLAYING_FAST_REVERSE, /* playing fast in the reverse direction, with no audio */
- /* parameter specifies the number of frames to skip backwards after each frame */
- LDSTATE_PLAYING_FAST_FORWARD, /* playing fast in the forward direction, with no audio */
- /* parameter specifies the number of frames to skip forwards after each frame */
- LDSTATE_STEPPING_REVERSE, /* single frame stepping in the reverse direction */
- LDSTATE_STEPPING_FORWARD, /* single frame stepping in the forward direction */
- LDSTATE_SCANNING, /* scanning in the forward or reverse direction */
- /* parameter(0:7) controls how many vsyncs until revert to savestate */
- /* parameter(8:31) specifies the speed */
- LDSTATE_SEEKING, /* seeking to a specific frame */
- /* parameter specifies the target frame */
- LDSTATE_OTHER /* other states start here */
-};
-
-
-/* slider position */
-enum _slider_position
-{
- SLIDER_MINIMUM, /* at the minimum value */
- SLIDER_VIRTUAL_LEADIN, /* within the virtual lead-in area */
- SLIDER_CHD, /* within the boundaries of the CHD */
- SLIDER_OUTSIDE_CHD, /* outside of the CHD area but before the virtual lead-out area */
- SLIDER_VIRTUAL_LEADOUT, /* within the virtual lead-out area */
- SLIDER_MAXIMUM /* at the maximum value */
-};
-typedef enum _slider_position slider_position;
-
-
-/* special frame and chapter numbers from VBI conversion */
-#define FRAME_NOT_PRESENT -2 /* no frame number information present */
-#define FRAME_LEAD_IN -1 /* lead-in code detected */
-#define FRAME_LEAD_OUT 99999 /* lead-out code detected */
-#define CHAPTER_NOT_PRESENT -2 /* no chapter number information present */
-#define CHAPTER_LEAD_IN -1 /* lead-in code detected */
-#define CHAPTER_LEAD_OUT 100 /* lead-out code detected */
-
-/* generic head movement speeds; use player-specific information where appropriate */
-#define GENERIC_SLOW_SPEED (5) /* 1/5 normal speed */
-#define GENERIC_FAST_SPEED (3) /* 3x normal speed */
-#define GENERIC_SCAN_SPEED (50) /* 50x normal speed */
-#define GENERIC_SEARCH_SPEED (5000) /* 5000x normal speed */
-
-/* generic timings; use player-specific information where appropriate */
-#define GENERIC_EJECT_TIME (attotime::from_seconds(5))
-#define GENERIC_SPINUP_TIME (attotime::from_seconds(2))
-#define GENERIC_LOAD_TIME (attotime::from_seconds(5))
-
-
-
-/***************************************************************************
- MACROS
-***************************************************************************/
-
-#define SCANNING_PARAM(speed,duration) (((speed) << 8) | ((duration) & 0xff))
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* core-specific and player-specific data */
-typedef struct _ldplayer_data ldplayer_data;
-typedef struct _ldcore_data ldcore_data;
-
-
-/* player state */
-typedef struct _ldplayer_state ldplayer_state;
-struct _ldplayer_state
-{
- UINT8 state; /* current state */
- INT32 substate; /* internal sub-state; starts at 0 on any state change */
- INT32 param; /* parameter for current state */
- attotime endtime; /* minimum ending time for current state */
-};
-
-
-/* generic data */
-typedef struct _laserdisc_state laserdisc_state;
-struct _laserdisc_state
-{
- device_t * device; /* pointer to owning device */
- screen_device * screen; /* pointer to the screen device */
- ldcore_data * core; /* private core data */
- ldplayer_data * player; /* private player data */
-
- ldplayer_state state; /* active state */
- ldplayer_state savestate; /* saved state during temporary operations */
-};
-
-
-/* player-specific callbacks */
-typedef void (*laserdisc_init_func)(laserdisc_state *ld);
-typedef void (*laserdisc_vsync_func)(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-typedef INT32 (*laserdisc_update_func)(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-typedef void (*laserdisc_overlay_func)(laserdisc_state *ld, bitmap_t &bitmap);
-typedef void (*laserdisc_w_func)(laserdisc_state *ld, UINT8 prev, UINT8 newval);
-typedef UINT8 (*laserdisc_r_func)(laserdisc_state *ld);
-
-
-/* player configuration */
-typedef struct _ldplayer_interface ldplayer_interface;
-struct _ldplayer_interface
-{
- int type; /* type of the player */
- size_t statesize; /* size of the state */
- const char * name; /* name of the player */
- const char * shortname; /* shortname of the player */
- const rom_entry * romregion; /* pointer to ROM region information */
- machine_config_constructor machine_config; /* pointer to machine configuration */
- laserdisc_init_func init; /* initialization callback */
- laserdisc_vsync_func vsync; /* vsync begin callback */
- laserdisc_update_func update; /* update callback (line 16) */
- laserdisc_overlay_func overlay; /* overlay callback */
- laserdisc_w_func writedata; /* parallel data write */
- laserdisc_w_func writeline[LASERDISC_INPUT_LINES]; /* single line write */
- laserdisc_r_func readdata; /* parallel data read */
- laserdisc_r_func readline[LASERDISC_OUTPUT_LINES]; /* single line read */
-};
-
-
-
-/***************************************************************************
- GLOBAL VARIABLES
-***************************************************************************/
-
-/* defined by each player */
-extern const ldplayer_interface pr7820_interface;
-extern const ldplayer_interface pr8210_interface;
-extern const ldplayer_interface simutrek_interface;
-extern const ldplayer_interface ldv1000_interface;
-extern const ldplayer_interface ldp1450_interface;
-extern const ldplayer_interface vp931_interface;
-extern const ldplayer_interface vp932_interface;
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-
-/* ----- player interface ----- */
-
-/* return a token with type checking from a device */
-laserdisc_state *ldcore_get_safe_token(device_t *device);
-
-/* set the left/right audio squelch states */
-void ldcore_set_audio_squelch(laserdisc_state *ld, UINT8 squelchleft, UINT8 squelchright);
-
-/* set the video squelch state */
-void ldcore_set_video_squelch(laserdisc_state *ld, UINT8 squelch);
-
-/* dynamically change the slider speed */
-void ldcore_set_slider_speed(laserdisc_state *ld, INT32 tracks_per_vsync);
-
-/* advance the slider by a certain number of tracks */
-void ldcore_advance_slider(laserdisc_state *ld, INT32 numtracks);
-
-/* get the current slider position */
-slider_position ldcore_get_slider_position(laserdisc_state *ld);
-
-
-
-/* ----- generic implementations ----- */
-
-/* generically update in a way that works for most situations */
-INT32 ldcore_generic_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime, ldplayer_state *curstate);
-
-
-
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- is_start_of_frame - return TRUE if this is
- the start of a frame
--------------------------------------------------*/
-
-INLINE int is_start_of_frame(const vbi_metadata *vbi)
-{
- /* is it not known if the white flag or the presence of a frame code
- determines the start of frame; the former seems to be the "official"
- way, but the latter seems to be the practical implementation */
- return (vbi->white || (vbi->line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE);
-}
-
-
-/*-------------------------------------------------
- frame_from_metadata - return the frame number
- encoded in the metadata, if present, or
- FRAME_NOT_PRESENT
--------------------------------------------------*/
-
-INLINE int frame_from_metadata(const vbi_metadata *metadata)
-{
- if ((metadata->line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- return VBI_CAV_PICTURE(metadata->line1718);
- else if (metadata->line1718 == VBI_CODE_LEADIN)
- return FRAME_LEAD_IN;
- else if (metadata->line1718 == VBI_CODE_LEADOUT)
- return FRAME_LEAD_OUT;
- return FRAME_NOT_PRESENT;
-}
-
-
-/*-------------------------------------------------
- chapter_from_metadata - return the chapter
- number encoded in the metadata, if present,
- or CHAPTER_NOT_PRESENT
--------------------------------------------------*/
-
-INLINE int chapter_from_metadata(const vbi_metadata *metadata)
-{
- if ((metadata->line1718 & VBI_MASK_CHAPTER) == VBI_CODE_CHAPTER)
- return VBI_CHAPTER(metadata->line1718);
- else if (metadata->line1718 == VBI_CODE_LEADIN)
- return CHAPTER_LEAD_IN;
- else if (metadata->line1718 == VBI_CODE_LEADOUT)
- return CHAPTER_LEAD_OUT;
- return CHAPTER_NOT_PRESENT;
-}
-
-
-#endif
diff --git a/src/emu/machine/ldpr8210.c b/src/emu/machine/ldpr8210.c
index 39d0e715ca3..5bc2036f480 100644
--- a/src/emu/machine/ldpr8210.c
+++ b/src/emu/machine/ldpr8210.c
@@ -4,8 +4,36 @@
Pioneer PR-8210 laserdisc emulation.
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
**************************************************************************
@@ -18,15 +46,16 @@
*************************************************************************/
+#define ADDRESS_MAP_MODERN
+
#include "emu.h"
-#include "ldcore.h"
-#include "cpu/mcs48/mcs48.h"
+#include "ldpr8210.h"
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
#define LOG_VBLANK_VBI 0
#define LOG_SERIAL 0
@@ -34,11 +63,11 @@
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
-/* Overlay constants, related to 720-pixel wide capture */
+// Overlay constants, related to 720-pixel wide capture
#define OVERLAY_GROUP0_X (82.0f / 720.0f)
#define OVERLAY_GROUP1_X (162.0f / 720.0f)
#define OVERLAY_GROUP2_X (322.0f / 720.0f)
@@ -49,11 +78,11 @@
#define OVERLAY_X_PIXELS 5
#define OVERLAY_Y_PIXELS 7
-/* scanning speeds */
-#define SCAN_SPEED (2000 / 30) /* 2000 frames/second */
-#define SEEK_FAST_SPEED (4000 / 30) /* 4000 frames/second */
+// scanning speeds
+#define SCAN_SPEED (2000 / 30) // 2000 frames/second
+#define SEEK_FAST_SPEED (4000 / 30) // 4000 frames/second
-/* serial timing, mostly from the service manual, derived from the XTAL */
+// serial timing, mostly from the service manual, derived from the XTAL
#define SERIAL_CLOCK XTAL_455kHz
#define SERIAL_0_BIT_TIME attotime::from_hz((double)SERIAL_CLOCK / 512)
#define SERIAL_1_BIT_TIME attotime::from_hz((double)SERIAL_CLOCK / 1024)
@@ -64,224 +93,98 @@
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* PIA data */
-typedef struct _pioneer_pia pioneer_pia;
-struct _pioneer_pia
-{
- UINT8 frame[7]; /* (20-26) 7 characters for the chapter/frame */
- UINT8 text[17]; /* (20-30) 17 characters for the display */
- UINT8 control; /* (40) control lines */
- UINT8 latchdisplay; /* flag: set if the display was latched */
- UINT8 portb; /* (60) port B value (LEDs) */
- UINT8 display; /* (80) display enable */
- UINT8 porta; /* (A0) port A value (from serial decoder) */
- UINT8 vbi1; /* (C0) VBI decoding state 1 */
- UINT8 vbi2; /* (E0) VBI decoding state 2 */
-};
-
-
-/* Simutrek-specific data */
-typedef struct _simutrek_data simutrek_data;
-struct _simutrek_data
-{
- device_t *cpu; /* 8748 CPU device */
- UINT8 audio_squelch; /* audio squelch value */
- UINT8 data; /* parallel data for simutrek */
- UINT8 data_ready; /* ready flag for simutrek data */
- UINT8 port2; /* 8748 port 2 state */
- UINT8 controlnext; /* latch to control next pair of fields */
- UINT8 controlthis; /* latched value for our control over the current pair of fields */
-};
-
-
-/* player-specific data */
-struct _ldplayer_data
-{
- /* serial/command interface processing */
- UINT8 lastcommand; /* last command seen */
- UINT16 accumulator; /* bit accumulator */
- attotime lastcommandtime; /* time of the last command */
- attotime lastbittime; /* time of last bit received */
- attotime firstbittime; /* time of first bit in command */
-
- /* low-level emulation data */
- device_t *cpu; /* 8049 CPU device */
- attotime slowtrg; /* time of the last SLOW TRG */
- pioneer_pia pia; /* PIA state */
- UINT8 vsync; /* live VSYNC state */
- UINT8 port1; /* 8049 port 1 state */
- UINT8 port2; /* 8049 port 2 state */
-
- /* Simutrek-specific data */
- simutrek_data simutrek; /* Simutrek-specific data */
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void pr8210_init(laserdisc_state *ld);
-static void pr8210_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static INT32 pr8210_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static void pr8210_overlay(laserdisc_state *ld, bitmap_t &bitmap);
-static void pr8210_control_w(laserdisc_state *ld, UINT8 prev, UINT8 data);
-
-static TIMER_CALLBACK( vsync_off );
-static TIMER_CALLBACK( vbi_data_fetch );
-
-static READ8_HANDLER( pr8210_pia_r );
-static WRITE8_HANDLER( pr8210_pia_w );
-static READ8_HANDLER( pr8210_bus_r );
-static WRITE8_HANDLER( pr8210_port1_w );
-static WRITE8_HANDLER( pr8210_port2_w );
-static READ8_HANDLER( pr8210_t0_r );
-static READ8_HANDLER( pr8210_t1_r );
-
-static void overlay_draw_group(bitmap_t &bitmap, const UINT8 *text, int count, float xstart);
-static void overlay_erase(bitmap_t &bitmap, float xstart, float xend);
-static void overlay_draw_char(bitmap_t &bitmap, UINT8 ch, float xstart);
-
-static void simutrek_init(laserdisc_state *ld);
-static void simutrek_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static INT32 simutrek_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static UINT8 simutrek_ready_r(laserdisc_state *ld);
-static UINT8 simutrek_status_r(laserdisc_state *ld);
-static void simutrek_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data);
-
-static TIMER_CALLBACK( simutrek_latched_data_w );
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
-static READ8_HANDLER( simutrek_port2_r );
-static WRITE8_HANDLER( simutrek_port2_w );
-static READ8_HANDLER( simutrek_data_r );
-static READ8_HANDLER( simutrek_t0_r );
+// devices
+const device_type PIONEER_PR8210 = &device_creator<pioneer_pr8210_device>;
+const device_type SIMUTREK_SPECIAL = &device_creator<simutrek_special_device>;
-
-/***************************************************************************
- GLOBAL VARIABLES
-***************************************************************************/
-
-/* bitmaps for the characters */
+// bitmaps for the characters
static const UINT8 text_bitmap[0x40][7] =
{
- { 0 }, /* @ */
- { 0x20,0x50,0x88,0x88,0xf8,0x88,0x88 }, /* A */
- { 0 }, /* B */
- { 0x70,0x88,0x80,0x80,0x80,0x88,0x70 }, /* C */
- { 0 }, /* D */
- { 0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8 }, /* E */
- { 0xf8,0x80,0x80,0xf0,0x80,0x80,0x80 }, /* F */
- { 0 }, /* G */
- { 0x88,0x88,0x88,0xf8,0x88,0x88,0x88 }, /* H */
- { 0 }, /* I */
- { 0 }, /* J */
- { 0 }, /* K */
- { 0 }, /* L */
- { 0x88,0xd8,0xa8,0xa8,0xa8,0x88,0x88 }, /* M */
- { 0 }, /* N */
- { 0 }, /* O */
- { 0xf0,0x88,0x88,0xf0,0x80,0x80,0x80 }, /* P */
- { 0 }, /* Q */
- { 0xf0,0x88,0x88,0xf0,0xa0,0x90,0x88 }, /* R */
- { 0x70,0x88,0x80,0x70,0x08,0x88,0x70 }, /* S */
- { 0 }, /* T */
- { 0 }, /* U */
- { 0 }, /* V */
- { 0 }, /* W */
- { 0 }, /* X */
- { 0 }, /* Y */
- { 0 }, /* Z */
- { 0 }, /* [ */
- { 0 }, /* \ */
- { 0 }, /* ] */
- { 0 }, /* ^ */
- { 0 }, /* _ */
-
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, /* <space> */
- { 0 }, /* ! */
- { 0 }, /* " */
- { 0 }, /* # */
- { 0 }, /* $ */
- { 0 }, /* % */
- { 0 }, /* & */
- { 0 }, /* ' */
- { 0 }, /* ( */
- { 0 }, /* ) */
- { 0 }, /* * */
- { 0 }, /* + */
- { 0 }, /* , */
- { 0 }, /* - */
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x40 }, /* . */
- { 0 }, /* / */
- { 0x70,0x88,0x88,0x88,0x88,0x88,0x70 }, /* 0 */
- { 0x20,0x60,0x20,0x20,0x20,0x20,0x70 }, /* 1 */
- { 0x70,0x88,0x08,0x70,0x80,0x80,0xf8 }, /* 2 */
- { 0xf8,0x08,0x10,0x30,0x08,0x88,0x70 }, /* 3 */
- { 0x10,0x30,0x50,0x90,0xf8,0x10,0x10 }, /* 4 */
- { 0xf8,0x80,0xf0,0x08,0x08,0x88,0x70 }, /* 5 */
- { 0x78,0x80,0x80,0xf0,0x88,0x88,0x70 }, /* 6 */
- { 0xf8,0x08,0x08,0x10,0x20,0x40,0x80 }, /* 7 */
- { 0x70,0x88,0x88,0x70,0x88,0x88,0x70 }, /* 8 */
- { 0x70,0x88,0x88,0x78,0x08,0x08,0xf0 }, /* 9 */
- { 0 }, /* : */
- { 0 }, /* ; */
- { 0 }, /* < */
- { 0 }, /* = */
- { 0 }, /* > */
- { 0 } /* ? */
+ { 0 }, // @
+ { 0x20,0x50,0x88,0x88,0xf8,0x88,0x88 }, // A
+ { 0 }, // B
+ { 0x70,0x88,0x80,0x80,0x80,0x88,0x70 }, // C
+ { 0 }, // D
+ { 0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8 }, // E
+ { 0xf8,0x80,0x80,0xf0,0x80,0x80,0x80 }, // F
+ { 0 }, // G
+ { 0x88,0x88,0x88,0xf8,0x88,0x88,0x88 }, // H
+ { 0 }, // I
+ { 0 }, // J
+ { 0 }, // K
+ { 0 }, // L
+ { 0x88,0xd8,0xa8,0xa8,0xa8,0x88,0x88 }, // M
+ { 0 }, // N
+ { 0 }, // O
+ { 0xf0,0x88,0x88,0xf0,0x80,0x80,0x80 }, // P
+ { 0 }, // Q
+ { 0xf0,0x88,0x88,0xf0,0xa0,0x90,0x88 }, // R
+ { 0x70,0x88,0x80,0x70,0x08,0x88,0x70 }, // S
+ { 0 }, // T
+ { 0 }, // U
+ { 0 }, // V
+ { 0 }, // W
+ { 0 }, // X
+ { 0 }, // Y
+ { 0 }, // Z
+ { 0 }, // [
+ { 0 }, // <backslash>
+ { 0 }, // ]
+ { 0 }, // ^
+ { 0 }, // _
+
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // <space>
+ { 0 }, // !
+ { 0 }, // "
+ { 0 }, // #
+ { 0 }, // $
+ { 0 }, // %
+ { 0 }, // &
+ { 0 }, // '
+ { 0 }, // (
+ { 0 }, // )
+ { 0 }, // *
+ { 0 }, // +
+ { 0 }, // ,
+ { 0 }, // -
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x40 }, // .
+ { 0 }, // /
+ { 0x70,0x88,0x88,0x88,0x88,0x88,0x70 }, // 0
+ { 0x20,0x60,0x20,0x20,0x20,0x20,0x70 }, // 1
+ { 0x70,0x88,0x08,0x70,0x80,0x80,0xf8 }, // 2
+ { 0xf8,0x08,0x10,0x30,0x08,0x88,0x70 }, // 3
+ { 0x10,0x30,0x50,0x90,0xf8,0x10,0x10 }, // 4
+ { 0xf8,0x80,0xf0,0x08,0x08,0x88,0x70 }, // 5
+ { 0x78,0x80,0x80,0xf0,0x88,0x88,0x70 }, // 6
+ { 0xf8,0x08,0x08,0x10,0x20,0x40,0x80 }, // 7
+ { 0x70,0x88,0x88,0x70,0x88,0x88,0x70 }, // 8
+ { 0x70,0x88,0x88,0x78,0x08,0x08,0xf0 }, // 9
+ { 0 }, // :
+ { 0 }, // ;
+ { 0 }, // <
+ { 0 }, // =
+ { 0 }, // >
+ { 0 } // ?
};
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- update_video_squelch - update the state of
- the video squelch
--------------------------------------------------*/
-
-INLINE void update_video_squelch(laserdisc_state *ld)
-{
- ldplayer_data *player = ld->player;
- ldcore_set_video_squelch(ld, (player->port1 & 0x20) != 0);
-}
+//**************************************************************************
+// PR-8210 ROM AND MACHINE INTERFACES
+//**************************************************************************
-
-/*-------------------------------------------------
- update_audio_squelch - update the state of
- the audio squelch
--------------------------------------------------*/
-
-INLINE void update_audio_squelch(laserdisc_state *ld)
-{
- ldplayer_data *player = ld->player;
- if (player->simutrek.cpu == NULL)
- ldcore_set_audio_squelch(ld, (player->port1 & 0x40) || !(player->pia.portb & 0x01), (player->port1 & 0x40) || !(player->pia.portb & 0x02));
- else
- ldcore_set_audio_squelch(ld, player->simutrek.audio_squelch, player->simutrek.audio_squelch);
-}
-
-
-
-/***************************************************************************
- PR-8210 ROM AND MACHINE INTERFACES
-***************************************************************************/
-
-static ADDRESS_MAP_START( pr8210_portmap, AS_IO, 8 )
- AM_RANGE(0x00, 0xff) AM_READWRITE(pr8210_pia_r, pr8210_pia_w)
- AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(pr8210_bus_r)
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(pr8210_port1_w)
- AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(pr8210_port2_w)
- AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(pr8210_t0_r)
- AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(pr8210_t1_r)
+static ADDRESS_MAP_START( pr8210_portmap, AS_IO, 8, pioneer_pr8210_device )
+ AM_RANGE(0x00, 0xff) AM_READWRITE(i8049_pia_r, i8049_pia_w)
+ AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(i8049_bus_r)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(i8049_port1_w)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8049_port2_w)
+ AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8049_t0_r)
+ AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8049_t1_r)
ADDRESS_MAP_END
@@ -298,390 +201,404 @@ ROM_END
-/***************************************************************************
- PR-8210 PLAYER INTERFACE
-***************************************************************************/
-
-const ldplayer_interface pr8210_interface =
+//**************************************************************************
+// PIONEER PR-8210 IMPLEMENTATION
+//**************************************************************************
+
+//-------------------------------------------------
+// pioneer_pr8210_device - constructor
+//-------------------------------------------------
+
+pioneer_pr8210_device::pioneer_pr8210_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, PIONEER_PR8210, "Pioneer PR-8210", "pr8210", tag, owner, clock),
+ m_control(0),
+ m_lastcommand(0),
+ m_accumulator(0),
+ m_lastcommandtime(attotime::zero),
+ m_lastbittime(attotime::zero),
+ m_firstbittime(attotime::zero),
+ m_i8049_cpu(*this, "pr8210"),
+ m_slowtrg(attotime::zero),
+ m_vsync(false),
+ m_i8049_port1(0),
+ m_i8049_port2(0)
{
- LASERDISC_TYPE_PIONEER_PR8210, /* type of the player */
- sizeof(ldplayer_data), /* size of the state */
- "Pioneer PR-8210", /* name of the player */
- "pr8210", /* shortname of the player */
- ROM_NAME(pr8210), /* pointer to ROM region information */
- MACHINE_CONFIG_NAME(pr8210), /* pointer to machine configuration */
- pr8210_init, /* initialization callback */
- pr8210_vsync, /* vsync callback */
- pr8210_update, /* update callback */
- pr8210_overlay, /* overlay callback */
- NULL, /* parallel data write */
- { /* single line write: */
- NULL, /* LASERDISC_LINE_ENTER */
- pr8210_control_w /* LASERDISC_LINE_CONTROL */
- },
- NULL, /* parallel data read */
- { /* single line read: */
- NULL, /* LASERDISC_LINE_READY */
- NULL, /* LASERDISC_LINE_STATUS */
- NULL, /* LASERDISC_LINE_COMMAND */
- NULL, /* LASERDISC_LINE_DATA_AVAIL */
- }
-};
-
-
-
-/***************************************************************************
- PIONEER PR-8210 IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- pr8210_init - player-specific initialization
--------------------------------------------------*/
+}
-static void pr8210_init(laserdisc_state *ld)
+pioneer_pr8210_device::pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, type, name, shortname, tag, owner, clock),
+ m_control(0),
+ m_lastcommand(0),
+ m_accumulator(0),
+ m_lastcommandtime(attotime::zero),
+ m_lastbittime(attotime::zero),
+ m_firstbittime(attotime::zero),
+ m_i8049_cpu(*this, "pr8210"),
+ m_slowtrg(attotime::zero),
+ m_vsync(false),
+ m_i8049_port1(0),
+ m_i8049_port2(0)
{
- astring tempstring;
- attotime curtime = ld->device->machine().time();
- ldplayer_data *player = ld->player;
-
- /* reset our state */
- memset(player, 0, sizeof(*player));
- player->lastcommandtime = curtime;
- player->firstbittime = curtime;
- player->lastbittime = curtime;
- player->slowtrg = curtime;
-
- /* find our CPU */
- player->cpu = ld->device->subdevice("pr8210");
- assert(player->cpu != NULL);
-
- /* we don't have the Simutrek player overrides */
- player->simutrek.cpu = NULL;
- player->simutrek.audio_squelch = FALSE;
}
+
+//-------------------------------------------------
+// control_w - write callback when the CONTROL
+// line is toggled
+//-------------------------------------------------
-/*-------------------------------------------------
- pr8210_vsync - VSYNC callback, called at the
- start of the blanking period
--------------------------------------------------*/
-
-static void pr8210_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+void pioneer_pr8210_device::control_w(UINT8 data)
{
- ldplayer_data *player = ld->player;
-
- /* logging */
- if (LOG_VBLANK_VBI)
+ // set the new value and remember the last
+ UINT8 prev = m_control;
+ m_control = data;
+
+ // handle rising edge
+ if (prev != ASSERT_LINE && data == ASSERT_LINE)
{
- if ((vbi->line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- printf("%3d:VSYNC(%d,%05d)\n", ld->screen->vpos(), fieldnum, VBI_CAV_PICTURE(vbi->line1718));
- else
- printf("%3d:VSYNC(%d)\n", ld->screen->vpos(), fieldnum);
- }
+ // get the time difference from the last assert
+ // and update our internal command time
+ attotime curtime = machine().time();
+ attotime delta = curtime - m_lastbittime;
+ m_lastbittime = curtime;
+
+ // if we timed out since the first bit, reset the accumulator
+ attotime overalldelta = curtime - m_firstbittime;
+ if (overalldelta > SERIAL_MAX_WORD_TIME || delta > SERIAL_MAX_BIT_TIME)
+ {
+ m_firstbittime = curtime;
+ m_accumulator = 0x5555;
+ if (LOG_SERIAL)
+ printf("Reset accumulator\n");
+ }
+
+ // 0 bit delta is 1.05 msec, 1 bit delta is 2.11 msec
+ int longpulse = (delta < SERIAL_MIDPOINT_TIME) ? 0 : 1;
+ m_accumulator = (m_accumulator << 1) | longpulse;
+
+ // log the deltas for debugging
+ if (LOG_SERIAL)
+ {
+ int usecdiff = (int)(delta.attoseconds / ATTOSECONDS_IN_USEC(1));
+ printf("bitdelta = %5d (%d) - accum = %04X\n", usecdiff, longpulse, m_accumulator);
+ }
+
+ // if we have a complete command, signal it
+ // a complete command is 0,0,1 followed by 5 bits, followed by 0,0
+ if ((m_accumulator & 0x383) == 0x80)
+ {
+ // data is stored to the PIA in bit-reverse order
+ UINT8 newcommand = (m_accumulator >> 2) & 0x1f;
+ m_pia.porta = BITSWAP8(newcommand, 0,1,2,3,4,5,6,7);
+
+ // the MCU logic requires a 0 to execute many commands; however, nobody
+ // consistently sends a 0, whereas they do tend to send duplicate commands...
+ // if we assume that each duplicate causes a 0, we get the correct results
+ attotime rejectuntil = m_lastcommandtime + SERIAL_REJECT_DUPLICATE_TIME;
+ m_lastcommandtime = curtime;
+ if (m_pia.porta == m_lastcommand && curtime < rejectuntil)
+ m_pia.porta = 0x00;
+ else
+ m_lastcommand = m_pia.porta;
- /* signal VSYNC and set a timer to turn it off */
- player->vsync = TRUE;
- ld->device->machine().scheduler().timer_set(ld->screen->scan_period() * 4, FUNC(vsync_off), 0, ld);
+ // log the command and wait for a keypress
+ if (LOG_SERIAL)
+ printf("--- Command = %02X\n", m_pia.porta >> 3);
- /* also set a timer to fetch the VBI data when it is ready */
- ld->device->machine().scheduler().timer_set(ld->screen->time_until_pos(19*2), FUNC(vbi_data_fetch), 0, ld);
+ // reset the first bit time so that the accumulator clears on the next write
+ m_firstbittime = curtime - SERIAL_MAX_WORD_TIME;
+ }
+ }
}
-/*-------------------------------------------------
- pr8210_update - update callback, called on
- the first visible line of the frame
--------------------------------------------------*/
+//-------------------------------------------------
+// device_start - device initialization
+//-------------------------------------------------
-static INT32 pr8210_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+void pioneer_pr8210_device::device_start()
{
- ldplayer_data *player = ld->player;
- UINT8 spdl_on = !(player->port1 & 0x10);
+ // pass through to the parent
+ laserdisc_device::device_start();
+}
- /* logging */
- if (LOG_VBLANK_VBI)
- printf("%3d:Update(%d)\n", ld->screen->vpos(), fieldnum);
- /* if the spindle is on, we advance by 1 track after completing field #1 */
- return (spdl_on) ? fieldnum : 0;
+//-------------------------------------------------
+// device_reset - device reset
+//-------------------------------------------------
+
+void pioneer_pr8210_device::device_reset()
+{
+ // pass through to the parent
+ laserdisc_device::device_reset();
+
+ // reset our state
+ attotime curtime = machine().time();
+ m_lastcommandtime = curtime;
+ m_firstbittime = curtime;
+ m_lastbittime = curtime;
+ m_slowtrg = curtime;
}
-/*-------------------------------------------------
- pr8210_overlay - overlay callback, called
- during frame processing in update to overlay
- player data
--------------------------------------------------*/
+//-------------------------------------------------
+// device_timer - handle timers set by this
+// device
+//-------------------------------------------------
-static void pr8210_overlay(laserdisc_state *ld, bitmap_t &bitmap)
+void pioneer_pr8210_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- ldplayer_data *player = ld->player;
-
- /* custom display */
- if (player->pia.display)
+ switch (id)
{
- overlay_draw_group(bitmap, &player->pia.text[2], 5, OVERLAY_GROUP1_X);
- overlay_draw_group(bitmap, &player->pia.text[7], 5, OVERLAY_GROUP2_X);
- overlay_draw_group(bitmap, &player->pia.text[12], 5, OVERLAY_GROUP3_X);
- }
+ // update the VBI data in the PIA as soon as it is ready;
+ // this must happen early in the frame because the player
+ // logic relies on fetching it here
+ case TID_VBI_DATA_FETCH:
- /* chapter/frame display */
- else
- {
- /* frame display */
- if (player->pia.latchdisplay & 2)
- overlay_draw_group(bitmap, &player->pia.text[2], 5, OVERLAY_GROUP1_X);
+ // logging
+ if (LOG_VBLANK_VBI)
+ {
+ UINT32 line1718 = get_field_code(LASERDISC_CODE_LINE1718, FALSE);
+ if ((line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ printf("%3d:VBI(%05d)\n", screen().vpos(), VBI_CAV_PICTURE(line1718));
+ else
+ printf("%3d:VBI()\n", screen().vpos());
+ }
- /* chapter overlay */
- if (player->pia.latchdisplay & 1)
- overlay_draw_group(bitmap, &player->pia.text[0], 2, OVERLAY_GROUP0_X);
+ // update PIA registers based on vbi code
+ m_pia.vbi1 = 0xff;
+ m_pia.vbi2 = 0xff;
+ if (focus_on() && laser_on())
+ {
+ UINT32 line16 = get_field_code(LASERDISC_CODE_LINE16, FALSE);
+ UINT32 line1718 = get_field_code(LASERDISC_CODE_LINE1718, FALSE);
+ if (line1718 == VBI_CODE_LEADIN)
+ m_pia.vbi1 &= ~0x01;
+ if (line1718 == VBI_CODE_LEADOUT)
+ m_pia.vbi1 &= ~0x02;
+ if (line16 == VBI_CODE_STOP)
+ m_pia.vbi1 &= ~0x04;
+ // unsure what this bit means: m_pia.vbi1 &= ~0x08;
+ if ((line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ {
+ m_pia.vbi1 &= ~0x10;
+ m_pia.frame[2] = 0xf0 | ((line1718 >> 16) & 0x07);
+ m_pia.frame[3] = 0xf0 | ((line1718 >> 12) & 0x0f);
+ m_pia.frame[4] = 0xf0 | ((line1718 >> 8) & 0x0f);
+ m_pia.frame[5] = 0xf0 | ((line1718 >> 4) & 0x0f);
+ m_pia.frame[6] = 0xf0 | ((line1718 >> 0) & 0x0f);
+ }
+ if ((line1718 & VBI_MASK_CHAPTER) == VBI_CODE_CHAPTER)
+ {
+ m_pia.vbi2 &= ~0x01;
+ m_pia.frame[0] = 0xf0 | ((line1718 >> 16) & 0x07);
+ m_pia.frame[1] = 0xf0 | ((line1718 >> 12) & 0x0f);
+ }
+ }
+ break;
+
+ // clear the VSYNC flag
+ case TID_VSYNC_OFF:
+ m_vsync = false;
+ break;
+
+ // pass everything else onto the parent
+ default:
+ laserdisc_device::device_timer(timer, id, param, ptr);
+ break;
}
- player->pia.latchdisplay = 0;
}
-/*-------------------------------------------------
- pr8210_control_w - write callback when the
- CONTROL line is toggled
--------------------------------------------------*/
+//-------------------------------------------------
+// device_rom_region - return a pointer to our
+// ROM region definitions
+//-------------------------------------------------
-static void pr8210_control_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
+const rom_entry *pioneer_pr8210_device::device_rom_region() const
{
- ldplayer_data *player = ld->player;
+ return ROM_NAME(pr8210);
+}
- /* handle rising edge */
- if (prev != ASSERT_LINE && data == ASSERT_LINE)
- {
- attotime curtime = ld->device->machine().time();
- attotime delta, overalldelta;
- int longpulse;
- /* get the time difference from the last assert */
- /* and update our internal command time */
- delta = curtime - player->lastbittime;
- player->lastbittime = curtime;
+//-------------------------------------------------
+// device_mconfig_additions - return a pointer to
+// our machine config fragment
+//-------------------------------------------------
- /* if we timed out since the first bit, reset the accumulator */
- overalldelta = curtime - player->firstbittime;
- if (overalldelta > SERIAL_MAX_WORD_TIME || delta > SERIAL_MAX_BIT_TIME)
- {
- player->firstbittime = curtime;
- player->accumulator = 0x5555;
- if (LOG_SERIAL)
- printf("Reset accumulator\n");
- }
+machine_config_constructor pioneer_pr8210_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME(pr8210);
+}
- /* 0 bit delta is 1.05 msec, 1 bit delta is 2.11 msec */
- longpulse = (delta < SERIAL_MIDPOINT_TIME) ? 0 : 1;
- player->accumulator = (player->accumulator << 1) | longpulse;
- /* log the deltas for debugging */
- if (LOG_SERIAL)
- {
- int usecdiff = (int)(delta.attoseconds / ATTOSECONDS_IN_USEC(1));
- printf("bitdelta = %5d (%d) - accum = %04X\n", usecdiff, longpulse, player->accumulator);
- }
+//-------------------------------------------------
+// player_vsync - VSYNC callback, called at the
+// start of the blanking period
+//-------------------------------------------------
- /* if we have a complete command, signal it */
- /* a complete command is 0,0,1 followed by 5 bits, followed by 0,0 */
- if ((player->accumulator & 0x383) == 0x80)
- {
- UINT8 newcommand = (player->accumulator >> 2) & 0x1f;
- attotime rejectuntil;
-
- /* data is stored to the PIA in bit-reverse order */
- player->pia.porta = BITSWAP8(newcommand, 0,1,2,3,4,5,6,7);
-
- /* the MCU logic requires a 0 to execute many commands; however, nobody
- consistently sends a 0, whereas they do tend to send duplicate commands...
- if we assume that each duplicate causes a 0, we get the correct results */
- rejectuntil = player->lastcommandtime + SERIAL_REJECT_DUPLICATE_TIME;
- player->lastcommandtime = curtime;
- if (player->pia.porta == player->lastcommand && curtime < rejectuntil)
- player->pia.porta = 0x00;
- else
- player->lastcommand = player->pia.porta;
+void pioneer_pr8210_device::player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime)
+{
+ // logging
+ if (LOG_VBLANK_VBI)
+ {
+ if ((vbi.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ printf("%3d:VSYNC(%d,%05d)\n", screen().vpos(), fieldnum, VBI_CAV_PICTURE(vbi.line1718));
+ else
+ printf("%3d:VSYNC(%d)\n", screen().vpos(), fieldnum);
+ }
- /* log the command and wait for a keypress */
- if (LOG_SERIAL)
- printf("--- Command = %02X\n", player->pia.porta >> 3);
+ // signal VSYNC and set a timer to turn it off
+ m_vsync = true;
+ timer_set(screen().scan_period() * 4, TID_VSYNC_OFF);
- /* reset the first bit time so that the accumulator clears on the next write */
- player->firstbittime = curtime - SERIAL_MAX_WORD_TIME;
- }
- }
+ // also set a timer to fetch the VBI data when it is ready
+ timer_set(screen().time_until_pos(19*2), TID_VBI_DATA_FETCH);
}
-/*-------------------------------------------------
- vsync_off - timer callback to clear the VSYNC
- flag
--------------------------------------------------*/
+//-------------------------------------------------
+// player_update - update callback, called on the
+// first visible line of the frame
+//-------------------------------------------------
-static TIMER_CALLBACK( vsync_off )
+INT32 pioneer_pr8210_device::player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ld->player->vsync = FALSE;
+ // logging
+ if (LOG_VBLANK_VBI)
+ printf("%3d:Update(%d)\n", screen().vpos(), fieldnum);
+
+ // if the spindle is on, we advance by 1 track after completing field #1
+ return spdl_on() ? fieldnum : 0;
}
-/*-------------------------------------------------
- vbi_data_fetch - timer callback to update the
- VBI data in the PIA as soon as it is ready;
- this must happy early in the frame because
- the player logic relies on fetching it here
--------------------------------------------------*/
+//-------------------------------------------------
+// player_overlay - overlay callback, called
+// during frame processing in update to overlay
+// player data
+//-------------------------------------------------
-static TIMER_CALLBACK( vbi_data_fetch )
+void pioneer_pr8210_device::player_overlay(bitmap_yuy16 &bitmap)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
- UINT8 focus_on = !(player->port1 & 0x08);
- UINT8 laser_on = !(player->port2 & 0x01);
- UINT32 line16 = laserdisc_get_field_code(ld->device, LASERDISC_CODE_LINE16, FALSE);
- UINT32 line1718 = laserdisc_get_field_code(ld->device, LASERDISC_CODE_LINE1718, FALSE);
-
- /* logging */
- if (LOG_VBLANK_VBI)
+ // custom display
+ if (m_pia.display)
{
- if ((line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- printf("%3d:VBI(%05d)\n", ld->screen->vpos(), VBI_CAV_PICTURE(line1718));
- else
- printf("%3d:VBI()\n", ld->screen->vpos());
+ overlay_draw_group(bitmap, &m_pia.text[2], 5, OVERLAY_GROUP1_X);
+ overlay_draw_group(bitmap, &m_pia.text[7], 5, OVERLAY_GROUP2_X);
+ overlay_draw_group(bitmap, &m_pia.text[12], 5, OVERLAY_GROUP3_X);
}
- /* update PIA registers based on vbi code */
- player->pia.vbi1 = 0xff;
- player->pia.vbi2 = 0xff;
- if (focus_on && laser_on)
+ // chapter/frame display
+ else
{
- if (line1718 == VBI_CODE_LEADIN)
- player->pia.vbi1 &= ~0x01;
- if (line1718 == VBI_CODE_LEADOUT)
- player->pia.vbi1 &= ~0x02;
- if (line16 == VBI_CODE_STOP)
- player->pia.vbi1 &= ~0x04;
- /* unsure what this bit means: player->pia.vbi1 &= ~0x08; */
- if ((line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- {
- player->pia.vbi1 &= ~0x10;
- player->pia.frame[2] = 0xf0 | ((line1718 >> 16) & 0x07);
- player->pia.frame[3] = 0xf0 | ((line1718 >> 12) & 0x0f);
- player->pia.frame[4] = 0xf0 | ((line1718 >> 8) & 0x0f);
- player->pia.frame[5] = 0xf0 | ((line1718 >> 4) & 0x0f);
- player->pia.frame[6] = 0xf0 | ((line1718 >> 0) & 0x0f);
- }
- if ((line1718 & VBI_MASK_CHAPTER) == VBI_CODE_CHAPTER)
- {
- player->pia.vbi2 &= ~0x01;
- player->pia.frame[0] = 0xf0 | ((line1718 >> 16) & 0x07);
- player->pia.frame[1] = 0xf0 | ((line1718 >> 12) & 0x0f);
- }
+ // frame display
+ if (m_pia.latchdisplay & 2)
+ overlay_draw_group(bitmap, &m_pia.text[2], 5, OVERLAY_GROUP1_X);
+
+ // chapter overlay
+ if (m_pia.latchdisplay & 1)
+ overlay_draw_group(bitmap, &m_pia.text[0], 2, OVERLAY_GROUP0_X);
}
+ m_pia.latchdisplay = 0;
}
-/*-------------------------------------------------
- pr8210_pia_r - handle reads from the mystery
- Pioneer PIA
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_pia_r - handle reads from the mystery
+// Pioneer PIA
+//-------------------------------------------------
-static READ8_HANDLER( pr8210_pia_r )
+READ8_MEMBER( pioneer_pr8210_device::i8049_pia_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
UINT8 result = 0xff;
-
switch (offset)
{
- /* (20-26) 7 characters for the chapter/frame */
+ // (20-26) 7 characters for the chapter/frame
case 0x20: case 0x21:
case 0x22: case 0x23: case 0x24: case 0x25: case 0x26:
- result = player->pia.frame[offset - 0x20];
+ result = m_pia.frame[offset - 0x20];
break;
- /* (1D-1F,27) invalid read but normal */
+ // (1D-1F,27) invalid read but normal
case 0x1d: case 0x1e: case 0x1f:
case 0x27:
break;
- /* (A0) port A value (from serial decoder) */
+ // (A0) port A value (from serial decoder)
case 0xa0:
- result = player->pia.porta;
+ result = m_pia.porta;
break;
- /* (C0) VBI decoding state 1 */
+ // (C0) VBI decoding state 1
case 0xc0:
if (LOG_VBLANK_VBI)
- printf("%3d:PIA(C0)\n", ld->screen->vpos());
- result = player->pia.vbi1;
+ printf("%3d:PIA(C0)\n", screen().vpos());
+ result = m_pia.vbi1;
break;
- /* (E0) VBI decoding state 2 */
+ // (E0) VBI decoding state 2
case 0xe0:
if (LOG_VBLANK_VBI)
- printf("%3d:PIA(E0)\n", ld->screen->vpos());
- result = player->pia.vbi2;
+ printf("%3d:PIA(E0)\n", screen().vpos());
+ result = m_pia.vbi2;
break;
default:
- mame_printf_debug("%03X:Unknown PR-8210 PIA read from offset %02X\n", cpu_get_pc(&space->device()), offset);
+ mame_printf_debug("%03X:Unknown PR-8210 PIA read from offset %02X\n", cpu_get_pc(&space.device()), offset);
break;
}
return result;
}
-/*-------------------------------------------------
- pr8210_pia_w - handle writes to the mystery
- Pioneer PIA
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_pia_w - handle writes to the mystery
+// Pioneer PIA
+//-------------------------------------------------
-static WRITE8_HANDLER( pr8210_pia_w )
+WRITE8_MEMBER( pioneer_pr8210_device::i8049_pia_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
UINT8 value;
-
switch (offset)
{
- /* (20-30) 17 characters for the display */
+ // (20-30) 17 characters for the display
case 0x20: case 0x21:
case 0x22: case 0x23: case 0x24: case 0x25: case 0x26:
case 0x27: case 0x28: case 0x29: case 0x2a: case 0x2b:
case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30:
- player->pia.text[offset - 0x20] = data;
+ m_pia.text[offset - 0x20] = data;
break;
- /* (40) control lines */
+ // (40) control lines
case 0x40:
- /* toggle bit 0 to latch chapter number into display area */
- if (!(data & 0x01) && (player->pia.control & 0x01))
+ // toggle bit 0 to latch chapter number into display area
+ if (!(data & 0x01) && (m_pia.control & 0x01))
{
- memcpy(&player->pia.text[0], &player->pia.frame[0], 2);
- player->pia.latchdisplay |= 1;
+ memcpy(&m_pia.text[0], &m_pia.frame[0], 2);
+ m_pia.latchdisplay |= 1;
}
- /* toggle bit 1 to latch frame number into display area */
- if (!(data & 0x02) && (player->pia.control & 0x02))
+ // toggle bit 1 to latch frame number into display area
+ if (!(data & 0x02) && (m_pia.control & 0x02))
{
- memcpy(&player->pia.text[2], &player->pia.frame[2], 5);
- player->pia.latchdisplay |= 2;
+ memcpy(&m_pia.text[2], &m_pia.frame[2], 5);
+ m_pia.latchdisplay |= 2;
}
- player->pia.control = data;
+ m_pia.control = data;
break;
- /* (60) port B value (LEDs) */
+ // (60) port B value (LEDs)
case 0x60:
- /* these 4 are direct-connect */
+ // these 4 are direct-connect
output_set_value("pr8210_audio1", (data & 0x01) != 0);
output_set_value("pr8210_audio2", (data & 0x02) != 0);
output_set_value("pr8210_clv", (data & 0x04) != 0);
output_set_value("pr8210_cav", (data & 0x08) != 0);
- /* remaining 3 bits select one of 5 LEDs via a mux */
+ // remaining 3 bits select one of 5 LEDs via a mux
value = ((data & 0x40) >> 6) | ((data & 0x20) >> 4) | ((data & 0x10) >> 2);
output_set_value("pr8210_srev", (value == 0));
output_set_value("pr8210_sfwd", (value == 1));
@@ -689,29 +606,29 @@ static WRITE8_HANDLER( pr8210_pia_w )
output_set_value("pr8210_step", (value == 3));
output_set_value("pr8210_pause", (value == 4));
- player->pia.portb = data;
- update_audio_squelch(ld);
+ m_pia.portb = data;
+ update_audio_squelch();
break;
- /* (80) display enable */
+ // (80) display enable
case 0x80:
- player->pia.display = data & 0x01;
+ m_pia.display = data & 0x01;
break;
- /* no other writes known */
+ // no other writes known
default:
- mame_printf_debug("%03X:Unknown PR-8210 PIA write to offset %02X = %02X\n", cpu_get_pc(&space->device()), offset, data);
+ mame_printf_debug("%03X:Unknown PR-8210 PIA write to offset %02X = %02X\n", cpu_get_pc(&space.device()), offset, data);
break;
}
}
-/*-------------------------------------------------
- pr8210_bus_r - handle reads from the 8049 BUS
- input, which is enabled via the PIA above
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_bus_r - handle reads from the 8049 BUS
+// input, which is enabled via the PIA above
+//-------------------------------------------------
-static READ8_HANDLER( pr8210_bus_r )
+READ8_MEMBER( pioneer_pr8210_device::i8049_bus_r )
{
/*
$80 = n/c
@@ -722,43 +639,40 @@ static READ8_HANDLER( pr8210_bus_r )
$04 = (in) SIZE 8/12
$02 = (in) FG via op-amp (spindle motor stop detector)
$01 = (in) SLOW TIMER OUT
- */
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- slider_position sliderpos = ldcore_get_slider_position(ld);
- UINT8 focus_on = !(player->port1 & 0x08);
- UINT8 spdl_on = !(player->port1 & 0x10);
+ */
+
UINT8 result = 0x00;
- /* bus bit 6: slider position limit detector, inside and outside */
+ // bus bit 6: slider position limit detector, inside and outside
+ slider_position sliderpos = get_slider_position();
if (sliderpos != SLIDER_MINIMUM && sliderpos != SLIDER_MAXIMUM)
result |= 0x40;
- /* bus bit 4: /FOCUS LOCK */
- if (!focus_on)
+ // bus bit 4: /FOCUS LOCK
+ if (!focus_on())
result |= 0x10;
- /* bus bit 3: /SPDL LOCK */
- if (!spdl_on)
+ // bus bit 3: /SPDL LOCK
+ if (!spdl_on())
result |= 0x08;
- /* bus bit 1: spindle motor stop detector */
- if (!spdl_on)
+ // bus bit 1: spindle motor stop detector
+ if (!spdl_on())
result |= 0x02;
- /* bus bit 0: SLOW TIMER OUT */
+ // bus bit 0: SLOW TIMER OUT
- /* loop at beginning waits for $40=0, $02=1 */
+ // loop at beginning waits for $40=0, $02=1
return result;
}
-/*-------------------------------------------------
- pr8210_port1_w - handle writes to the 8049
- port #1
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port1_w - handle writes to the 8049
+// port #1
+//-------------------------------------------------
-static WRITE8_HANDLER( pr8210_port1_w )
+WRITE8_MEMBER( pioneer_pr8210_device::i8049_port1_w )
{
/*
$80 = (out) SCAN C (F/R)
@@ -770,57 +684,52 @@ static WRITE8_HANDLER( pr8210_port1_w )
$02 = (out) SCAN A (/SCAN)
$01 = (out) JUMP TRG (jump back trigger, clock on high->low)
*/
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->port1;
- int direction;
+
+ // set the new value
+ UINT8 prev = m_i8049_port1;
+ m_i8049_port1 = data;
- /* set the new value */
- player->port1 = data;
+ // bit 7 selects the direction of slider movement for JUMP TRG and scanning
+ int direction = (data & 0x80) ? 1 : -1;
- /* bit 7 selects the direction of slider movement for JUMP TRG and scanning */
- direction = (data & 0x80) ? 1 : -1;
-
- /* on the falling edge of bit 0, jump one track in either direction */
+ // on the falling edge of bit 0, jump one track in either direction
if (!(data & 0x01) && (prev & 0x01))
{
- /* special override for the Simutrek, which takes over control of this is some situations */
- if (player->simutrek.cpu == NULL || !player->simutrek.controlthis)
+ // special override for the Simutrek, which takes over control of this is some situations
+ if (!override_control())
{
if (LOG_SIMUTREK)
- printf("%3d:JUMP TRG\n", ld->screen->vpos());
- ldcore_advance_slider(ld, direction);
+ printf("%3d:JUMP TRG\n", screen().vpos());
+ advance_slider(direction);
}
else if (LOG_SIMUTREK)
- printf("%3d:Skipped JUMP TRG\n", ld->screen->vpos());
+ printf("%3d:Skipped JUMP TRG\n", screen().vpos());
}
- /* bit 1 low enables scanning */
+ // bit 1 low enables scanning
if (!(data & 0x02))
{
- /* bit 2 selects the speed */
+ // bit 2 selects the speed
int delta = (data & 0x04) ? SCAN_SPEED : SEEK_FAST_SPEED;
- ldcore_set_slider_speed(ld, delta * direction);
+ set_slider_speed(delta * direction);
}
- /* bit 1 high stops scanning */
+ // bit 1 high stops scanning
else
- ldcore_set_slider_speed(ld, 0);
-
- /* video squelch is controlled by bit 5 */
- update_video_squelch(ld);
+ set_slider_speed(0);
- /* audio squelch is controlled by bit 6 */
- update_audio_squelch(ld);
+ // video squelch is controlled by bit 5; audio squelch is controlled by bit 6
+ update_video_squelch();
+ update_audio_squelch();
}
-/*-------------------------------------------------
- pr8210_port2_w - handle writes to the 8049
- port #2
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port2_w - handle writes to the 8049
+// port #2
+//-------------------------------------------------
-static WRITE8_HANDLER( pr8210_port2_w )
+WRITE8_MEMBER( pioneer_pr8210_device::i8049_port2_w )
{
/*
$80 = (out) /CS on PIA
@@ -832,96 +741,87 @@ static WRITE8_HANDLER( pr8210_port2_w )
$02 = (out) ???
$01 = (out) LASER ON
*/
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->port2;
- /* set the new value */
- player->port2 = data;
+ // set the new value
+ UINT8 prev = m_i8049_port2;
+ m_i8049_port2 = data;
- /* on the falling edge of bit 5, start the slow timer */
+ // on the falling edge of bit 5, start the slow timer
if (!(data & 0x20) && (prev & 0x20))
- player->slowtrg = space->machine().time();
+ m_slowtrg = machine().time();
- /* bit 6 when low triggers an IRQ on the MCU */
- if (player->cpu != NULL)
- device_set_input_line(player->cpu, MCS48_INPUT_IRQ, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
+ // bit 6 when low triggers an IRQ on the MCU
+ m_i8049_cpu->set_input_line(MCS48_INPUT_IRQ, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
- /* standby LED is set accordingl to bit 4 */
+ // standby LED is set accordingl to bit 4
output_set_value("pr8210_standby", (data & 0x10) != 0);
}
-/*-------------------------------------------------
- pr8210_t0_r - return the state of the 8049
- T0 input (connected to VSYNC)
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_t0_r - return the state of the 8049
+// T0 input (connected to VSYNC)
+//-------------------------------------------------
-static READ8_HANDLER( pr8210_t0_r )
+READ8_MEMBER( pioneer_pr8210_device::i8049_t0_r )
{
- /* returns VSYNC state */
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- return !ld->player->vsync;
+ // returns VSYNC state
+ return !m_vsync;
}
-/*-------------------------------------------------
- pr8210_t1_r - return the state of the 8049
- T1 input (pulled high)
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_t1_r - return the state of the 8049
+// T1 input (pulled high)
+//-------------------------------------------------
-static READ8_HANDLER( pr8210_t1_r )
+READ8_MEMBER( pioneer_pr8210_device::i8049_t1_r )
{
return 1;
}
-/*-------------------------------------------------
- overlay_draw_group - draw a single group of
- characters
--------------------------------------------------*/
+//-------------------------------------------------
+// overlay_draw_group - draw a single group of
+// characters
+//-------------------------------------------------
-static void overlay_draw_group(bitmap_t &bitmap, const UINT8 *text, int count, float xstart)
+void pioneer_pr8210_device::overlay_draw_group(bitmap_yuy16 &bitmap, const UINT8 *text, int count, float xstart)
{
- int skip = TRUE;
- int x;
-
- /* rease the background */
+ // rease the background
overlay_erase(bitmap, xstart, xstart + ((OVERLAY_X_PIXELS + 1) * count + 1) * OVERLAY_PIXEL_WIDTH);
- /* draw each character, suppressing leading 0's */
- for (x = 0; x < count; x++)
+ // draw each character, suppressing leading 0's
+ bool skip = true;
+ for (int x = 0; x < count; x++)
if (!skip || x == count - 1 || (text[x] & 0x3f) != 0x30)
{
- skip = FALSE;
+ skip = false;
overlay_draw_char(bitmap, text[x], xstart + ((OVERLAY_X_PIXELS + 1) * x + 1) * OVERLAY_PIXEL_WIDTH);
}
}
-/*-------------------------------------------------
- overlay_erase - erase the background area
- where the text overlay will be displayed
--------------------------------------------------*/
+//-------------------------------------------------
+// overlay_erase - erase the background area
+// where the text overlay will be displayed
+//-------------------------------------------------
-static void overlay_erase(bitmap_t &bitmap, float xstart, float xend)
+void pioneer_pr8210_device::overlay_erase(bitmap_yuy16 &bitmap, float xstart, float xend)
{
- UINT32 xmin = (UINT32)(xstart * 256.0f * (float)bitmap.width());
- UINT32 xmax = (UINT32)(xend * 256.0f * (float)bitmap.width());
- UINT32 x, y;
+ UINT32 xmin = (UINT32)(xstart * 256.0f * float(bitmap.width()));
+ UINT32 xmax = (UINT32)(xend * 256.0f * float(bitmap.width()));
- for (y = OVERLAY_Y; y < (OVERLAY_Y + (OVERLAY_Y_PIXELS + 2) * OVERLAY_PIXEL_HEIGHT); y++)
+ for (UINT32 y = OVERLAY_Y; y < (OVERLAY_Y + (OVERLAY_Y_PIXELS + 2) * OVERLAY_PIXEL_HEIGHT); y++)
{
UINT16 *dest = &bitmap.pix16(y, xmin >> 8);
- UINT16 ymin, ymax, yres;
-
- ymax = *dest >> 8;
- ymin = ymax * 3 / 8;
- yres = ymin + ((ymax - ymin) * (xmin & 0xff)) / 256;
+ UINT16 ymax = *dest >> 8;
+ UINT16 ymin = ymax * 3 / 8;
+ UINT16 yres = ymin + ((ymax - ymin) * (xmin & 0xff)) / 256;
*dest = (yres << 8) | (*dest & 0xff);
dest++;
- for (x = (xmin | 0xff) + 1; x < xmax; x += 0x100)
+ for (UINT32 x = (xmin | 0xff) + 1; x < xmax; x += 0x100)
{
yres = (*dest >> 8) * 3 / 8;
*dest = (yres << 8) | (*dest & 0xff);
@@ -937,40 +837,37 @@ static void overlay_erase(bitmap_t &bitmap, float xstart, float xend)
}
-/*-------------------------------------------------
- overlay_draw_char - draw a single character
- of the text overlay
--------------------------------------------------*/
+//-------------------------------------------------
+// overlay_draw_char - draw a single character
+// of the text overlay
+//-------------------------------------------------
-static void overlay_draw_char(bitmap_t &bitmap, UINT8 ch, float xstart)
+void pioneer_pr8210_device::overlay_draw_char(bitmap_yuy16 &bitmap, UINT8 ch, float xstart)
{
- UINT32 xminbase = (UINT32)(xstart * 256.0f * (float)bitmap.width());
- UINT32 xsize = (UINT32)(OVERLAY_PIXEL_WIDTH * 256.0f * (float)bitmap.width());
- const UINT8 *chdataptr = &text_bitmap[ch & 0x3f][0];
- UINT32 x, y, xx, yy;
+ UINT32 xminbase = (UINT32)(xstart * 256.0f * float(bitmap.width()));
+ UINT32 xsize = (UINT32)(OVERLAY_PIXEL_WIDTH * 256.0f * float(bitmap.width()));
- /* iterate over pixels */
- for (y = 0; y < OVERLAY_Y_PIXELS; y++)
+ // iterate over pixels
+ const UINT8 *chdataptr = &text_bitmap[ch & 0x3f][0];
+ for (UINT32 y = 0; y < OVERLAY_Y_PIXELS; y++)
{
UINT8 chdata = *chdataptr++;
- for (x = 0; x < OVERLAY_X_PIXELS; x++, chdata <<= 1)
+ for (UINT32 x = 0; x < OVERLAY_X_PIXELS; x++, chdata <<= 1)
if (chdata & 0x80)
{
UINT32 xmin = xminbase + x * xsize;
UINT32 xmax = xmin + xsize;
- for (yy = 0; yy < OVERLAY_PIXEL_HEIGHT; yy++)
+ for (UINT32 yy = 0; yy < OVERLAY_PIXEL_HEIGHT; yy++)
{
UINT16 *dest = &bitmap.pix16(OVERLAY_Y + (y + 1) * OVERLAY_PIXEL_HEIGHT + yy, xmin >> 8);
- UINT16 ymin, ymax, yres;
-
- ymax = 0xff;
- ymin = *dest >> 8;
- yres = ymin + ((ymax - ymin) * (~xmin & 0xff)) / 256;
+ UINT16 ymax = 0xff;
+ UINT16 ymin = *dest >> 8;
+ UINT16 yres = ymin + ((ymax - ymin) * (~xmin & 0xff)) / 256;
*dest = (yres << 8) | (*dest & 0xff);
dest++;
- for (xx = (xmin | 0xff) + 1; xx < xmax; xx += 0x100)
+ for (UINT32 xx = (xmin | 0xff) + 1; xx < xmax; xx += 0x100)
*dest++ = 0xf080;
ymax = 0xff;
@@ -985,14 +882,14 @@ static void overlay_draw_char(bitmap_t &bitmap, UINT8 ch, float xstart)
-/***************************************************************************
- SIMUTREK ROM AND MACHINE INTERFACES
-***************************************************************************/
+//**************************************************************************
+// SIMUTREK ROM AND MACHINE INTERFACES
+//**************************************************************************
-static ADDRESS_MAP_START( simutrek_portmap, AS_IO, 8 )
- AM_RANGE(0x00, 0xff) AM_READ(simutrek_data_r)
- AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(simutrek_port2_r, simutrek_port2_w)
- AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(simutrek_t0_r)
+static ADDRESS_MAP_START( simutrek_portmap, AS_IO, 8, simutrek_special_device )
+ AM_RANGE(0x00, 0xff) AM_READ(i8748_data_r)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8748_port2_r, i8748_port2_w)
+ AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8748_t0_r)
ADDRESS_MAP_END
@@ -1014,258 +911,227 @@ ROM_END
-/***************************************************************************
- SIMUTREK PLAYER INTERFACE
-***************************************************************************/
-
-const ldplayer_interface simutrek_interface =
-{
- LASERDISC_TYPE_SIMUTREK_SPECIAL, /* type of the player */
- sizeof(ldplayer_data), /* size of the state */
- "Simutrek Modified PR-8210", /* name of the player */
- "mpr8210", /* shortname of the player */
- ROM_NAME(simutrek), /* pointer to ROM region information */
- MACHINE_CONFIG_NAME(simutrek), /* pointer to machine configuration */
- simutrek_init, /* initialization callback */
- simutrek_vsync, /* vsync callback */
- simutrek_update, /* update callback */
- pr8210_overlay, /* overlay callback */
- simutrek_data_w, /* parallel data write */
- { /* single line write: */
- NULL, /* LASERDISC_LINE_ENTER */
- NULL /* LASERDISC_LINE_CONTROL */
- },
- NULL, /* parallel data read */
- { /* single line read: */
- simutrek_ready_r, /* LASERDISC_LINE_READY */
- simutrek_status_r, /* LASERDISC_LINE_STATUS */
- NULL, /* LASERDISC_LINE_COMMAND */
- NULL, /* LASERDISC_LINE_DATA_AVAIL */
- }
-};
-
+//**************************************************************************
+// SIMUTREK IMPLEMENTATION
+//**************************************************************************
+//-------------------------------------------------
+// simutrek_special_device - constructor
+//-------------------------------------------------
-/***************************************************************************
- SIMUTREK IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- simutrek_set_audio_squelch - Simutrek-specific
- command to enable/disable audio squelch
--------------------------------------------------*/
-
-void simutrek_set_audio_squelch(device_t *device, int state)
+simutrek_special_device::simutrek_special_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pioneer_pr8210_device(mconfig, SIMUTREK_SPECIAL, "Simutrek Modified PR-8210", "simutrek", tag, owner, clock),
+ m_i8748_cpu(*this, "simutrek"),
+ m_audio_squelch(0),
+ m_data(0),
+ m_data_ready(false),
+ m_i8748_port2(0),
+ m_controlnext(0),
+ m_controlthis(0)
{
- laserdisc_state *ld = ldcore_get_safe_token(device);
- ldplayer_data *player = ld->player;
- if (LOG_SIMUTREK && player->simutrek.audio_squelch != (state == 0))
- printf("--> audio squelch = %d\n", state == 0);
- player->simutrek.audio_squelch = (state == 0);
- update_audio_squelch(ld);
}
-/*-------------------------------------------------
- simutrek_init - Simutrek-specific
- initialization
--------------------------------------------------*/
+//-------------------------------------------------
+// data_w - write callback when the parallel data
+// port is written to
+//-------------------------------------------------
-static void simutrek_init(laserdisc_state *ld)
+void simutrek_special_device::data_w(UINT8 data)
{
- astring tempstring;
- ldplayer_data *player = ld->player;
-
- /* standard PR-8210 initialization */
- pr8210_init(ld);
-
- /* initialize the Simutrek state */
- /* for proper synchronization of initial attract mode, this needs to be set */
- player->simutrek.data_ready = 1;
-
- /* find the Simutrek CPU */
- player->simutrek.cpu = ld->device->subdevice("simutrek");
+ synchronize(TID_LATCH_DATA, data);
+ if (LOG_SIMUTREK)
+ printf("%03d:**** Simutrek Command = %02X\n", screen().vpos(), data);
}
-/*-------------------------------------------------
- simutrek_vsync - VSYNC callback, called at the
- start of the blanking period
--------------------------------------------------*/
+//-------------------------------------------------
+// set_external_audio_squelch - Simutrek-specific
+// command to enable/disable audio squelch
+//-------------------------------------------------
-static TIMER_CALLBACK( irq_off )
+void simutrek_special_device::set_external_audio_squelch(int state)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
- device_set_input_line(player->simutrek.cpu, MCS48_INPUT_IRQ, CLEAR_LINE);
- if (LOG_SIMUTREK)
- printf("%3d:**** Simutrek IRQ clear\n", ld->screen->vpos());
+ if (LOG_SIMUTREK && m_audio_squelch != (state == 0))
+ printf("--> audio squelch = %d\n", state == 0);
+ m_audio_squelch = (state == 0);
+ update_audio_squelch();
}
-static void simutrek_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
-{
- ldplayer_data *player = ld->player;
+//-------------------------------------------------
+// player_vsync - VSYNC callback, called at the
+// start of the blanking period
+//-------------------------------------------------
+
+void simutrek_special_device::player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime)
+{
+ // latch the control state after the second field
if (fieldnum == 1)
{
- player->simutrek.controlthis = player->simutrek.controlnext;
- player->simutrek.controlnext = 0;
+ m_controlthis = m_controlnext;
+ m_controlnext = 0;
}
+ // call the parent
if (LOG_SIMUTREK)
- printf("%3d:VSYNC(%d)\n", ld->screen->vpos(), fieldnum);
- pr8210_vsync(ld, vbi, fieldnum, curtime);
+ printf("%3d:VSYNC(%d)\n", screen().vpos(), fieldnum);
+ pioneer_pr8210_device::player_vsync(vbi, fieldnum, curtime);
- if (player->simutrek.data_ready)
+ // process data
+ if (m_data_ready)
{
if (LOG_SIMUTREK)
- printf("%3d:VSYNC IRQ\n", ld->screen->vpos());
- device_set_input_line(player->simutrek.cpu, MCS48_INPUT_IRQ, ASSERT_LINE);
- ld->device->machine().scheduler().timer_set(ld->screen->scan_period(), FUNC(irq_off), 0, ld);
+ printf("%3d:VSYNC IRQ\n", screen().vpos());
+ m_i8748_cpu->set_input_line(MCS48_INPUT_IRQ, ASSERT_LINE);
+ timer_set(screen().scan_period(), TID_IRQ_OFF);
}
}
-/*-------------------------------------------------
- simutrek_update - update callback, called on
- the first visible line of the frame
--------------------------------------------------*/
+//-------------------------------------------------
+// device_start - device initialization
+//-------------------------------------------------
-static INT32 simutrek_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+void simutrek_special_device::device_start()
{
- return pr8210_update(ld, vbi, fieldnum, curtime);
+ // pass through to the parent
+ pioneer_pr8210_device::device_start();
}
-/*-------------------------------------------------
- simutrek_ready_r - read callback when the
- READY line is read
--------------------------------------------------*/
+//-------------------------------------------------
+// device_reset - device reset
+//-------------------------------------------------
-static UINT8 simutrek_ready_r(laserdisc_state *ld)
+void simutrek_special_device::device_reset()
{
- return !ld->player->simutrek.data_ready;
+ // standard PR-8210 initialization
+ pioneer_pr8210_device::device_reset();
+
+ // initialize the Simutrek state
+ // for proper synchronization of initial attract mode, this needs to be set
+ m_data_ready = true;
}
-/*-------------------------------------------------
- simutrek_status_r - read callback when the
- STATUS line is read
--------------------------------------------------*/
+//-------------------------------------------------
+// device_timer - handle timers set by this
+// device
+//-------------------------------------------------
-static UINT8 simutrek_status_r(laserdisc_state *ld)
+void simutrek_special_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- return ((ld->player->simutrek.port2 & 0x03) == 0x03) ? ASSERT_LINE : CLEAR_LINE;
+ switch (id)
+ {
+ // clear the 8748 IRQ
+ case TID_IRQ_OFF:
+ m_i8748_cpu->set_input_line(MCS48_INPUT_IRQ, CLEAR_LINE);
+ break;
+
+ // latch data
+ case TID_LATCH_DATA:
+ m_data = param;
+ m_data_ready = true;
+ break;
+
+ // pass everything else onto the parent
+ default:
+ pioneer_pr8210_device::device_timer(timer, id, param, ptr);
+ break;
+ }
}
-/*-------------------------------------------------
- simutrek_data_w - write callback when the
- parallel data port is written to
--------------------------------------------------*/
+//-------------------------------------------------
+// device_rom_region - return a pointer to our
+// ROM region definitions
+//-------------------------------------------------
-static void simutrek_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
+const rom_entry *simutrek_special_device::device_rom_region() const
{
- ld->device->machine().scheduler().synchronize(FUNC(simutrek_latched_data_w), data, ld);
- if (LOG_SIMUTREK)
- printf("%03d:**** Simutrek Command = %02X\n", ld->screen->vpos(), data);
+ return ROM_NAME(simutrek);
}
-/*-------------------------------------------------
- simutrek_latched_data_w - deferred write
- callback for when data is written
--------------------------------------------------*/
+//-------------------------------------------------
+// device_mconfig_additions - return a pointer to
+// our machine config fragment
+//-------------------------------------------------
-static TIMER_CALLBACK( simutrek_latched_data_w )
+machine_config_constructor simutrek_special_device::device_mconfig_additions() const
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
-
- /* store the data and set the ready flag */
- player->simutrek.data = param;
- player->simutrek.data_ready = TRUE;
+ return MACHINE_CONFIG_NAME(simutrek);
}
-/*-------------------------------------------------
- simutrek_port2_r - handle reads from the 8748
- port #2
--------------------------------------------------*/
+//-------------------------------------------------
+// i8748_port2_r - handle reads from the 8748
+// port #2
+//-------------------------------------------------
-static READ8_HANDLER( simutrek_port2_r )
+READ8_MEMBER( simutrek_special_device::i8748_port2_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
-
- /* bit $80 is the pr8210 video squelch */
- return (player->port1 & 0x20) ? 0x00 : 0x80;
+ // bit $80 is the pr8210 video squelch
+ return (m_i8049_port1 & 0x20) ? 0x00 : 0x80;
}
-/*-------------------------------------------------
- simutrek_port2_w - handle writes to the 8748
- port #2
--------------------------------------------------*/
+//-------------------------------------------------
+// i8748_port2_w - handle writes to the 8748
+// port #2
+//-------------------------------------------------
-static WRITE8_HANDLER( simutrek_port2_w )
+WRITE8_MEMBER( simutrek_special_device::i8748_port2_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->simutrek.port2;
+ // update stat
+ UINT8 prev = m_i8748_port2;
+ m_i8748_port2 = data;
- /* update stat */
- player->simutrek.port2 = data;
-
- /* bit $20 goes to the serial line */
+ // bit $20 goes to the serial line
if ((data ^ prev) & 0x20)
- pr8210_control_w(ld, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
+ pioneer_pr8210_device::control_w((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
- /* bit $10 goes to JUMP TRG */
- /* bit $08 controls direction */
+ // bit $10 goes to JUMP TRG
+ // bit $08 controls direction
if (!(data & 0x10) && (prev & 0x10))
{
int direction = (data & 0x08) ? 1 : -1;
if (LOG_SIMUTREK)
- printf("%3d:JUMP TRG (Simutrek PC=%03X)\n", ld->screen->vpos(), cpu_get_pc(&space->device()));
- ldcore_advance_slider(ld, direction);
+ printf("%3d:JUMP TRG (Simutrek PC=%03X)\n", screen().vpos(), cpu_get_pc(&space.device()));
+ advance_slider(direction);
}
- /* bit $04 controls who owns the JUMP TRG command */
+ // bit $04 controls who owns the JUMP TRG command
if (LOG_SIMUTREK && ((data ^ prev) & 0x04))
- printf("%3d:Simutrek ownership line = %d (Simutrek PC=%03X)\n", ld->screen->vpos(), (data >> 2) & 1, cpu_get_pc(&space->device()));
- player->simutrek.controlnext = (~data >> 2) & 1;
+ printf("%3d:Simutrek ownership line = %d (Simutrek PC=%03X)\n", screen().vpos(), (data >> 2) & 1, cpu_get_pc(&space.device()));
+ m_controlnext = (~data >> 2) & 1;
- /* bits $03 control something (status?) */
+ // bits $03 control something (status?)
if (LOG_SIMUTREK && ((data ^ prev) & 0x03))
printf("Simutrek Status = %d\n", data & 0x03);
}
-/*-------------------------------------------------
- simutrek_data_r - handle external 8748 data
- reads
--------------------------------------------------*/
+//-------------------------------------------------
+// i8748_data_r - handle external 8748 data reads
+//-------------------------------------------------
-static READ8_HANDLER( simutrek_data_r )
+READ8_MEMBER( simutrek_special_device::i8748_data_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
-
- /* acknowledge the read and clear the data ready flag */
- player->simutrek.data_ready = FALSE;
- return player->simutrek.data;
+ // acknowledge the read and clear the data ready flag
+ m_data_ready = false;
+ return m_data;
}
-/*-------------------------------------------------
- simutrek_t0_r - return the status of the
- 8748 T0 input
--------------------------------------------------*/
+//-------------------------------------------------
+// i8748_t0_r - return the status of the 8748
+// T0 input
+//-------------------------------------------------
-static READ8_HANDLER( simutrek_t0_r )
+READ8_MEMBER( simutrek_special_device::i8748_t0_r )
{
- /* return 1 if data is waiting from main CPU */
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- return ld->player->simutrek.data_ready;
+ // return 1 if data is waiting from main CPU
+ return m_data_ready;
}
diff --git a/src/emu/machine/ldpr8210.h b/src/emu/machine/ldpr8210.h
new file mode 100644
index 00000000000..9bffa030c99
--- /dev/null
+++ b/src/emu/machine/ldpr8210.h
@@ -0,0 +1,224 @@
+/*************************************************************************
+
+ ldpr8210.h
+
+ Pioneer PR-8210 laserdisc emulation.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#pragma once
+
+#ifndef __LDPR8210_H__
+#define __LDPR8210_H__
+
+#include "laserdsc.h"
+#include "cpu/mcs48/mcs48.h"
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_LASERDISC_PR8210_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PIONEER_PR8210, 0) \
+
+#define MCFG_LASERDISC_SIMUTREK_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, SIMUTREK_SPECIAL, 0) \
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+extern const device_type PIONEER_PR8210;
+extern const device_type SIMUTREK_SPECIAL;
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// pioneer PIA subclass
+class pioneer_pia
+{
+public:
+ UINT8 frame[7]; // (20-26) 7 characters for the chapter/frame
+ UINT8 text[17]; // (20-30) 17 characters for the display
+ UINT8 control; // (40) control lines
+ UINT8 latchdisplay; // flag: set if the display was latched
+ UINT8 portb; // (60) port B value (LEDs)
+ UINT8 display; // (80) display enable
+ UINT8 porta; // (A0) port A value (from serial decoder)
+ UINT8 vbi1; // (C0) VBI decoding state 1
+ UINT8 vbi2; // (E0) VBI decoding state 2
+};
+
+
+// ======================> pioneer_pr8210_device
+
+// base pr8210 class
+class pioneer_pr8210_device : public laserdisc_device
+{
+public:
+ // construction/destruction
+ pioneer_pr8210_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ pioneer_pr8210_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock);
+
+ // input and output
+ void control_w(UINT8 data);
+
+protected:
+ // timer IDs
+ enum
+ {
+ TID_VSYNC_OFF = TID_FIRST_PLAYER_TIMER,
+ TID_VBI_DATA_FETCH,
+ TID_FIRST_SUBCLASS_TIMER
+ };
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual void player_overlay(bitmap_yuy16 &bitmap);
+
+ // internal helpers
+ bool focus_on() const { return !(m_i8049_port1 & 0x08); }
+ bool spdl_on() const { return !(m_i8049_port1 & 0x10); }
+ bool laser_on() const { return !(m_i8049_port2 & 0x01); }
+ virtual bool override_control() const { return false; }
+ void update_video_squelch() { set_video_squelch((m_i8049_port1 & 0x20) != 0); }
+ virtual void update_audio_squelch() { set_audio_squelch((m_i8049_port1 & 0x40) || !(m_pia.portb & 0x01), (m_i8049_port1 & 0x40) || !(m_pia.portb & 0x02)); }
+
+public:
+ // internal read/write handlers
+ DECLARE_READ8_MEMBER( i8049_pia_r );
+ DECLARE_WRITE8_MEMBER( i8049_pia_w );
+ DECLARE_READ8_MEMBER( i8049_bus_r );
+ DECLARE_WRITE8_MEMBER( i8049_port1_w );
+ DECLARE_WRITE8_MEMBER( i8049_port2_w );
+ DECLARE_READ8_MEMBER( i8049_t0_r );
+ DECLARE_READ8_MEMBER( i8049_t1_r );
+
+protected:
+ // internal overlay helpers
+ void overlay_draw_group(bitmap_yuy16 &bitmap, const UINT8 *text, int count, float xstart);
+ void overlay_erase(bitmap_yuy16 &bitmap, float xstart, float xend);
+ void overlay_draw_char(bitmap_yuy16 &bitmap, UINT8 ch, float xstart);
+
+ // internal state
+ UINT8 m_control; // control line state
+ UINT8 m_lastcommand; // last command seen
+ UINT16 m_accumulator; // bit accumulator
+ attotime m_lastcommandtime; // time of the last command
+ attotime m_lastbittime; // time of last bit received
+ attotime m_firstbittime; // time of first bit in command
+
+ // low-level emulation data
+ required_device<i8049_device> m_i8049_cpu; // 8049 CPU device
+ attotime m_slowtrg; // time of the last SLOW TRG
+ pioneer_pia m_pia; // PIA state
+ bool m_vsync; // live VSYNC state
+ UINT8 m_i8049_port1; // 8049 port 1 state
+ UINT8 m_i8049_port2; // 8049 port 2 state
+};
+
+
+// ======================> simutrek_special_device
+
+class simutrek_special_device : public pioneer_pr8210_device
+{
+public:
+ // construction/destruction
+ simutrek_special_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // input and output
+ void data_w(UINT8 data);
+ UINT8 ready_r() const { return !m_data_ready; }
+ UINT8 status_r() const { return ((m_i8748_port2 & 0x03) == 0x03) ? ASSERT_LINE : CLEAR_LINE; }
+
+ // external controls
+ void set_external_audio_squelch(int state);
+
+protected:
+ // timer IDs
+ enum
+ {
+ TID_IRQ_OFF = TID_FIRST_SUBCLASS_TIMER,
+ TID_LATCH_DATA
+ };
+
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // internal helpers
+ virtual bool override_control() const { return m_controlthis; }
+ virtual void update_audio_squelch() { set_audio_squelch(m_audio_squelch, m_audio_squelch); }
+
+public:
+ // internal read/write handlers
+ DECLARE_READ8_MEMBER( i8748_port2_r );
+ DECLARE_WRITE8_MEMBER( i8748_port2_w );
+ DECLARE_READ8_MEMBER( i8748_data_r );
+ DECLARE_READ8_MEMBER( i8748_t0_r );
+
+protected:
+ // internal state
+ required_device<i8748_device> m_i8748_cpu;
+ UINT8 m_audio_squelch; // audio squelch value
+ UINT8 m_data; // parallel data for simutrek
+ bool m_data_ready; // ready flag for simutrek data
+ UINT8 m_i8748_port2; // 8748 port 2 state
+ UINT8 m_controlnext; // latch to control next pair of fields
+ UINT8 m_controlthis; // latched value for our control over the current pair of fields
+};
+
+
+#endif
diff --git a/src/emu/machine/ldstub.c b/src/emu/machine/ldstub.c
new file mode 100644
index 00000000000..c449b424214
--- /dev/null
+++ b/src/emu/machine/ldstub.c
@@ -0,0 +1,51 @@
+/*************************************************************************
+
+ ldstub.c
+
+ Laserdisc player stubs.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#include "emu.h"
+#include "ldstub.h"
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+const device_type SONY_LDP1450 = &device_creator<sony_ldp1450_device>;
+const device_type PIONEER_PR7820 = &device_creator<pioneer_pr7820_device>;
+const device_type PHILLIPS_22VP932 = &device_creator<phillips_22vp932_device>;
diff --git a/src/emu/machine/ldstub.h b/src/emu/machine/ldstub.h
new file mode 100644
index 00000000000..1acb5e08877
--- /dev/null
+++ b/src/emu/machine/ldstub.h
@@ -0,0 +1,146 @@
+/*************************************************************************
+
+ ldstub.h
+
+ Laserdisc player stubs.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#pragma once
+
+#ifndef __LDSTUB_H__
+#define __LDSTUB_H__
+
+#include "laserdsc.h"
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_LASERDISC_LDP1450_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, SONY_LDP1450, 0) \
+
+#define MCFG_LASERDISC_PR7820_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PIONEER_PR7820, 0) \
+
+#define MCFG_LASERDISC_22VP932_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PHILLIPS_22VP932, 0) \
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+extern const device_type SONY_LDP1450;
+extern const device_type PIONEER_PR7820;
+extern const device_type PHILLIPS_22VP932;
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> sony_ldp1450_device
+
+class sony_ldp1450_device : public laserdisc_device
+{
+public:
+ // construction/destruction
+ sony_ldp1450_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, SONY_LDP1450, "Sony LDP-1450", "ldp1450", tag, owner, clock) { }
+
+ // input/output
+ UINT8 data_available_r() { return CLEAR_LINE; }
+ UINT8 data_r() { return 0; }
+ void data_w(UINT8 data) { }
+
+protected:
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime) { }
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime) { return fieldnum; }
+ virtual void player_overlay(bitmap_yuy16 &bitmap) { }
+};
+
+
+// ======================> pioneer_pr7820_device
+
+class pioneer_pr7820_device : public laserdisc_device
+{
+public:
+ // construction/destruction
+ pioneer_pr7820_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, PIONEER_PR7820, "Pioneer PR-7820", "pr7820", tag, owner, clock) { }
+
+ // input/output
+ UINT8 data_available_r() { return CLEAR_LINE; }
+ UINT8 ready_r() { return ASSERT_LINE; }
+ UINT8 data_r() { return 0; }
+ void data_w(UINT8 data) { }
+ void enter_w(UINT8 data) { }
+
+protected:
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime) { }
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime) { return fieldnum; }
+ virtual void player_overlay(bitmap_yuy16 &bitmap) { }
+};
+
+
+// ======================> phillips_22vp932_device
+
+class phillips_22vp932_device : public laserdisc_device
+{
+public:
+ // construction/destruction
+ phillips_22vp932_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, PHILLIPS_22VP932, "Phillips 22VP932", "22vp932", tag, owner, clock) { }
+
+ // input/output
+ UINT8 data_r() { return 0; }
+ void data_w(UINT8 data) { }
+ void enter_w(UINT8 data) { }
+
+protected:
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime) { }
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime) { return fieldnum; }
+ virtual void player_overlay(bitmap_yuy16 &bitmap) { }
+};
+
+
+#endif
diff --git a/src/emu/machine/ldv1000.c b/src/emu/machine/ldv1000.c
index 7ee15ce8179..62fdd19d2bd 100644
--- a/src/emu/machine/ldv1000.c
+++ b/src/emu/machine/ldv1000.c
@@ -4,8 +4,34 @@
Pioneer LD-V1000 laserdisc emulation.
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
**************************************************************************
@@ -16,8 +42,10 @@
*************************************************************************/
+#define ADDRESS_MAP_MODERN
+
#include "emu.h"
-#include "ldcore.h"
+#include "ldv1000.h"
#include "machine/8255ppi.h"
#include "machine/z80ctc.h"
#include "cpu/z80/z80.h"
@@ -25,9 +53,9 @@
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
#define LOG_PORT_IO 0
#define LOG_STATUS_CHANGES 0
@@ -36,123 +64,73 @@
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
-#define SCAN_SPEED (2000 / 30) /* 2000 frames/second */
-#define SEEK_FAST_SPEED (4000 / 30) /* 4000 frames/second */
+#define SCAN_SPEED (2000 / 30) // 2000 frames/second
+#define SEEK_FAST_SPEED (4000 / 30) // 4000 frames/second
#define MULTIJUMP_TRACK_TIME attotime::from_usec(50)
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* player-specific data */
-struct _ldplayer_data
-{
- /* low-level emulation data */
- device_t *cpu; /* CPU index of the Z80 */
- device_t *ctc; /* CTC device */
- timer_device * multitimer; /* multi-jump timer device */
-
- /* communication status */
- UINT8 command; /* command byte to the player */
- UINT8 status; /* status byte from the player */
- UINT8 vsync; /* VSYNC state */
-
- /* I/O port states */
- UINT8 counter_start; /* starting value for counter */
- UINT8 counter; /* current counter value */
- UINT8 portc0; /* port C on PPI 0 */
- UINT8 portb1; /* port B on PPI 1 */
- UINT8 portc1; /* port C on PPI 1 */
-
- /* display/decode circuit emulation */
- UINT8 portselect; /* selection of which port to access */
- UINT8 display[2][20]; /* display lines */
- UINT8 dispindex; /* index within the display line */
- UINT8 vbi[7*3]; /* VBI data */
- UINT8 vbiready; /* VBI ready flag */
- UINT8 vbiindex; /* index within the VBI data */
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void ldv1000_init(laserdisc_state *ld);
-static void ldv1000_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static INT32 ldv1000_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static void ldv1000_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data);
-static UINT8 ldv1000_status_strobe_r(laserdisc_state *ld);
-static UINT8 ldv1000_command_strobe_r(laserdisc_state *ld);
-static UINT8 ldv1000_status_r(laserdisc_state *ld);
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
-static TIMER_CALLBACK( vsync_off );
-static TIMER_CALLBACK( vbi_data_fetch );
-static TIMER_DEVICE_CALLBACK( multijump_timer );
+// devices
+const device_type PIONEER_LDV1000 = &device_creator<pioneer_ldv1000_device>;
-static void ctc_interrupt(device_t *device, int state);
-static WRITE8_HANDLER( decoder_display_port_w );
-static READ8_HANDLER( decoder_display_port_r );
-static READ8_HANDLER( controller_r );
-static WRITE8_HANDLER( controller_w );
-static WRITE8_DEVICE_HANDLER( ppi0_porta_w );
-static READ8_DEVICE_HANDLER( ppi0_portb_r );
-static READ8_DEVICE_HANDLER( ppi0_portc_r );
-static WRITE8_DEVICE_HANDLER( ppi0_portc_w );
-static READ8_DEVICE_HANDLER( ppi1_porta_r );
-static WRITE8_DEVICE_HANDLER( ppi1_portb_w );
-static WRITE8_DEVICE_HANDLER( ppi1_portc_w );
+//**************************************************************************
+// LD-V1000 ROM AND MACHINE INTERFACES
+//**************************************************************************
-
-/***************************************************************************
- LD-V1000 ROM AND MACHINE INTERFACES
-***************************************************************************/
-
-static ADDRESS_MAP_START( ldv1000_map, AS_PROGRAM, 8 )
+static ADDRESS_MAP_START( ldv1000_map, AS_PROGRAM, 8, pioneer_ldv1000_device )
AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x9ff0) AM_DEVREADWRITE("ldvppi0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x9ff0) AM_DEVREADWRITE("ldvppi1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x9ff0) AM_DEVREADWRITE_LEGACY("ldvppi0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x9ff0) AM_DEVREADWRITE_LEGACY("ldvppi1", ppi8255_r, ppi8255_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( ldv1000_portmap, AS_IO, 8 )
+static ADDRESS_MAP_START( ldv1000_portmap, AS_IO, 8, pioneer_ldv1000_device )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x07) AM_MIRROR(0x38) AM_READWRITE(decoder_display_port_r, decoder_display_port_w)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(controller_r)
- AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(controller_w)
- AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE("ldvctc", z80ctc_r, z80ctc_w)
+ AM_RANGE(0x00, 0x07) AM_MIRROR(0x38) AM_READWRITE(z80_decoder_display_port_r, z80_decoder_display_port_w)
+ AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(z80_controller_r)
+ AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(z80_controller_w)
+ AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE_LEGACY("ldvctc", z80ctc_r, z80ctc_w)
ADDRESS_MAP_END
static const ppi8255_interface ppi0intf =
{
- DEVCB_NULL, DEVCB_HANDLER(ppi0_portb_r), DEVCB_HANDLER(ppi0_portc_r),
- DEVCB_HANDLER(ppi0_porta_w), DEVCB_NULL, DEVCB_HANDLER(ppi0_portc_w)
+ DEVCB_NULL,
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi0_portb_r),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi0_portc_r),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi0_porta_w),
+ DEVCB_NULL,
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi0_portc_w)
};
static const ppi8255_interface ppi1intf =
{
- DEVCB_HANDLER(ppi1_porta_r), DEVCB_NULL, DEVCB_NULL,
- DEVCB_NULL, DEVCB_HANDLER(ppi1_portb_w), DEVCB_HANDLER(ppi1_portc_w)
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi1_porta_r),
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi1_portb_w),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ppi1_portc_w)
};
static Z80CTC_INTERFACE( ctcintf )
{
0,
- DEVCB_LINE(ctc_interrupt),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, pioneer_ldv1000_device, ctc_interrupt),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
@@ -172,10 +150,9 @@ static MACHINE_CONFIG_FRAGMENT( ldv1000 )
MCFG_CPU_PROGRAM_MAP(ldv1000_map)
MCFG_CPU_IO_MAP(ldv1000_portmap)
- MCFG_Z80CTC_ADD("ldvctc", XTAL_5MHz/2 /* same as "ldv1000" */, ctcintf)
+ MCFG_Z80CTC_ADD("ldvctc", XTAL_5MHz/2, ctcintf)
MCFG_PPI8255_ADD("ldvppi0", ppi0intf)
MCFG_PPI8255_ADD("ldvppi1", ppi1intf)
- MCFG_TIMER_ADD("multitimer", multijump_timer)
MACHINE_CONFIG_END
@@ -186,255 +163,246 @@ ROM_END
-/***************************************************************************
- INTERFACES
-***************************************************************************/
-
-const ldplayer_interface ldv1000_interface =
-{
- LASERDISC_TYPE_PIONEER_LDV1000, /* type of the player */
- sizeof(ldplayer_data), /* size of the state */
- "Pioneer LD-V1000", /* name of the player */
- "ldv1000", /* shortname of the player */
- ROM_NAME(ldv1000), /* pointer to ROM region information */
- MACHINE_CONFIG_NAME(ldv1000), /* pointer to machine configuration */
- ldv1000_init, /* initialization callback */
- ldv1000_vsync, /* vsync callback */
- ldv1000_update, /* update callback */
- NULL, /* overlay callback */
- ldv1000_data_w, /* parallel data write */
- { /* single line write: */
- NULL, /* LASERDISC_LINE_ENTER */
- NULL /* LASERDISC_LINE_CONTROL */
- },
- ldv1000_status_r, /* parallel data read */
- { /* single line read: */
- NULL, /* LASERDISC_LINE_READY */
- ldv1000_status_strobe_r, /* LASERDISC_LINE_STATUS */
- ldv1000_command_strobe_r, /* LASERDISC_LINE_COMMAND */
- NULL, /* LASERDISC_LINE_DATA_AVAIL */
- }
-};
-
-
-
-/***************************************************************************
- PIONEER LD-V1000 IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- ldv1000_init - player-specific initialization
--------------------------------------------------*/
-
-static void ldv1000_init(laserdisc_state *ld)
+//**************************************************************************
+// PIONEER LD-V1000 IMPLEMENTATION
+//**************************************************************************
+
+//-------------------------------------------------
+// pioneer_ldv1000_device - constructor
+//-------------------------------------------------
+
+pioneer_ldv1000_device::pioneer_ldv1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, PIONEER_LDV1000, "Pioneer LD-V1000", "ldv1000", tag, owner, clock),
+ m_z80_cpu(*this, "ldv1000"),
+ m_z80_ctc(*this, "ldvctc"),
+ m_multitimer(NULL),
+ m_command(0),
+ m_status(0),
+ m_vsync(false),
+ m_counter_start(0),
+ m_counter(0),
+ m_portc0(0),
+ m_portb1(0),
+ m_portc1(0),
+ m_portselect(0),
+ m_dispindex(0),
+ m_vbiready(false),
+ m_vbiindex(0)
{
- astring tempstring;
- ldplayer_data *player = ld->player;
-
- /* reset our state */
- memset(player, 0, sizeof(*player));
-
- /* find our devices */
- player->cpu = ld->device->subdevice("ldv1000");
- player->ctc = ld->device->subdevice("ldvctc");
- player->multitimer = downcast<timer_device *>(ld->device->subdevice("multitimer"));
- player->multitimer->set_ptr(ld);
}
-/*-------------------------------------------------
- ldv1000_vsync - VSYNC callback, called at the
- start of the blanking period
--------------------------------------------------*/
+//-------------------------------------------------
+// data_w - handle a parallel data write to the
+// LD-V1000
+//-------------------------------------------------
-static void ldv1000_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+void pioneer_ldv1000_device::data_w(UINT8 data)
{
- slider_position sliderpos = ldcore_get_slider_position(ld);
- ldplayer_data *player = ld->player;
-
- /* generate interrupts if we hit the edges */
- z80ctc_trg1_w(player->ctc, sliderpos == SLIDER_MINIMUM);
- z80ctc_trg2_w(player->ctc, sliderpos == SLIDER_MAXIMUM);
-
- /* signal VSYNC and set a timer to turn it off */
- player->vsync = TRUE;
- ld->device->machine().scheduler().timer_set(ld->screen->scan_period() * 4, FUNC(vsync_off), 0, ld);
-
- /* also set a timer to fetch the VBI data when it is ready */
- ld->device->machine().scheduler().timer_set(ld->screen->time_until_pos(19*2), FUNC(vbi_data_fetch), 0, ld);
-
- /* boost interleave for the first 1ms to improve communications */
- ld->device->machine().scheduler().boost_interleave(attotime::zero, attotime::from_msec(1));
+ m_command = data;
+ if (LOG_COMMANDS)
+ printf("-> COMMAND = %02X (%s)\n", data, (m_portc1 & 0x10) ? "valid" : "invalid");
}
-/*-------------------------------------------------
- ldv1000_update - update callback, called on
- the first visible line of the frame
--------------------------------------------------*/
+//-------------------------------------------------
+// enter_w - set the state of the ENTER strobe
+//-------------------------------------------------
-static INT32 ldv1000_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+void pioneer_ldv1000_device::enter_w(UINT8 data)
{
- if (LOG_FRAMES_SEEN)
- {
- int frame = frame_from_metadata(vbi);
- if (frame != FRAME_NOT_PRESENT) printf("== %d\n", frame);
- }
- return fieldnum;
}
-/*-------------------------------------------------
- ldv1000_data_w - handle a parallel data write
- to the LD-V1000
--------------------------------------------------*/
+//-------------------------------------------------
+// device_start - device initialization
+//-------------------------------------------------
-static void ldv1000_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
+void pioneer_ldv1000_device::device_start()
{
- ld->player->command = data;
- if (LOG_COMMANDS)
- printf("-> COMMAND = %02X (%s)\n", data, (ld->player->portc1 & 0x10) ? "valid" : "invalid");
+ // pass through to the parent
+ laserdisc_device::device_start();
+
+ // allocate timers
+ m_multitimer = timer_alloc(TID_MULTIJUMP);
}
-/*-------------------------------------------------
- ldv1000_status_strobe_r - return state of the
- status strobe
--------------------------------------------------*/
+//-------------------------------------------------
+// device_reset - device reset
+//-------------------------------------------------
-static UINT8 ldv1000_status_strobe_r(laserdisc_state *ld)
+void pioneer_ldv1000_device::device_reset()
{
- return (ld->player->portc1 & 0x20) ? ASSERT_LINE : CLEAR_LINE;
+ // pass through to the parent
+ laserdisc_device::device_reset();
+
+ // reset our state
+ m_command = 0;
+ m_status = 0;
+ m_vsync = false;
+ m_counter_start = 0;
+ m_counter = 0;
+ m_portc0 = 0;
+ m_portb1 = 0;
+ m_portc1 = 0;
+ m_portselect = 0;
+ m_dispindex = 0;
+ m_vbiready = false;
+ m_vbiindex = 0;
}
-/*-------------------------------------------------
- ldv1000_command_strobe_r - return state of the
- command strobe
--------------------------------------------------*/
+//-------------------------------------------------
+// device_timer - handle timers set by this
+// device
+//-------------------------------------------------
-static UINT8 ldv1000_command_strobe_r(laserdisc_state *ld)
+void pioneer_ldv1000_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- return (ld->player->portc1 & 0x10) ? ASSERT_LINE : CLEAR_LINE;
+ switch (id)
+ {
+ case TID_MULTIJUMP:
+ {
+ // bit 5 of port B on PPI 1 selects the direction of slider movement
+ int direction = (m_portb1 & 0x20) ? 1 : -1;
+ advance_slider(direction);
+
+ // update down counter and reschedule
+ if (--m_counter != 0)
+ timer.adjust(MULTIJUMP_TRACK_TIME);
+ break;
+ }
+
+ case TID_VSYNC_OFF:
+ m_vsync = false;
+ break;
+
+ case TID_VBI_DATA_FETCH:
+ {
+ // appears to return data in reverse order
+ UINT32 lines[3];
+ lines[0] = get_field_code(LASERDISC_CODE_LINE1718, false);
+ lines[1] = get_field_code(LASERDISC_CODE_LINE17, false);
+ lines[2] = get_field_code(LASERDISC_CODE_LINE16, false);
+
+ // fill in the details
+ memset(m_vbi, 0, sizeof(m_vbi));
+ if (focus_on() && laser_on())
+ {
+ // loop over lines
+ for (int line = 0; line < 3; line++)
+ {
+ UINT8 *dest = &m_vbi[line * 7];
+ UINT32 data = lines[line];
+
+ // the logic only processes leadin/leadout/frame number codes
+ if (data == VBI_CODE_LEADIN || data == VBI_CODE_LEADOUT || (data & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
+ {
+ *dest++ = 0x09 | (((data & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE) ? 0x02 : 0x00);
+ *dest++ = 0x08;
+ *dest++ = (data >> 16) & 0x0f;
+ *dest++ = (data >> 12) & 0x0f;
+ *dest++ = (data >> 8) & 0x0f;
+ *dest++ = (data >> 4) & 0x0f;
+ *dest++ = (data >> 0) & 0x0f;
+ }
+ }
+ }
+
+ // signal that data is ready and reset the readback index
+ m_vbiready = true;
+ m_vbiindex = 0;
+ break;
+ }
+
+ // pass everything else onto the parent
+ default:
+ laserdisc_device::device_timer(timer, id, param, ptr);
+ break;
+ }
}
-/*-------------------------------------------------
- ldv1000_status_r - handle a parallel data read
- from the LD-V1000
--------------------------------------------------*/
+//-------------------------------------------------
+// device_rom_region - return a pointer to our
+// ROM region definitions
+//-------------------------------------------------
-static UINT8 ldv1000_status_r(laserdisc_state *ld)
+const rom_entry *pioneer_ldv1000_device::device_rom_region() const
{
- return ld->player->status;
+ return ROM_NAME(ldv1000);
}
-/*-------------------------------------------------
- vsync_off - timer callback to clear the VSYNC
- flag
--------------------------------------------------*/
+//-------------------------------------------------
+// device_mconfig_additions - return a pointer to
+// our machine config fragment
+//-------------------------------------------------
-static TIMER_CALLBACK( vsync_off )
+machine_config_constructor pioneer_ldv1000_device::device_mconfig_additions() const
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ld->player->vsync = FALSE;
+ return MACHINE_CONFIG_NAME(ldv1000);
}
-/*-------------------------------------------------
- vbi_data_fetch - timer callback to update the
- VBI data in the PIA as soon as it is ready;
- this must happy early in the frame because
- the player logic relies on fetching it here
--------------------------------------------------*/
+//-------------------------------------------------
+// player_vsync - VSYNC callback, called at the
+// start of the blanking period
+//-------------------------------------------------
-static TIMER_CALLBACK( vbi_data_fetch )
+void pioneer_ldv1000_device::player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
- UINT8 focus_on = !(player->portb1 & 0x01);
- UINT8 laser_on = (player->portb1 & 0x40);
- UINT32 lines[3];
-
- /* appears to return data in reverse order */
- lines[0] = laserdisc_get_field_code(ld->device, LASERDISC_CODE_LINE1718, FALSE);
- lines[1] = laserdisc_get_field_code(ld->device, LASERDISC_CODE_LINE17, FALSE);
- lines[2] = laserdisc_get_field_code(ld->device, LASERDISC_CODE_LINE16, FALSE);
-
- /* fill in the details */
- memset(player->vbi, 0, sizeof(player->vbi));
- if (focus_on && laser_on)
- {
- int line;
+ // generate interrupts if we hit the edges
+ slider_position sliderpos = get_slider_position();
+ m_z80_ctc->trigger(1, sliderpos == SLIDER_MINIMUM);
+ m_z80_ctc->trigger(2, sliderpos == SLIDER_MAXIMUM);
- /* loop over lines */
- for (line = 0; line < 3; line++)
- {
- UINT8 *dest = &player->vbi[line * 7];
- UINT32 data = lines[line];
+ // signal VSYNC and set a timer to turn it off
+ m_vsync = true;
+ timer_set(screen().scan_period() * 4, TID_VSYNC_OFF);
- /* the logic only processes leadin/leadout/frame number codes */
- if (data == VBI_CODE_LEADIN || data == VBI_CODE_LEADOUT || (data & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
- {
- *dest++ = 0x09 | (((data & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE) ? 0x02 : 0x00);
- *dest++ = 0x08;
- *dest++ = (data >> 16) & 0x0f;
- *dest++ = (data >> 12) & 0x0f;
- *dest++ = (data >> 8) & 0x0f;
- *dest++ = (data >> 4) & 0x0f;
- *dest++ = (data >> 0) & 0x0f;
- }
- }
- }
+ // also set a timer to fetch the VBI data when it is ready
+ timer_set(screen().time_until_pos(19*2), TID_VBI_DATA_FETCH);
- /* signal that data is ready and reset the readback index */
- player->vbiready = TRUE;
- player->vbiindex = 0;
+ // boost interleave for the first 1ms to improve communications
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_msec(1));
}
-/*-------------------------------------------------
- multijump_timer - called once for each track
- in a multijump sequence; we decrement the
- down counter and autostop when we hit 0
--------------------------------------------------*/
+//-------------------------------------------------
+// player_update - update callback, called on
+// the first visible line of the frame
+//-------------------------------------------------
-static TIMER_DEVICE_CALLBACK( multijump_timer )
+INT32 pioneer_ldv1000_device::player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
- int direction;
-
- /* bit 5 of port B on PPI 1 selects the direction of slider movement */
- direction = (player->portb1 & 0x20) ? 1 : -1;
- ldcore_advance_slider(ld, direction);
-
- /* update down counter and reschedule */
- if (--player->counter != 0)
- timer.adjust(MULTIJUMP_TRACK_TIME);
+ if (LOG_FRAMES_SEEN)
+ {
+ int frame = frame_from_metadata(vbi);
+ if (frame != FRAME_NOT_PRESENT) printf("== %d\n", frame);
+ }
+ return fieldnum;
}
-/*-------------------------------------------------
- ctc_interrupt - called when the CTC triggers
- an interrupt in the daisy chain
--------------------------------------------------*/
+//-------------------------------------------------
+// ctc_interrupt - called when the CTC triggers
+// an interrupt in the daisy chain
+//-------------------------------------------------
-static WRITE_LINE_DEVICE_HANDLER( ctc_interrupt )
+WRITE_LINE_MEMBER( pioneer_ldv1000_device::ctc_interrupt )
{
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- if (ld->player->cpu != NULL)
- device_set_input_line(ld->player->cpu, 0, state ? ASSERT_LINE : CLEAR_LINE);
+ m_z80_cpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
}
-/*-------------------------------------------------
- decoder_display_port_w - handle writes to the
- decoder/display chips
--------------------------------------------------*/
+//-------------------------------------------------
+// z80_decoder_display_port_w - handle writes to
+// the decoder/display chips
+//-------------------------------------------------
-static WRITE8_HANDLER( decoder_display_port_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::z80_decoder_display_port_w )
{
/*
TX/RX = /A0 (A0=0 -> TX, A0=1 -> RX)
@@ -442,112 +410,102 @@ static WRITE8_HANDLER( decoder_display_port_w )
Display is 6-bit
Decoder is 4-bit
*/
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- /* writes to offset 0 select the target for reads/writes of actual data */
+ // writes to offset 0 select the target for reads/writes of actual data
if (offset == 0)
{
- player->portselect = data;
- player->dispindex = 0;
+ m_portselect = data;
+ m_dispindex = 0;
}
- /* writes to offset 2 constitute actual writes targeted toward the display and decoder chips */
+ // writes to offset 2 constitute actual writes targeted toward the display and decoder chips
else if (offset == 2)
{
- /* selections 0 and 1 represent the two display lines; only 6 bits are transferred */
- if (player->portselect < 2)
- player->display[player->portselect][player->dispindex++ % 20] = data & 0x3f;
+ // selections 0 and 1 represent the two display lines; only 6 bits are transferred
+ if (m_portselect < 2)
+ m_display[m_portselect][m_dispindex++ % 20] = data & 0x3f;
}
}
-/*-------------------------------------------------
- decoder_display_port_r - handle reads from the
- decoder/display chips
--------------------------------------------------*/
+//-------------------------------------------------
+// z80_decoder_display_port_r - handle reads from the
+// decoder/display chips
+//-------------------------------------------------
-static READ8_HANDLER( decoder_display_port_r )
+READ8_MEMBER( pioneer_ldv1000_device::z80_decoder_display_port_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
+ // reads from offset 3 constitute actual reads from the display and decoder chips
UINT8 result = 0;
-
- /* reads from offset 3 constitute actual reads from the display and decoder chips */
if (offset == 3)
{
- /* selection 4 represents the VBI data reading */
- if (player->portselect == 4)
+ // selection 4 represents the VBI data reading
+ if (m_portselect == 4)
{
- player->vbiready = FALSE;
- result = player->vbi[player->vbiindex++ % ARRAY_LENGTH(player->vbi)];
+ m_vbiready = false;
+ result = m_vbi[m_vbiindex++ % ARRAY_LENGTH(m_vbi)];
}
}
return result;
}
-/*-------------------------------------------------
- controller_r - handle read of the data from
- the controlling system
--------------------------------------------------*/
+//-------------------------------------------------
+// z80_controller_r - handle read of the data from
+// the controlling system
+//-------------------------------------------------
-static READ8_HANDLER( controller_r )
+READ8_MEMBER( pioneer_ldv1000_device::z80_controller_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
-
- /* note that this is a cheesy implementation; the real thing relies on exquisite timing */
- UINT8 result = ld->player->command ^ 0xff;
- ld->player->command = 0xff;
+ // note that this is a cheesy implementation; the real thing relies on exquisite timing
+ UINT8 result = m_command ^ 0xff;
+ m_command = 0xff;
return result;
}
-/*-------------------------------------------------
- controller_w - handle status latch writes
--------------------------------------------------*/
+//-------------------------------------------------
+// z80_controller_w - handle status latch writes
+//-------------------------------------------------
-static WRITE8_HANDLER( controller_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::z80_controller_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- if (LOG_STATUS_CHANGES && data != ld->player->status)
- printf("%04X:CONTROLLER.W=%02X\n", cpu_get_pc(&space->device()), data);
- ld->player->status = data;
+ if (LOG_STATUS_CHANGES && data != m_status)
+ printf("%04X:CONTROLLER.W=%02X\n", cpu_get_pc(&space.device()), data);
+ m_status = data;
}
-/*-------------------------------------------------
- ppi0_porta_w - handle writes to port A of
- PPI #0
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi0_porta_w - handle writes to port A of
+// PPI #0
+//-------------------------------------------------
-static WRITE8_DEVICE_HANDLER( ppi0_porta_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::ppi0_porta_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ld->player->counter_start = data;
+ m_counter_start = data;
if (LOG_PORT_IO)
- printf("%s:PORTA.0=%02X\n", device->machine().describe_context(), data);
+ printf("%s:PORTA.0=%02X\n", machine().describe_context(), data);
}
-/*-------------------------------------------------
- ppi0_portb_r - handle reads from port B of
- PPI #0
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi0_portb_r - handle reads from port B of
+// PPI #0
+//-------------------------------------------------
-static READ8_DEVICE_HANDLER( ppi0_portb_r )
+READ8_MEMBER( pioneer_ldv1000_device::ppi0_portb_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- return ld->player->counter;
+ return m_counter;
}
-/*-------------------------------------------------
- ppi0_portc_r - handle reads from port C of
- PPI #0
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi0_portc_r - handle reads from port C of
+// PPI #0
+//-------------------------------------------------
-static READ8_DEVICE_HANDLER( ppi0_portc_r )
+READ8_MEMBER( pioneer_ldv1000_device::ppi0_portc_r )
{
/*
$10 = /VSYNC
@@ -555,25 +513,22 @@ static READ8_DEVICE_HANDLER( ppi0_portc_r )
$40 = TRKG LOOP (N24-1)
$80 = DUMP (N20-1) -- code reads the state and waits for it to change
*/
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ldplayer_data *player = ld->player;
- UINT8 result = 0x00;
- if (!player->vsync)
+ UINT8 result = 0x00;
+ if (!m_vsync)
result |= 0x10;
- if (!player->vbiready)
+ if (!m_vbiready)
result |= 0x20;
-
return result;
}
-/*-------------------------------------------------
- ppi0_portc_w - handle writes to port C of
- PPI #0
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi0_portc_w - handle writes to port C of
+// PPI #0
+//-------------------------------------------------
-static WRITE8_DEVICE_HANDLER( ppi0_portc_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::ppi0_portc_w )
{
/*
$01 = preload on up/down counters
@@ -581,37 +536,35 @@ static WRITE8_DEVICE_HANDLER( ppi0_portc_w )
$04 = SCAN MODE
$08 = n/c
*/
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->portc0;
- /* set the new value */
- player->portc0 = data;
+ // set the new value
+ UINT8 prev = m_portc0;
+ m_portc0 = data;
if (LOG_PORT_IO && ((data ^ prev) & 0x0f) != 0)
{
- printf("%s:PORTC.0=%02X", device->machine().describe_context(), data);
+ printf("%s:PORTC.0=%02X", machine().describe_context(), data);
if (data & 0x01) printf(" PRELOAD");
if (!(data & 0x02)) printf(" /MULTIJUMP");
if (data & 0x04) printf(" SCANMODE");
printf("\n");
}
- /* on the rising edge of bit 0, clock the down counter load */
+ // on the rising edge of bit 0, clock the down counter load
if ((data & 0x01) && !(prev & 0x01))
- player->counter = player->counter_start;
+ m_counter = m_counter_start;
- /* on the falling edge of bit 1, start the multi-jump timer */
+ // on the falling edge of bit 1, start the multi-jump timer
if (!(data & 0x02) && (prev & 0x02))
- player->multitimer->adjust(MULTIJUMP_TRACK_TIME);
+ m_multitimer->adjust(MULTIJUMP_TRACK_TIME);
}
-/*-------------------------------------------------
- ppi1_porta_r - handle reads from port A of
- PPI #1
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi1_porta_r - handle reads from port A of
+// PPI #1
+//-------------------------------------------------
-static READ8_DEVICE_HANDLER( ppi1_porta_r )
+READ8_MEMBER( pioneer_ldv1000_device::ppi1_porta_r )
{
/*
$01 = /FOCS LOCK
@@ -623,48 +576,45 @@ static READ8_DEVICE_HANDLER( ppi1_porta_r )
$40 = /INT LOCK
$80 = 8 INCH CHK
*/
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ldplayer_data *player = ld->player;
- slider_position sliderpos = ldcore_get_slider_position(ld);
- UINT8 focus_on = !(player->portb1 & 0x01);
- UINT8 spdl_on = !(player->portb1 & 0x02);
+
+ slider_position sliderpos = get_slider_position();
UINT8 result = 0x00;
- /* bit 0: /FOCUS LOCK */
- if (!focus_on)
+ // bit 0: /FOCUS LOCK
+ if (!focus_on())
result |= 0x01;
- /* bit 1: /SPDL LOCK */
- if (!spdl_on)
+ // bit 1: /SPDL LOCK
+ if (!spdl_on())
result |= 0x02;
- /* bit 2: INSIDE signal */
+ // bit 2: INSIDE signal
if (sliderpos == SLIDER_MINIMUM)
result |= 0x04;
- /* bit 3: OUTSIDE signal */
+ // bit 3: OUTSIDE signal
if (sliderpos == SLIDER_MAXIMUM)
result |= 0x08;
- /* bit 4: MOTOR STOP */
+ // bit 4: MOTOR STOP
- /* bit 5: +5V/test point */
+ // bit 5: +5V/test point
result |= 0x20;
- /* bit 6: /INT LOCK */
+ // bit 6: /INT LOCK
- /* bit 7: 8 INCH CHK */
+ // bit 7: 8 INCH CHK
return result;
}
-/*-------------------------------------------------
- ppi1_portb_w - handle writes to port B of
- PPI #1
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi1_portb_w - handle writes to port B of
+// PPI #1
+//-------------------------------------------------
-static WRITE8_DEVICE_HANDLER( ppi1_portb_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::ppi1_portb_w )
{
/*
$01 = /FOCS ON
@@ -676,16 +626,13 @@ static WRITE8_DEVICE_HANDLER( ppi1_portb_w )
$40 = /LASER ON
$80 = /SYNC ST0
*/
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->portb1;
- int direction;
- /* set the new value */
- player->portb1 = data;
+ // set the new value
+ UINT8 prev = m_portb1;
+ m_portb1 = data;
if (LOG_PORT_IO && ((data ^ prev) & 0xff) != 0)
{
- printf("%s:PORTB.1=%02X:", device->machine().describe_context(), data);
+ printf("%s:PORTB.1=%02X:", machine().describe_context(), data);
if (!(data & 0x01)) printf(" FOCSON");
if (!(data & 0x02)) printf(" SPDLRUN");
if (!(data & 0x04)) printf(" JUMPTRIG");
@@ -695,33 +642,33 @@ static WRITE8_DEVICE_HANDLER( ppi1_portb_w )
printf("\n");
}
- /* bit 5 selects the direction of slider movement for JUMP TRG and scanning */
- direction = (data & 0x20) ? 1 : -1;
+ // bit 5 selects the direction of slider movement for JUMP TRG and scanning
+ int direction = (data & 0x20) ? 1 : -1;
- /* on the falling edge of bit 2, jump one track in either direction */
+ // on the falling edge of bit 2, jump one track in either direction
if (!(data & 0x04) && (prev & 0x04))
- ldcore_advance_slider(ld, direction);
+ advance_slider(direction);
- /* bit 3 low enables scanning */
+ // bit 3 low enables scanning
if (!(data & 0x08))
{
- /* bit 4 selects the speed */
+ // bit 4 selects the speed
int delta = (data & 0x10) ? SCAN_SPEED : SEEK_FAST_SPEED;
- ldcore_set_slider_speed(ld, delta * direction);
+ set_slider_speed(delta * direction);
}
- /* bit 3 high stops scanning */
+ // bit 3 high stops scanning
else
- ldcore_set_slider_speed(ld, 0);
+ set_slider_speed(0);
}
-/*-------------------------------------------------
- ppi1_portc_w - handle writes to port C of
- PPI #1
--------------------------------------------------*/
+//-------------------------------------------------
+// ppi1_portc_w - handle writes to port C of
+// PPI #1
+//-------------------------------------------------
-static WRITE8_DEVICE_HANDLER( ppi1_portc_w )
+WRITE8_MEMBER( pioneer_ldv1000_device::ppi1_portc_w )
{
/*
$01 = AUD 1
@@ -733,15 +680,13 @@ static WRITE8_DEVICE_HANDLER( ppi1_portc_w )
$40 = SIZE 8/12
$80 = /LED CAV
*/
- laserdisc_state *ld = ldcore_get_safe_token(device->owner());
- ldplayer_data *player = ld->player;
- UINT8 prev = player->portc1;
- /* set the new value */
- player->portc1 = data;
+ // set the new value
+ UINT8 prev = m_portc1;
+ m_portc1 = data;
if (LOG_PORT_IO && ((data ^ prev) & 0xcf) != 0)
{
- printf("%s:PORTC.1=%02X", device->machine().describe_context(), data);
+ printf("%s:PORTC.1=%02X", machine().describe_context(), data);
if (data & 0x01) printf(" AUD1");
if (data & 0x02) printf(" AUD2");
if (data & 0x04) printf(" AUDEN");
@@ -753,9 +698,9 @@ static WRITE8_DEVICE_HANDLER( ppi1_portc_w )
printf("\n");
}
- /* video squelch is controlled by bit 3 */
- ldcore_set_video_squelch(ld, (data & 0x08) == 0);
+ // video squelch is controlled by bit 3
+ set_video_squelch((data & 0x08) == 0);
- /* audio squelch is controlled by bits 0-2 */
- ldcore_set_audio_squelch(ld, !(data & 0x04) || !(data & 0x01), !(data & 0x04) || !(data & 0x02));
+ // audio squelch is controlled by bits 0-2
+ set_audio_squelch(!(data & 0x04) || !(data & 0x01), !(data & 0x04) || !(data & 0x02));
}
diff --git a/src/emu/machine/ldv1000.h b/src/emu/machine/ldv1000.h
new file mode 100644
index 00000000000..b42ccf54ff2
--- /dev/null
+++ b/src/emu/machine/ldv1000.h
@@ -0,0 +1,158 @@
+/*************************************************************************
+
+ ldv1000.h
+
+ Pioneer LD-V1000 laserdisc emulation.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#pragma once
+
+#ifndef __LDV1000_H__
+#define __LDV1000_H__
+
+#include "laserdsc.h"
+#include "cpu/z80/z80.h"
+#include "cpu/mcs48/mcs48.h"
+#include "machine/z80ctc.h"
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_LASERDISC_LDV1000_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PIONEER_LDV1000, 0) \
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+extern const device_type PIONEER_LDV1000;
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> pioneer_ldv1000_device
+
+// base ldv1000 class
+class pioneer_ldv1000_device : public laserdisc_device
+{
+public:
+ // construction/destruction
+ pioneer_ldv1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // input and output
+ void data_w(UINT8 data);
+ void enter_w(UINT8 data);
+ UINT8 status_r() const { return m_status; }
+ UINT8 status_strobe_r() const { return (m_portc1 & 0x20) ? ASSERT_LINE : CLEAR_LINE; }
+ UINT8 command_strobe_r() const { return (m_portc1 & 0x10) ? ASSERT_LINE : CLEAR_LINE; }
+
+protected:
+ // timer IDs
+ enum
+ {
+ TID_MULTIJUMP = TID_FIRST_PLAYER_TIMER,
+ TID_VSYNC_OFF,
+ TID_VBI_DATA_FETCH
+ };
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual void player_overlay(bitmap_yuy16 &bitmap) { }
+
+ // internal helpers
+ bool focus_on() const { return !(m_portb1 & 0x01); }
+ bool spdl_on() const { return !(m_portb1 & 0x02); }
+ bool laser_on() const { return (m_portb1 & 0x40); }
+
+public:
+ // internal read/write handlers
+ DECLARE_WRITE_LINE_MEMBER( ctc_interrupt );
+ DECLARE_WRITE8_MEMBER( z80_decoder_display_port_w );
+ DECLARE_READ8_MEMBER( z80_decoder_display_port_r );
+ DECLARE_READ8_MEMBER( z80_controller_r );
+ DECLARE_WRITE8_MEMBER( z80_controller_w );
+ DECLARE_WRITE8_MEMBER( ppi0_porta_w );
+ DECLARE_READ8_MEMBER( ppi0_portb_r );
+ DECLARE_READ8_MEMBER( ppi0_portc_r );
+ DECLARE_WRITE8_MEMBER( ppi0_portc_w );
+ DECLARE_READ8_MEMBER( ppi1_porta_r );
+ DECLARE_WRITE8_MEMBER( ppi1_portb_w );
+ DECLARE_WRITE8_MEMBER( ppi1_portc_w );
+
+protected:
+ // internal state
+ required_device<z80_device> m_z80_cpu; /* CPU index of the Z80 */
+ required_device<z80ctc_device> m_z80_ctc; /* CTC device */
+ emu_timer * m_multitimer; /* multi-jump timer device */
+
+ /* communication status */
+ UINT8 m_command; /* command byte to the player */
+ UINT8 m_status; /* status byte from the player */
+ bool m_vsync; /* VSYNC state */
+
+ /* I/O port states */
+ UINT8 m_counter_start; /* starting value for counter */
+ UINT8 m_counter; /* current counter value */
+ UINT8 m_portc0; /* port C on PPI 0 */
+ UINT8 m_portb1; /* port B on PPI 1 */
+ UINT8 m_portc1; /* port C on PPI 1 */
+
+ /* display/decode circuit emulation */
+ UINT8 m_portselect; /* selection of which port to access */
+ UINT8 m_display[2][20]; /* display lines */
+ UINT8 m_dispindex; /* index within the display line */
+ UINT8 m_vbi[7*3]; /* VBI data */
+ bool m_vbiready; /* VBI ready flag */
+ UINT8 m_vbiindex; /* index within the VBI data */
+};
+
+
+#endif
diff --git a/src/emu/machine/ldvp931.c b/src/emu/machine/ldvp931.c
index f9738c9fcc3..622fe162fdb 100644
--- a/src/emu/machine/ldvp931.c
+++ b/src/emu/machine/ldvp931.c
@@ -4,8 +4,36 @@
Philips 22VP931 laserdisc emulation.
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
**************************************************************************
@@ -16,127 +44,60 @@
*************************************************************************/
+#define ADDRESS_MAP_MODERN
+
#include "emu.h"
-#include "ldcore.h"
-#include "cpu/mcs48/mcs48.h"
+#include "ldvp931.h"
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
#define LOG_COMMANDS 0
#define LOG_PORTS 0
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
-/* scanning speeds */
-#define SCAN_SPEED (2000 / 30) /* 2000 frames/second */
-#define SCAN_FAST_SPEED (4000 / 30) /* 4000 frames/second */
+// scanning speeds
+#define SCAN_SPEED (2000 / 30) // 2000 frames/second
+#define SCAN_FAST_SPEED (4000 / 30) // 4000 frames/second
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
-/* player-specific data */
-struct _ldplayer_data
-{
- /* low-level emulation data */
- device_t *cpu; /* CPU index of the 8049 */
- timer_device * tracktimer; /* timer device */
- vp931_data_ready_func data_ready_cb; /* data ready callback */
-
- /* I/O port states */
- UINT8 out0; /* output 0 state */
- UINT8 out1; /* output 1 state */
- UINT8 port1; /* port 1 state */
-
- /* DATIC circuit implementation */
- UINT8 daticval; /* latched DATIC value */
- UINT8 daticerp; /* /ERP value from DATIC */
- UINT8 datastrobe; /* DATA STROBE line from DATIC */
-
- /* communication status */
- UINT8 fromcontroller; /* command byte from the controller */
- UINT8 fromcontroller_pending; /* TRUE if data is pending */
- UINT8 tocontroller; /* command byte to the controller */
- UINT8 tocontroller_pending; /* TRUE if data is pending */
-
- /* tracking */
- INT8 trackdir; /* direction of tracking */
- UINT8 trackstate; /* state of tracking */
-
- /* debugging */
- UINT8 cmdbuf[3]; /* 3 bytes worth of commands */
- UINT8 cmdcount; /* number of command bytes seen */
- INT16 advanced; /* number of frames advanced */
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void vp931_init(laserdisc_state *ld);
-static void vp931_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static INT32 vp931_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime);
-static void vp931_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data);
-static UINT8 vp931_data_r(laserdisc_state *ld);
-static UINT8 vp931_ready(laserdisc_state *ld);
-static UINT8 vp931_data_ready(laserdisc_state *ld);
-
-static TIMER_CALLBACK( vbi_data_fetch );
-static TIMER_CALLBACK( deferred_data_w );
-static TIMER_CALLBACK( irq_off );
-static TIMER_CALLBACK( datastrobe_off );
-static TIMER_CALLBACK( erp_off );
-static TIMER_DEVICE_CALLBACK( track_timer );
-
-static WRITE8_HANDLER( output0_w );
-static WRITE8_HANDLER( output1_w );
-static WRITE8_HANDLER( lcd_w );
-static READ8_HANDLER( unknown_r );
-static READ8_HANDLER( keypad_r );
-static READ8_HANDLER( datic_r );
-static READ8_HANDLER( from_controller_r );
-static WRITE8_HANDLER( to_controller_w );
-static READ8_HANDLER( port1_r );
-static WRITE8_HANDLER( port1_w );
-static READ8_HANDLER( port2_r );
-static WRITE8_HANDLER( port2_w );
-static READ8_HANDLER( t0_r );
-static READ8_HANDLER( t1_r );
-
-
-
-/***************************************************************************
- 22VP931 ROM AND MACHINE INTERFACES
-***************************************************************************/
-
-static ADDRESS_MAP_START( vp931_portmap, AS_IO, 8 )
- AM_RANGE(0x00, 0x00) AM_MIRROR(0xcf) AM_READWRITE(keypad_r, output0_w)
- AM_RANGE(0x10, 0x10) AM_MIRROR(0xcf) AM_READWRITE(unknown_r, output1_w)
- AM_RANGE(0x20, 0x20) AM_MIRROR(0xcf) AM_READWRITE(datic_r, lcd_w)
- AM_RANGE(0x30, 0x30) AM_MIRROR(0xcf) AM_READWRITE(from_controller_r, to_controller_w)
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(port1_r, port1_w)
- AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(port2_r, port2_w)
- AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r)
- AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
+// devices
+const device_type PHILLIPS_22VP931 = &device_creator<phillips_22vp931_device>;
+
+
+
+//**************************************************************************
+// 22VP931 ROM AND MACHINE INTERFACES
+//**************************************************************************
+
+static ADDRESS_MAP_START( vp931_portmap, AS_IO, 8, phillips_22vp931_device )
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0xcf) AM_READWRITE(i8049_keypad_r, i8049_output0_w)
+ AM_RANGE(0x10, 0x10) AM_MIRROR(0xcf) AM_READWRITE(i8049_unknown_r, i8049_output1_w)
+ AM_RANGE(0x20, 0x20) AM_MIRROR(0xcf) AM_READWRITE(i8049_datic_r, i8049_lcd_w)
+ AM_RANGE(0x30, 0x30) AM_MIRROR(0xcf) AM_READWRITE(i8049_from_controller_r, i8049_to_controller_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(i8049_port1_r, i8049_port1_w)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8049_port2_r, i8049_port2_w)
+ AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8049_t0_r)
+ AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8049_t1_r)
ADDRESS_MAP_END
static MACHINE_CONFIG_FRAGMENT( vp931 )
MCFG_CPU_ADD("vp931", I8049, XTAL_11MHz)
MCFG_CPU_IO_MAP(vp931_portmap)
- MCFG_TIMER_ADD("tracktimer", track_timer)
MACHINE_CONFIG_END
@@ -147,306 +108,268 @@ ROM_END
-/***************************************************************************
- 22VP931 PLAYER INTERFACE
-***************************************************************************/
-
-const ldplayer_interface vp931_interface =
-{
- LASERDISC_TYPE_PHILLIPS_22VP931, /* type of the player */
- sizeof(ldplayer_data), /* size of the state */
- "Phillips 22VP931", /* name of the player */
- "22vp931", /* shortname of the player */
- ROM_NAME(vp931), /* pointer to ROM region information */
- MACHINE_CONFIG_NAME(vp931), /* pointer to machine configuration */
- vp931_init, /* initialization callback */
- vp931_vsync, /* vsync callback */
- vp931_update, /* update callback */
- NULL, /* overlay callback */
- vp931_data_w, /* parallel data write */
- { /* single line write: */
- NULL, /* LASERDISC_LINE_ENTER */
- NULL /* LASERDISC_LINE_CONTROL */
- },
- vp931_data_r, /* parallel data read */
- { /* single line read: */
- vp931_ready, /* LASERDISC_LINE_READY */
- NULL, /* LASERDISC_LINE_STATUS */
- NULL, /* LASERDISC_LINE_COMMAND */
- vp931_data_ready, /* LASERDISC_LINE_DATA_AVAIL */
- }
-};
-
-
-
-/***************************************************************************
- PUBLIC FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- vp931_set_data_ready_callback - set the data
- ready callback
--------------------------------------------------*/
-
-void vp931_set_data_ready_callback(device_t *device, vp931_data_ready_func callback)
+//**************************************************************************
+// PHILLIPS 22VP931 IMPLEMENTATION
+//**************************************************************************
+
+//-------------------------------------------------
+// phillips_22vp931_device - constructor
+//-------------------------------------------------
+
+phillips_22vp931_device::phillips_22vp931_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : laserdisc_device(mconfig, PHILLIPS_22VP931, "Phillips 22VP931", "22vp931", tag, owner, clock),
+ m_i8049_cpu(*this, "vp931"),
+ m_tracktimer(NULL),
+ m_i8049_out0(0),
+ m_i8049_out1(0),
+ m_i8049_port1(0),
+ m_daticval(0),
+ m_daticerp(0),
+ m_datastrobe(0),
+ m_fromcontroller(0),
+ m_fromcontroller_pending(false),
+ m_tocontroller(0),
+ m_tocontroller_pending(false),
+ m_trackdir(0),
+ m_trackstate(0),
+ m_cmdcount(0),
+ m_advanced(0)
{
- laserdisc_state *ld = ldcore_get_safe_token(device);
- ld->player->data_ready_cb = callback;
}
+//-------------------------------------------------
+// reset_w - write to the reset line
+//-------------------------------------------------
-/***************************************************************************
- PHILLIPS 22VP931 IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- vp931_init - player-specific initialization
--------------------------------------------------*/
-
-static void vp931_init(laserdisc_state *ld)
+void phillips_22vp931_device::reset_w(UINT8 data)
{
- astring tempstring;
- ldplayer_data *player = ld->player;
- vp931_data_ready_func cbsave;
-
- /* reset our state */
- cbsave = player->data_ready_cb;
- memset(player, 0, sizeof(*player));
- player->data_ready_cb = cbsave;
-
- /* find our devices */
- player->cpu = ld->device->subdevice("vp931");
- player->tracktimer = downcast<timer_device *>(ld->device->subdevice("tracktimer"));
- player->tracktimer->set_ptr(ld);
+ // control the CPU state
+ m_i8049_cpu->set_input_line(INPUT_LINE_RESET, data);
+
+ // on an assert, reset the device state as well
+ if (data == ASSERT_LINE)
+ reset();
}
-/*-------------------------------------------------
- vp931_vsync - VSYNC callback, called at the
- start of the blanking period
--------------------------------------------------*/
+//-------------------------------------------------
+// data_r - handle a parallel data read from the
+// 22VP931
+//-------------------------------------------------
-static void vp931_vsync(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
+UINT8 phillips_22vp931_device::data_r()
{
- /* reset our command counter (debugging only) */
- ld->player->cmdcount = 0;
-
- /* set the ERP signal to 1 to indicate start of frame, and set a timer to turn it off */
- ld->player->daticerp = 1;
- ld->device->machine().scheduler().timer_set(ld->screen->time_until_pos(15*2), FUNC(erp_off), 0, ld);
-}
-
-
-/*-------------------------------------------------
- vp931_update - update callback, called on
- the first visible line of the frame
--------------------------------------------------*/
-
-static INT32 vp931_update(laserdisc_state *ld, const vbi_metadata *vbi, int fieldnum, attotime curtime)
-{
- /* set the first VBI timer to go at the start of line 16 */
- ld->device->machine().scheduler().timer_set(ld->screen->time_until_pos(16*2), FUNC(vbi_data_fetch), LASERDISC_CODE_LINE16 << 2, ld);
-
- /* play forward by default */
- return fieldnum;
-}
-
-
-/*-------------------------------------------------
- vp931_data_w - handle a parallel data write
- to the 22VP931
--------------------------------------------------*/
-
-static void vp931_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
-{
- /* set a timer to synchronize execution before sending the data */
- ld->device->machine().scheduler().synchronize(FUNC(deferred_data_w), data, ld);
-}
-
-
-/*-------------------------------------------------
- vp931_data_r - handle a parallel data read
- from the 22VP931
--------------------------------------------------*/
-
-static UINT8 vp931_data_r(laserdisc_state *ld)
-{
- ldplayer_data *player = ld->player;
-
- /* if data is pending, clear the pending flag and notify any callbacks */
- if (player->tocontroller_pending)
+ // if data is pending, clear the pending flag and notify any callbacks
+ if (m_tocontroller_pending)
{
- player->tocontroller_pending = FALSE;
- if (player->data_ready_cb != NULL)
- (*player->data_ready_cb)(ld->device, FALSE);
+ m_tocontroller_pending = false;
+ if (!m_data_ready.isnull())
+ m_data_ready(*this, false);
}
- /* also boost interleave for 4 scanlines to ensure proper communications */
- ld->device->machine().scheduler().boost_interleave(attotime::zero, ld->screen->scan_period() * 4);
- return player->tocontroller;
+ // also boost interleave for 4 scanlines to ensure proper communications
+ machine().scheduler().boost_interleave(attotime::zero, screen().scan_period() * 4);
+ return m_tocontroller;
}
-/*-------------------------------------------------
- vp931_ready - return the status of "ready"
- to the caller (ready to accept another
- command)
--------------------------------------------------*/
+//-------------------------------------------------
+// device_start - device initialization
+//-------------------------------------------------
-static UINT8 vp931_ready(laserdisc_state *ld)
+void phillips_22vp931_device::device_start()
{
- /* if data is pending, we are not ready */
- ldplayer_data *player = ld->player;
- return player->fromcontroller_pending ? CLEAR_LINE : ASSERT_LINE;
+ // pass through to the parent
+ laserdisc_device::device_start();
+
+ // allocate a timer
+ m_tracktimer = timer_alloc(TID_HALF_TRACK);
}
-/*-------------------------------------------------
- vp931_data_ready - return the status of
- "data available" to the caller
--------------------------------------------------*/
+//-------------------------------------------------
+// device_reset - device reset
+//-------------------------------------------------
-static UINT8 vp931_data_ready(laserdisc_state *ld)
+void phillips_22vp931_device::device_reset()
{
- ldplayer_data *player = ld->player;
- return player->tocontroller_pending ? ASSERT_LINE : CLEAR_LINE;
+ // pass through to the parent
+ laserdisc_device::device_reset();
+
+ // reset our state
+ m_i8049_out0 = 0;
+ m_i8049_out1 = 0;
+ m_i8049_port1 = 0;
+
+ m_daticval = 0;
+ m_daticerp = 0;
+ m_datastrobe = 0;
+
+ m_fromcontroller = 0;
+ m_fromcontroller_pending = false;
+ m_tocontroller = 0;
+ m_tocontroller_pending = false;
+
+ m_trackdir = 0;
+ m_trackstate = 0;
+
+ m_cmdcount = 0;
+ m_advanced = 0;
}
-/*-------------------------------------------------
- vbi_data_fetch - called 4 times per scanline
- on lines 16, 17, and 18 to feed the VBI data
- through one byte at a time
--------------------------------------------------*/
+//-------------------------------------------------
+// device_timer - handle timers set by this
+// device
+//-------------------------------------------------
-static TIMER_CALLBACK( vbi_data_fetch )
+void phillips_22vp931_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
- int which = param & 3;
- int line = param >> 2;
- UINT32 code = 0;
-
- /* fetch the code and compute the DATIC latched value */
- if (line >= LASERDISC_CODE_LINE16 && line <= LASERDISC_CODE_LINE18)
- code = laserdisc_get_field_code(ld->device, line, FALSE);
-
- /* at the start of each line, signal an interrupt and use a timer to turn it off */
- if (which == 0)
+ switch (id)
{
- device_set_input_line(player->cpu, MCS48_INPUT_IRQ, ASSERT_LINE);
- machine.scheduler().timer_set(attotime::from_nsec(5580), FUNC(irq_off), 0, ld);
- }
-
- /* clock the data strobe on each subsequent callback */
- else if (code != 0)
- {
- player->daticval = code >> (8 * (3 - which));
- player->datastrobe = 1;
- machine.scheduler().timer_set(attotime::from_nsec(5000), FUNC(datastrobe_off), 0, ld);
- }
-
- /* determine the next bit to fetch and reprime ourself */
- if (++which == 4)
- {
- which = 0;
- line++;
+ case TID_VBI_DATA_FETCH:
+ {
+ UINT32 line = param >> 2;
+ int which = param & 3;
+ UINT32 code = 0;
+
+ // fetch the code and compute the DATIC latched value
+ if (line >= LASERDISC_CODE_LINE16 && line <= LASERDISC_CODE_LINE18)
+ code = get_field_code(laserdisc_field_code(line), false);
+
+ // at the start of each line, signal an interrupt and use a timer to turn it off
+ if (which == 0)
+ {
+ m_i8049_cpu->set_input_line(MCS48_INPUT_IRQ, ASSERT_LINE);
+ timer_set(attotime::from_nsec(5580), TID_IRQ_OFF);
+ }
+
+ // clock the data strobe on each subsequent callback
+ else if (code != 0)
+ {
+ m_daticval = code >> (8 * (3 - which));
+ m_datastrobe = 1;
+ timer_set(attotime::from_nsec(5000), TID_DATA_STROBE_OFF);
+ }
+
+ // determine the next bit to fetch and reprime ourself
+ if (++which == 4)
+ {
+ which = 0;
+ line++;
+ }
+ if (line <= LASERDISC_CODE_LINE18 + 1)
+ timer_set(screen().time_until_pos(line*2, which * 2 * screen().width() / 4), TID_VBI_DATA_FETCH, (line << 2) + which);
+ break;
+ }
+
+ case TID_DEFERRED_DATA:
+ // set the value and mark it pending
+ if (LOG_COMMANDS && m_fromcontroller_pending)
+ printf("Dropped previous command byte\n");
+ m_fromcontroller = param;
+ m_fromcontroller_pending = true;
+
+ // track the commands for debugging purposes
+ if (m_cmdcount < ARRAY_LENGTH(m_cmdbuf))
+ {
+ m_cmdbuf[m_cmdcount++ % 3] = param;
+ if (LOG_COMMANDS && m_cmdcount % 3 == 0)
+ printf("Cmd: %02X %02X %02X\n", m_cmdbuf[0], m_cmdbuf[1], m_cmdbuf[2]);
+ }
+ break;
+
+ case TID_IRQ_OFF:
+ m_i8049_cpu->set_input_line(MCS48_INPUT_IRQ, CLEAR_LINE);
+ break;
+
+ case TID_DATA_STROBE_OFF:
+ m_datastrobe = 0;
+ break;
+
+ case TID_ERP_OFF:
+ m_daticerp = 0;
+ break;
+
+ case TID_HALF_TRACK:
+ // advance by the count and toggle the state
+ m_trackstate ^= 1;
+ if ((m_trackdir < 0 && !m_trackstate) || (m_trackdir > 0 && m_trackstate))
+ {
+ advance_slider(m_trackdir);
+ m_advanced += m_trackdir;
+ }
+ break;
+
+ // pass everything else onto the parent
+ default:
+ laserdisc_device::device_timer(timer, id, param, ptr);
+ break;
}
- if (line <= LASERDISC_CODE_LINE18 + 1)
- machine.scheduler().timer_set(ld->screen->time_until_pos(line*2, which * 2 * ld->screen->width() / 4), FUNC(vbi_data_fetch), (line << 2), ld);
}
-/*-------------------------------------------------
- deferred_data_w - handle a write from the
- external controller
--------------------------------------------------*/
+//-------------------------------------------------
+// device_rom_region - return a pointer to our
+// ROM region definitions
+//-------------------------------------------------
-static TIMER_CALLBACK( deferred_data_w )
+const rom_entry *phillips_22vp931_device::device_rom_region() const
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
-
- /* set the value and mark it pending */
- if (LOG_COMMANDS && player->fromcontroller_pending)
- printf("Dropped previous command byte\n");
- player->fromcontroller = param;
- player->fromcontroller_pending = TRUE;
-
- /* track the commands for debugging purposes */
- if (player->cmdcount < ARRAY_LENGTH(player->cmdbuf))
- {
- player->cmdbuf[player->cmdcount++ % 3] = param;
- if (LOG_COMMANDS && player->cmdcount % 3 == 0)
- printf("Cmd: %02X %02X %02X\n", player->cmdbuf[0], player->cmdbuf[1], player->cmdbuf[2]);
- }
+ return ROM_NAME(vp931);
}
-/*-------------------------------------------------
- irq_off - turn off the 8048 IRQ signal
--------------------------------------------------*/
+//-------------------------------------------------
+// device_mconfig_additions - return a pointer to
+// our machine config fragment
+//-------------------------------------------------
-static TIMER_CALLBACK( irq_off )
+machine_config_constructor phillips_22vp931_device::device_mconfig_additions() const
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- device_set_input_line(ld->player->cpu, MCS48_INPUT_IRQ, CLEAR_LINE);
+ return MACHINE_CONFIG_NAME(vp931);
}
-/*-------------------------------------------------
- datastrobe_off - turn off the DATIC data
- strobe signal
--------------------------------------------------*/
+//-------------------------------------------------
+// player_vsync - VSYNC callback, called at the
+// start of the blanking period
+//-------------------------------------------------
-static TIMER_CALLBACK( datastrobe_off )
+void phillips_22vp931_device::player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ld->player->datastrobe = 0;
-}
-
+ // reset our command counter (debugging only)
+ m_cmdcount = 0;
-/*-------------------------------------------------
- erp_off - turn off the DATIC ERP signal
--------------------------------------------------*/
-
-static TIMER_CALLBACK( erp_off )
-{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ld->player->daticerp = 0;
+ // set the ERP signal to 1 to indicate start of frame, and set a timer to turn it off
+ m_daticerp = 1;
+ timer_set(screen().time_until_pos(15*2), TID_ERP_OFF);
}
-/*-------------------------------------------------
- track_timer - advance by one half-track
--------------------------------------------------*/
+//-------------------------------------------------
+// player_update - update callback, called on
+// the first visible line of the frame
+//-------------------------------------------------
-static TIMER_DEVICE_CALLBACK( track_timer )
+INT32 phillips_22vp931_device::player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime)
{
- laserdisc_state *ld = (laserdisc_state *)ptr;
- ldplayer_data *player = ld->player;
+ // set the first VBI timer to go at the start of line 16
+ timer_set(screen().time_until_pos(16*2), TID_VBI_DATA_FETCH, LASERDISC_CODE_LINE16 << 2);
- /* advance by the count and toggle the state */
- player->trackstate ^= 1;
- if ((player->trackdir < 0 && !player->trackstate) || (player->trackdir > 0 && player->trackstate))
- {
- ldcore_advance_slider(ld, player->trackdir);
- player->advanced += player->trackdir;
- }
+ // play forward by default
+ return fieldnum;
}
-/*-------------------------------------------------
- output0_w - controls audio/video squelch
- and other bits
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_output0_w - controls audio/video squelch
+// and other bits
+//-------------------------------------------------
-static WRITE8_HANDLER( output0_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_output0_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
-
/*
$80 = n/c
$40 = LED (?) -> C335
@@ -458,9 +381,9 @@ static WRITE8_HANDLER( output0_w )
$01 = inverted -> VIDEO MUTE
*/
- if (LOG_PORTS && (player->out0 ^ data) & 0xff)
+ if (LOG_PORTS && (m_i8049_out0 ^ data) & 0xff)
{
- printf("%03X:out0:", cpu_get_pc(&space->device()));
+ printf("%03X:out0:", cpu_get_pc(&space.device()));
if ( (data & 0x80)) printf(" ???");
if ( (data & 0x40)) printf(" LED1");
if ( (data & 0x20)) printf(" LED2");
@@ -470,25 +393,21 @@ static WRITE8_HANDLER( output0_w )
if (!(data & 0x02)) printf(" AUDMUTE1");
if (!(data & 0x01)) printf(" VIDMUTE");
printf("\n");
- player->out0 = data;
+ m_i8049_out0 = data;
}
- /* update a/v squelch */
- ldcore_set_audio_squelch(ld, !(data & 0x02), !(data & 0x04));
- ldcore_set_video_squelch(ld, !(data & 0x01));
+ // update a/v squelch
+ set_audio_squelch(!(data & 0x02), !(data & 0x04));
+ set_video_squelch(!(data & 0x01));
}
-/*-------------------------------------------------
- output1_w - controls scanning behaviors
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_output1_w - controls scanning behaviors
+//-------------------------------------------------
-static WRITE8_HANDLER( output1_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_output1_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- INT32 speed = 0;
-
/*
$80 = n/c
$40 = n/c
@@ -500,36 +419,38 @@ static WRITE8_HANDLER( output1_w )
$01 = OSM
*/
- if (LOG_PORTS && (player->out1 ^ data) & 0x08)
+ INT32 speed = 0;
+
+ if (LOG_PORTS && (m_i8049_out1 ^ data) & 0x08)
{
- mame_printf_debug("%03X:out1:", cpu_get_pc(&space->device()));
+ mame_printf_debug("%03X:out1:", cpu_get_pc(&space.device()));
if (!(data & 0x08)) mame_printf_debug(" SMS");
mame_printf_debug("\n");
- player->out1 = data;
+ m_i8049_out1 = data;
}
- /* speed is 0 unless SCAN CMD is clear */
+ // speed is 0 unless SCAN CMD is clear
speed = 0;
if (!(data & 0x02))
{
- /* fast/slow is based on bit 2 */
+ // fast/slow is based on bit 2
speed = (data & 0x04) ? SCAN_FAST_SPEED : SCAN_SPEED;
- /* direction is based on bit 0 */
+ // direction is based on bit 0
if (data & 0x01)
speed = -speed;
}
- /* update the speed */
- ldcore_set_slider_speed(ld, speed);
+ // update the speed
+ set_slider_speed(speed);
}
-/*-------------------------------------------------
- lcd_w - vestigial LCD frame display
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_lcd_w - vestigial LCD frame display
+//-------------------------------------------------
-static WRITE8_HANDLER( lcd_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_lcd_w )
{
/*
Frame number is written as 5 digits here; however, it is not actually
@@ -538,22 +459,23 @@ static WRITE8_HANDLER( lcd_w )
}
-/*-------------------------------------------------
- unknown_r - unknown input port
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_unknown_r - unknown input port
+//-------------------------------------------------
-static READ8_HANDLER( unknown_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_unknown_r )
{
- /* only bit $80 is checked and its effects are minor */
+ // only bit $80 is checked and its effects are minor
return 0x00;
}
-/*-------------------------------------------------
- keypad_r - vestigial keypad/button controls
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_keypad_r - vestigial keypad/button
+// controls
+//-------------------------------------------------
-static READ8_HANDLER( keypad_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_keypad_r )
{
/*
From the code, this is apparently a vestigial keypad with basic controls:
@@ -570,89 +492,75 @@ static READ8_HANDLER( keypad_r )
}
-/*-------------------------------------------------
- datic_r - read the latched value from the
- DATIC circuit
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_datic_r - read the latched value from the
+// DATIC circuit
+//-------------------------------------------------
-static READ8_HANDLER( datic_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_datic_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- return ld->player->daticval;
+ return m_daticval;
}
-/*-------------------------------------------------
- from_controller_r - read the value the
- external controller wrote
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_from_controller_r - read the value the
+// external controller wrote
+//-------------------------------------------------
-static READ8_HANDLER( from_controller_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_from_controller_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
-
- /* clear the pending flag and return the data */
- player->fromcontroller_pending = FALSE;
- return player->fromcontroller;
+ // clear the pending flag and return the data
+ m_fromcontroller_pending = false;
+ return m_fromcontroller;
}
-/*-------------------------------------------------
- to_controller_w - write a value back to the
- external controller
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_to_controller_w - write a value back to
+// the external controller
+//-------------------------------------------------
-static WRITE8_HANDLER( to_controller_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_to_controller_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
+ // set the pending flag and stash the data
+ m_tocontroller_pending = TRUE;
+ m_tocontroller = data;
- /* set the pending flag and stash the data */
- player->tocontroller_pending = TRUE;
- player->tocontroller = data;
+ // signal to the callback if provided
+ if (!m_data_ready.isnull())
+ m_data_ready(*this, true);
- /* signal to the callback if provided */
- if (player->data_ready_cb != NULL)
- (*player->data_ready_cb)(ld->device, TRUE);
-
- /* also boost interleave for 4 scanlines to ensure proper communications */
- ld->device->machine().scheduler().boost_interleave(attotime::zero, ld->screen->scan_period() * 4);
+ // also boost interleave for 4 scanlines to ensure proper communications
+ machine().scheduler().boost_interleave(attotime::zero, screen().scan_period() * 4);
}
-/*-------------------------------------------------
- port1_r - read the 8048 I/O port 1
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port1_r - read the 8048 I/O port 1
+//-------------------------------------------------
-static READ8_HANDLER( port1_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_port1_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- UINT8 result = 0x00;
-
/*
$80 = P17 = (in) unsure
$40 = P16 = (in) /ERP from datic circuit
$20 = P15 = (in) D105
*/
- if (!player->daticerp)
+ UINT8 result = 0x00;
+ if (!m_daticerp)
result |= 0x40;
-
return result;
}
-/*-------------------------------------------------
- port1_w - write the 8048 I/O port 1
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port1_w - write the 8048 I/O port 1
+//-------------------------------------------------
-static WRITE8_HANDLER( port1_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_port1_w )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
-
/*
$10 = P14 = (out) D104 -> /SPEED
$08 = P13 = (out) D103 -> /TIMER ENABLE
@@ -661,9 +569,9 @@ static WRITE8_HANDLER( port1_w )
$01 = P10 = (out) D100 -> some op-amp then to C334, B56, B332
*/
- if (LOG_PORTS && (player->port1 ^ data) & 0x1f)
+ if (LOG_PORTS && (m_i8049_port1 ^ data) & 0x1f)
{
- printf("%03X:port1:", cpu_get_pc(&space->device()));
+ printf("%03X:port1:", cpu_get_pc(&space.device()));
if (!(data & 0x10)) printf(" SPEED");
if (!(data & 0x08)) printf(" TIMENABLE");
if (!(data & 0x04)) printf(" REV");
@@ -672,82 +580,78 @@ static WRITE8_HANDLER( port1_w )
printf("\n");
}
- /* if bit 0 is set, we are not tracking */
+ // if bit 0 is set, we are not tracking
if (data & 0x01)
- player->trackdir = 0;
+ m_trackdir = 0;
- /* if bit 0 is clear and we weren't tracking before, initialize the state */
- else if (player->trackdir == 0)
+ // if bit 0 is clear and we weren't tracking before, initialize the state
+ else if (m_trackdir == 0)
{
- player->advanced = 0;
+ m_advanced = 0;
- /* if bit 2 is clear, we are moving backwards */
+ // if bit 2 is clear, we are moving backwards
if (!(data & 0x04))
{
- player->trackdir = -1;
- player->trackstate = 1;
+ m_trackdir = -1;
+ m_trackstate = 1;
}
- /* if bit 1 is clear, we are moving forward */
+ // if bit 1 is clear, we are moving forward
else if (!(data & 0x02))
{
- player->trackdir = 1;
- player->trackstate = 0;
+ m_trackdir = 1;
+ m_trackstate = 0;
}
}
- /* if we have a timer, adjust it */
- if (player->tracktimer != NULL)
+ // if we have a timer, adjust it
+ if (m_tracktimer != NULL)
{
- /* turn it off if we're not tracking */
- if (player->trackdir == 0)
- player->tracktimer->reset();
+ // turn it off if we're not tracking
+ if (m_trackdir == 0)
+ m_tracktimer->reset();
- /* if we just started tracking, or if the speed was changed, reprime the timer */
- else if (((player->port1 ^ data) & 0x11) != 0)
+ // if we just started tracking, or if the speed was changed, reprime the timer
+ else if (((m_i8049_port1 ^ data) & 0x11) != 0)
{
- /* speeds here are just guesses, but work with the player logic; this is the time per half-track */
+ // speeds here are just guesses, but work with the player logic; this is the time per half-track
attotime speed = (data & 0x10) ? attotime::from_usec(60) : attotime::from_usec(10);
- /* always start with an initial long delay; the code expects this */
- player->tracktimer->adjust(attotime::from_usec(100), 0, speed);
+ // always start with an initial long delay; the code expects this
+ m_tracktimer->adjust(attotime::from_usec(100), 0, speed);
}
}
- player->port1 = data;
+ m_i8049_port1 = data;
}
-/*-------------------------------------------------
- port2_r - read from the 8048 I/O port 2
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port2_r - read from the 8048 I/O port 2
+//-------------------------------------------------
-static READ8_HANDLER( port2_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_port2_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- ldplayer_data *player = ld->player;
- UINT8 result = 0x00;
-
/*
$80 = P27 = (in) set/reset latch; set by FOC LS, reset by IGR
$20 = P25 = (in) D125 -> 0 when data written to controller is preset, reset to 1 when read
$10 = P24 = (in) D124 -> 0 when data from controller is present, reset to 1 on a read
*/
- if (!player->tocontroller_pending)
+ UINT8 result = 0x00;
+ if (!m_tocontroller_pending)
result |= 0x20;
- if (!player->fromcontroller_pending)
+ if (!m_fromcontroller_pending)
result |= 0x10;
-
return result;
}
-/*-------------------------------------------------
- port2_w - write the 8048 I/O port 2
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_port2_w - write the 8048 I/O port 2
+//-------------------------------------------------
-static WRITE8_HANDLER( port2_w )
+WRITE8_MEMBER( phillips_22vp931_device::i8049_port2_w )
{
/*
$40 = P26 = (out) cleared while data is sent back & forth; set afterwards
@@ -756,26 +660,24 @@ static WRITE8_HANDLER( port2_w )
}
-/*-------------------------------------------------
- t0_r - return the T0 line status, which is
- connected to the DATIC's data strobe line
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_t0_r - return the T0 line status, which is
+// connected to the DATIC's data strobe line
+//-------------------------------------------------
-static READ8_HANDLER( t0_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_t0_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- return ld->player->datastrobe;
+ return m_datastrobe;
}
-/*-------------------------------------------------
- t1_r - return the T1 line status, which is
- connected to the tracking state and is used
- to count the number of tracks advanced
--------------------------------------------------*/
+//-------------------------------------------------
+// i8049_t1_r - return the T1 line status, which
+// is connected to the tracking state and is used
+// to count the number of tracks advanced
+//-------------------------------------------------
-static READ8_HANDLER( t1_r )
+READ8_MEMBER( phillips_22vp931_device::i8049_t1_r )
{
- laserdisc_state *ld = ldcore_get_safe_token(space->device().owner());
- return ld->player->trackstate;
+ return m_trackstate;
}
diff --git a/src/emu/machine/ldvp931.h b/src/emu/machine/ldvp931.h
new file mode 100644
index 00000000000..a52b8790f23
--- /dev/null
+++ b/src/emu/machine/ldvp931.h
@@ -0,0 +1,168 @@
+/*************************************************************************
+
+ ldvp931.h
+
+ Philips 22VP931 laserdisc emulation.
+
+****************************************************************************
+
+ Copyright Aaron Giles
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name 'MAME' nor the names of its contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*************************************************************************/
+
+#pragma once
+
+#ifndef __LDVP931_H__
+#define __LDVP931_H__
+
+#include "laserdsc.h"
+#include "cpu/mcs48/mcs48.h"
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_LASERDISC_22VP931_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PHILLIPS_22VP931, 0) \
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+extern const device_type PHILLIPS_22VP931;
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> phillips_22vp931_device
+
+// base _22vp931 class
+class phillips_22vp931_device : public laserdisc_device
+{
+public:
+ // types
+ typedef delegate<void (phillips_22vp931_device &, int)> data_ready_delegate;
+
+ // construction/destruction
+ phillips_22vp931_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // input and output
+ void data_w(UINT8 data) { synchronize(TID_DEFERRED_DATA, data); }
+ void reset_w(UINT8 data);
+ UINT8 data_r();
+ UINT8 ready_r() { return m_fromcontroller_pending ? CLEAR_LINE : ASSERT_LINE; }
+ UINT8 data_available_r() { return m_tocontroller_pending ? ASSERT_LINE : CLEAR_LINE; }
+
+ // configuration
+ void set_data_ready_callback(data_ready_delegate callback) { m_data_ready = callback; }
+
+protected:
+ // timer IDs
+ enum
+ {
+ TID_IRQ_OFF = TID_FIRST_PLAYER_TIMER,
+ TID_DATA_STROBE_OFF,
+ TID_ERP_OFF,
+ TID_HALF_TRACK,
+ TID_VBI_DATA_FETCH,
+ TID_DEFERRED_DATA
+ };
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // subclass overrides
+ virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, attotime curtime);
+ virtual void player_overlay(bitmap_yuy16 &bitmap) { }
+
+public:
+ // internal read/write handlers
+ DECLARE_WRITE8_MEMBER( i8049_output0_w );
+ DECLARE_WRITE8_MEMBER( i8049_output1_w );
+ DECLARE_WRITE8_MEMBER( i8049_lcd_w );
+ DECLARE_READ8_MEMBER( i8049_unknown_r );
+ DECLARE_READ8_MEMBER( i8049_keypad_r );
+ DECLARE_READ8_MEMBER( i8049_datic_r );
+ DECLARE_READ8_MEMBER( i8049_from_controller_r );
+ DECLARE_WRITE8_MEMBER( i8049_to_controller_w );
+ DECLARE_READ8_MEMBER( i8049_port1_r );
+ DECLARE_WRITE8_MEMBER( i8049_port1_w );
+ DECLARE_READ8_MEMBER( i8049_port2_r );
+ DECLARE_WRITE8_MEMBER( i8049_port2_w );
+ DECLARE_READ8_MEMBER( i8049_t0_r );
+ DECLARE_READ8_MEMBER( i8049_t1_r );
+
+protected:
+ // internal state
+ required_device<i8049_device> m_i8049_cpu; // CPU index of the 8049
+ emu_timer * m_tracktimer; // timer device
+ data_ready_delegate m_data_ready; // data ready callback
+
+ // I/O port states
+ UINT8 m_i8049_out0; // output 0 state
+ UINT8 m_i8049_out1; // output 1 state
+ UINT8 m_i8049_port1; // port 1 state
+
+ // DATIC circuit implementation
+ UINT8 m_daticval; // latched DATIC value
+ UINT8 m_daticerp; // /ERP value from DATIC
+ UINT8 m_datastrobe; // DATA STROBE line from DATIC
+
+ // communication status
+ UINT8 m_reset_state; // state of the reset input
+ UINT8 m_fromcontroller; // command byte from the controller
+ bool m_fromcontroller_pending; // true if data is pending
+ UINT8 m_tocontroller; // command byte to the controller
+ bool m_tocontroller_pending; // true if data is pending
+
+ // tracking
+ INT8 m_trackdir; // direction of tracking
+ UINT8 m_trackstate; // state of tracking
+
+ // debugging
+ UINT8 m_cmdbuf[3]; // 3 bytes worth of commands
+ UINT8 m_cmdcount; // number of command bytes seen
+ INT16 m_advanced; // number of frames advanced
+};
+
+
+#endif
diff --git a/src/emu/machine/s3c2400.c b/src/emu/machine/s3c2400.c
index f4278a8b0ea..995518a20a5 100644
--- a/src/emu/machine/s3c2400.c
+++ b/src/emu/machine/s3c2400.c
@@ -37,7 +37,7 @@ VIDEO_START( s3c2400 )
s3c24xx_video_start( device, machine);
}
-SCREEN_UPDATE( s3c2400 )
+SCREEN_UPDATE_RGB32( s3c2400 )
{
device_t *device = screen.machine().device( S3C2400_TAG);
return s3c24xx_video_update( device, screen, bitmap, cliprect);
diff --git a/src/emu/machine/s3c2400.h b/src/emu/machine/s3c2400.h
index 6d55809a8ef..1f55f388ffc 100644
--- a/src/emu/machine/s3c2400.h
+++ b/src/emu/machine/s3c2400.h
@@ -103,7 +103,7 @@ struct _s3c2400_interface
DEVICE_GET_INFO( s3c2400 );
VIDEO_START( s3c2400 );
-SCREEN_UPDATE( s3c2400 );
+SCREEN_UPDATE_RGB32( s3c2400 );
void s3c2400_uart_fifo_w( device_t *device, int uart, UINT8 data);
@@ -629,7 +629,7 @@ typedef struct
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_t *bitmap[2];
+ bitmap_rgb32 *bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/emu/machine/s3c2410.c b/src/emu/machine/s3c2410.c
index 0e918ed1888..ba7be36b353 100644
--- a/src/emu/machine/s3c2410.c
+++ b/src/emu/machine/s3c2410.c
@@ -37,7 +37,7 @@ VIDEO_START( s3c2410 )
s3c24xx_video_start( device, machine);
}
-SCREEN_UPDATE( s3c2410 )
+SCREEN_UPDATE_RGB32( s3c2410 )
{
device_t *device = screen.machine().device( S3C2410_TAG);
return s3c24xx_video_update( device, screen, bitmap, cliprect);
diff --git a/src/emu/machine/s3c2410.h b/src/emu/machine/s3c2410.h
index 5ddb6102546..aad4c3d3503 100644
--- a/src/emu/machine/s3c2410.h
+++ b/src/emu/machine/s3c2410.h
@@ -123,7 +123,7 @@ struct _s3c2410_interface
DEVICE_GET_INFO( s3c2410 );
VIDEO_START( s3c2410 );
-SCREEN_UPDATE( s3c2410 );
+SCREEN_UPDATE_RGB32( s3c2410 );
void s3c2410_uart_fifo_w( device_t *device, int uart, UINT8 data);
void s3c2410_touch_screen( device_t *device, int state);
@@ -767,7 +767,7 @@ typedef struct
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_t *bitmap[2];
+ bitmap_rgb32 *bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/emu/machine/s3c2440.c b/src/emu/machine/s3c2440.c
index 2396ae305c5..66421b20d61 100644
--- a/src/emu/machine/s3c2440.c
+++ b/src/emu/machine/s3c2440.c
@@ -37,7 +37,7 @@ VIDEO_START( s3c2440 )
s3c24xx_video_start( device, machine);
}
-SCREEN_UPDATE( s3c2440 )
+SCREEN_UPDATE_RGB32( s3c2440 )
{
device_t *device = screen.machine().device( S3C2440_TAG);
return s3c24xx_video_update( device, screen, bitmap, cliprect);
diff --git a/src/emu/machine/s3c2440.h b/src/emu/machine/s3c2440.h
index ecb17f8e750..529a9be812f 100644
--- a/src/emu/machine/s3c2440.h
+++ b/src/emu/machine/s3c2440.h
@@ -120,7 +120,7 @@ struct _s3c2440_interface
DEVICE_GET_INFO( s3c2440 );
VIDEO_START( s3c2440 );
-SCREEN_UPDATE( s3c2440 );
+SCREEN_UPDATE_RGB32( s3c2440 );
void s3c2440_uart_fifo_w( device_t *device, int uart, UINT8 data);
void s3c2440_touch_screen( device_t *device, int state);
@@ -825,7 +825,7 @@ typedef struct
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_t *bitmap[2];
+ bitmap_rgb32 *bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/emu/machine/s3c24xx.c b/src/emu/machine/s3c24xx.c
index 5c778d3db2e..5e1911a8630 100644
--- a/src/emu/machine/s3c24xx.c
+++ b/src/emu/machine/s3c24xx.c
@@ -449,7 +449,7 @@ static UINT32 s3c24xx_lcd_dma_read_bits( device_t *device, int count)
static void s3c24xx_lcd_render_tpal( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 color = s3c24xx_get_color_tpal( device);
for (int y = s3c24xx->lcd.vpos_min; y <= s3c24xx->lcd.vpos_max; y++)
{
@@ -464,7 +464,7 @@ static void s3c24xx_lcd_render_tpal( device_t *device)
static void s3c24xx_lcd_render_stn_01( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -496,7 +496,7 @@ static void s3c24xx_lcd_render_stn_01( device_t *device)
static void s3c24xx_lcd_render_stn_02( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -520,7 +520,7 @@ static void s3c24xx_lcd_render_stn_02( device_t *device)
static void s3c24xx_lcd_render_stn_04( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -544,7 +544,7 @@ static void s3c24xx_lcd_render_stn_04( device_t *device)
static void s3c24xx_lcd_render_stn_08( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -568,7 +568,7 @@ static void s3c24xx_lcd_render_stn_08( device_t *device)
static void s3c24xx_lcd_render_stn_12_p( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 16; i++)
{
@@ -587,7 +587,7 @@ static void s3c24xx_lcd_render_stn_12_p( device_t *device)
static void s3c24xx_lcd_render_stn_12_u( device_t *device) // not tested
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -611,7 +611,7 @@ static void s3c24xx_lcd_render_stn_12_u( device_t *device) // not tested
static void s3c24xx_lcd_render_tft_01( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -635,7 +635,7 @@ static void s3c24xx_lcd_render_tft_01( device_t *device)
static void s3c24xx_lcd_render_tft_02( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -659,7 +659,7 @@ static void s3c24xx_lcd_render_tft_02( device_t *device)
static void s3c24xx_lcd_render_tft_04( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -683,7 +683,7 @@ static void s3c24xx_lcd_render_tft_04( device_t *device)
static void s3c24xx_lcd_render_tft_08( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -707,7 +707,7 @@ static void s3c24xx_lcd_render_tft_08( device_t *device)
static void s3c24xx_lcd_render_tft_16( device_t *device)
{
s3c24xx_t *s3c24xx = get_token( device);
- bitmap_t &bitmap = *s3c24xx->lcd.bitmap[0];
+ bitmap_rgb32 &bitmap = *s3c24xx->lcd.bitmap[0];
UINT32 *scanline = &bitmap.pix32(s3c24xx->lcd.vpos, s3c24xx->lcd.hpos);
for (int i = 0; i < 4; i++)
{
@@ -777,11 +777,11 @@ static void s3c24xx_video_start( device_t *device, running_machine &machine)
{
s3c24xx_t *s3c24xx = get_token( device);
screen_device *screen = machine.primary_screen;
- s3c24xx->lcd.bitmap[0] = screen->alloc_compatible_bitmap();
- s3c24xx->lcd.bitmap[1] = screen->alloc_compatible_bitmap();
+ s3c24xx->lcd.bitmap[0] = auto_bitmap_rgb32_alloc(machine, screen->width(), screen->height());
+ s3c24xx->lcd.bitmap[1] = auto_bitmap_rgb32_alloc(machine, screen->width(), screen->height());
}
-static void bitmap_blend( bitmap_t &bitmap_dst, bitmap_t &bitmap_src_1, bitmap_t &bitmap_src_2)
+static void bitmap_blend( bitmap_rgb32 &bitmap_dst, bitmap_rgb32 &bitmap_src_1, bitmap_rgb32 &bitmap_src_2)
{
for (int y = 0; y < bitmap_dst.height(); y++)
{
@@ -806,7 +806,7 @@ static void bitmap_blend( bitmap_t &bitmap_dst, bitmap_t &bitmap_src_1, bitmap_t
}
}
-static UINT32 s3c24xx_video_update( device_t *device, screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+static UINT32 s3c24xx_video_update( device_t *device, screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
s3c24xx_t *s3c24xx = get_token( device);
if (s3c24xx->lcd.regs.lcdcon1 & (1 << 0))
diff --git a/src/emu/render.c b/src/emu/render.c
index 1ced90dd550..c9e7f575f83 100644
--- a/src/emu/render.c
+++ b/src/emu/render.c
@@ -359,13 +359,12 @@ render_texture::render_texture()
: m_manager(NULL),
m_next(NULL),
m_bitmap(NULL),
- m_palette(NULL),
m_format(TEXFORMAT_ARGB32),
+ m_bcglookup(NULL),
+ m_bcglookup_entries(0),
m_scaler(NULL),
m_param(NULL),
- m_curseq(0),
- m_bcglookup(NULL),
- m_bcglookup_entries(0)
+ m_curseq(0)
{
m_sbounds.min_x = m_sbounds.min_y = m_sbounds.max_x = m_sbounds.max_y = 0;
memset(m_scaled, 0, sizeof(m_scaled));
@@ -390,8 +389,12 @@ render_texture::~render_texture()
void render_texture::reset(render_manager &manager, texture_scaler_func scaler, void *param)
{
m_manager = &manager;
- m_scaler = scaler;
- m_param = param;
+ if (scaler != NULL)
+ {
+ assert(m_format == TEXFORMAT_ARGB32);
+ m_scaler = scaler;
+ m_param = param;
+ }
}
@@ -417,11 +420,6 @@ void render_texture::release()
m_format = TEXFORMAT_ARGB32;
m_curseq = 0;
- // release palette references
- if (m_palette != NULL)
- palette_deref(m_palette);
- m_palette = NULL;
-
// free any B/C/G lookup tables
auto_free(m_manager->machine(), m_bcglookup);
m_bcglookup = NULL;
@@ -433,32 +431,21 @@ void render_texture::release()
// set_bitmap - set a new source bitmap
//-------------------------------------------------
-void render_texture::set_bitmap(bitmap_t *bitmap, const rectangle *sbounds, int format, palette_t *palette)
+void render_texture::set_bitmap(bitmap_t &bitmap, const rectangle &sbounds, texture_format format)
{
+ assert(bitmap.cliprect().contains(sbounds));
+
// ensure we have a valid palette for palettized modes
if (format == TEXFORMAT_PALETTE16 || format == TEXFORMAT_PALETTEA16)
- assert(palette != NULL);
+ assert(bitmap.palette() != NULL);
// invalidate references to the old bitmap
- if (bitmap != m_bitmap && m_bitmap != NULL)
+ if (&bitmap != m_bitmap && m_bitmap != NULL)
m_manager->invalidate_all(m_bitmap);
- // if the palette is different, adjust references
- if (palette != m_palette)
- {
- if (m_palette != NULL)
- palette_deref(m_palette);
- if (palette != NULL)
- palette_ref(palette);
- }
-
// set the new bitmap/palette
- m_bitmap = bitmap;
- m_sbounds.min_x = (sbounds != NULL) ? sbounds->min_x : 0;
- m_sbounds.min_y = (sbounds != NULL) ? sbounds->min_y : 0;
- m_sbounds.max_x = (sbounds != NULL) ? sbounds->max_x : (bitmap != NULL) ? bitmap->width() : 1000;
- m_sbounds.max_y = (sbounds != NULL) ? sbounds->max_y : (bitmap != NULL) ? bitmap->height() : 1000;
- m_palette = palette;
+ m_bitmap = &bitmap;
+ m_sbounds = sbounds;
m_format = format;
// invalidate all scaled versions
@@ -480,10 +467,11 @@ void render_texture::set_bitmap(bitmap_t *bitmap, const rectangle *sbounds, int
// scaler
//-------------------------------------------------
-void render_texture::hq_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param)
+void render_texture::hq_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param)
{
render_color color = { 1.0f, 1.0f, 1.0f, 1.0f };
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), &source, &sbounds, &color);
+ bitmap_argb32 sourcesub(source, sbounds);
+ render_resample_argb_bitmap_hq(dest, sourcesub, color);
}
@@ -494,21 +482,20 @@ void render_texture::hq_scale(bitmap_t &dest, const bitmap_t &source, const rect
bool render_texture::get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &texinfo, render_primitive_list &primlist)
{
// source width/height come from the source bounds
- int swidth = m_sbounds.max_x - m_sbounds.min_x;
- int sheight = m_sbounds.max_y - m_sbounds.min_y;
+ int swidth = m_sbounds.width();
+ int sheight = m_sbounds.height();
// ensure height/width are non-zero
if (dwidth < 1) dwidth = 1;
if (dheight < 1) dheight = 1;
// are we scaler-free? if so, just return the source bitmap
- const rgb_t *palbase = (m_format == TEXFORMAT_PALETTE16 || m_format == TEXFORMAT_PALETTEA16) ? palette_entry_list_adjusted(m_palette) : NULL;
+ const rgb_t *palbase = (m_format == TEXFORMAT_PALETTE16 || m_format == TEXFORMAT_PALETTEA16) ? palette_entry_list_adjusted(m_bitmap->palette()) : NULL;
if (m_scaler == NULL || (m_bitmap != NULL && swidth == dwidth && sheight == dheight))
{
// add a reference and set up the source bitmap
primlist.add_reference(m_bitmap);
- UINT8 bpp = (m_format == TEXFORMAT_PALETTE16 || m_format == TEXFORMAT_PALETTEA16 || m_format == TEXFORMAT_RGB15 || m_format == TEXFORMAT_YUY16) ? 16 : 32;
- texinfo.base = &m_bitmap->pix8(m_sbounds.min_y * bpp / 8, m_sbounds.min_x * bpp / 8);
+ texinfo.base = m_bitmap->raw_pixptr(m_sbounds.min_y, m_sbounds.min_x);
texinfo.rowpixels = m_bitmap->rowpixels();
texinfo.width = swidth;
texinfo.height = sheight;
@@ -516,6 +503,9 @@ bool render_texture::get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &t
texinfo.seqid = ++m_curseq;
return true;
}
+
+ // make sure we can recover the original argb32 bitmap
+ bitmap_argb32 &srcbitmap = downcast<bitmap_argb32 &>(*m_bitmap);
// is it a size we already have?
scaled_texture *scaled = NULL;
@@ -549,11 +539,11 @@ bool render_texture::get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &t
}
// allocate a new bitmap
- scaled->bitmap = auto_alloc(m_manager->machine(), bitmap_t(dwidth, dheight, BITMAP_FORMAT_ARGB32));
+ scaled->bitmap = auto_alloc(m_manager->machine(), bitmap_argb32(dwidth, dheight));
scaled->seqid = ++m_curseq;
// let the scaler do the work
- (*m_scaler)(*scaled->bitmap, *m_bitmap, m_sbounds, m_param);
+ (*m_scaler)(*scaled->bitmap, srcbitmap, m_sbounds, m_param);
}
// finally fill out the new info
@@ -585,18 +575,18 @@ const rgb_t *render_texture::get_adjusted_palette(render_container &container)
case TEXFORMAT_PALETTEA16:
// if no adjustment necessary, return the raw palette
- assert(m_palette != NULL);
- adjusted = palette_entry_list_adjusted(m_palette);
+ assert(m_bitmap->palette() != NULL);
+ adjusted = palette_entry_list_adjusted(m_bitmap->palette());
if (!container.has_brightness_contrast_gamma_changes())
return adjusted;
// if this is the machine palette, return our precomputed adjusted palette
- adjusted = container.bcg_lookup_table(m_format, m_palette);
+ adjusted = container.bcg_lookup_table(m_format, m_bitmap->palette());
if (adjusted != NULL)
return adjusted;
// otherwise, ensure we have memory allocated and compute the adjusted result ourself
- numentries = palette_get_num_colors(m_palette) * palette_get_num_groups(m_palette);
+ numentries = palette_get_num_colors(m_bitmap->palette()) * palette_get_num_groups(m_bitmap->palette());
if (m_bcglookup == NULL || m_bcglookup_entries < numentries)
{
rgb_t *newlookup = auto_alloc_array(m_manager->machine(), rgb_t, numentries);
@@ -614,73 +604,14 @@ const rgb_t *render_texture::get_adjusted_palette(render_container &container)
}
return m_bcglookup;
- case TEXFORMAT_RGB15:
-
- // if no adjustment necessary, return NULL
- if (!container.has_brightness_contrast_gamma_changes() && m_palette == NULL)
- return NULL;
-
- // if no palette, return the standard lookups
- if (m_palette == NULL)
- return container.bcg_lookup_table(m_format);
-
- // otherwise, ensure we have memory allocated and compute the adjusted result ourself
- assert(palette_get_num_colors(m_palette) == 32);
- adjusted = palette_entry_list_adjusted(m_palette);
- if (m_bcglookup == NULL || m_bcglookup_entries < 4 * 32)
- {
- rgb_t *newlookup = auto_alloc_array(m_manager->machine(), rgb_t, 4 * 32);
- memcpy(newlookup, m_bcglookup, m_bcglookup_entries * sizeof(rgb_t));
- auto_free(m_manager->machine(), m_bcglookup);
- m_bcglookup = newlookup;
- m_bcglookup_entries = 4 * 32;
- }
-
- // otherwise, return the 32-entry BCG lookups
- for (int index = 0; index < 32; index++)
- {
- UINT8 val = container.apply_brightness_contrast_gamma(RGB_GREEN(adjusted[index]));
- m_bcglookup[0x00 + index] = val << 0;
- m_bcglookup[0x20 + index] = val << 8;
- m_bcglookup[0x40 + index] = val << 16;
- m_bcglookup[0x60 + index] = val << 24;
- }
- return m_bcglookup;
-
case TEXFORMAT_RGB32:
case TEXFORMAT_ARGB32:
case TEXFORMAT_YUY16:
// if no adjustment necessary, return NULL
- if (!container.has_brightness_contrast_gamma_changes() && m_palette == NULL)
+ if (!container.has_brightness_contrast_gamma_changes())
return NULL;
-
- // if no palette, return the standard lookups
- if (m_palette == NULL)
- return container.bcg_lookup_table(m_format);
-
- // otherwise, ensure we have memory allocated and compute the adjusted result ourself
- assert(palette_get_num_colors(m_palette) == 256);
- adjusted = palette_entry_list_adjusted(m_palette);
- if (m_bcglookup == NULL || m_bcglookup_entries < 4 * 256)
- {
- rgb_t *newlookup = auto_alloc_array(m_manager->machine(), rgb_t, 4 * 256);
- memcpy(newlookup, m_bcglookup, m_bcglookup_entries * sizeof(rgb_t));
- auto_free(m_manager->machine(), m_bcglookup);
- m_bcglookup = newlookup;
- m_bcglookup_entries = 4 * 256;
- }
-
- // otherwise, return the 32-entry BCG lookups
- for (int index = 0; index < 256; index++)
- {
- UINT8 val = container.apply_brightness_contrast_gamma(RGB_GREEN(adjusted[index]));
- m_bcglookup[0x000 + index] = val << 0;
- m_bcglookup[0x100 + index] = val << 8;
- m_bcglookup[0x200 + index] = val << 16;
- m_bcglookup[0x300 + index] = val << 24;
- }
- return m_bcglookup;
+ return container.bcg_lookup_table(m_format);
default:
assert(FALSE);
@@ -756,7 +687,7 @@ render_container::~render_container()
// container
//-------------------------------------------------
-void render_container::set_overlay(bitmap_t *bitmap)
+void render_container::set_overlay(bitmap_argb32 *bitmap)
{
// free any existing texture
m_manager.texture_free(m_overlaytexture);
@@ -766,7 +697,7 @@ void render_container::set_overlay(bitmap_t *bitmap)
if (m_overlaybitmap != NULL)
{
m_overlaytexture = m_manager.texture_alloc(render_container::overlay_scale);
- m_overlaytexture->set_bitmap(bitmap, NULL, TEXFORMAT_ARGB32);
+ m_overlaytexture->set_bitmap(*bitmap, bitmap->cliprect(), TEXFORMAT_ARGB32);
}
}
@@ -865,9 +796,6 @@ const rgb_t *render_container::bcg_lookup_table(int texformat, palette_t *palett
case TEXFORMAT_PALETTEA16:
return (palette != NULL && palette == palette_client_get_palette(m_palclient)) ? m_bcglookup : NULL;
- case TEXFORMAT_RGB15:
- return m_bcglookup32;
-
case TEXFORMAT_RGB32:
case TEXFORMAT_ARGB32:
case TEXFORMAT_YUY16:
@@ -883,7 +811,7 @@ const rgb_t *render_container::bcg_lookup_table(int texformat, palette_t *palett
// overlay_scale - scaler for an overlay
//-------------------------------------------------
-void render_container::overlay_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param)
+void render_container::overlay_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param)
{
// simply replicate the source bitmap over the target
for (int y = 0; y < dest.height(); y++)
@@ -949,16 +877,6 @@ void render_container::recompute_lookups()
m_bcglookup256[i + 0x300] = adjustedval << 24;
}
- // recompute the 32 entry lookup table
- for (int i = 0; i < 0x20; i++)
- {
- UINT8 adjustedval = apply_brightness_contrast_gamma(pal5bit(i));
- m_bcglookup32[i + 0x000] = adjustedval << 0;
- m_bcglookup32[i + 0x020] = adjustedval << 8;
- m_bcglookup32[i + 0x040] = adjustedval << 16;
- m_bcglookup32[i + 0x060] = adjustedval << 24;
- }
-
// recompute the palette entries
if (m_palclient != NULL)
{
@@ -1336,7 +1254,7 @@ void render_target::compute_minimum_size(INT32 &minwidth, INT32 &minheight)
int screens_considered = 0;
// early exit in case we are called between device teardown and render teardown
- if (m_manager.machine().devicelist().count() == 0)
+ if (m_manager.machine().phase() == MACHINE_PHASE_EXIT)
{
minwidth = 640;
minheight = 480;
diff --git a/src/emu/render.h b/src/emu/render.h
index d4679aaae42..060c60643c7 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -86,12 +86,11 @@
//**************************************************************************
// texture formats
-enum
+enum texture_format
{
TEXFORMAT_UNDEFINED = 0, // require a format to be specified
TEXFORMAT_PALETTE16, // 16bpp palettized, alpha ignored
TEXFORMAT_PALETTEA16, // 16bpp palettized, alpha respected
- TEXFORMAT_RGB15, // 16bpp 5-5-5 RGB
TEXFORMAT_RGB32, // 32bpp 8-8-8 RGB
TEXFORMAT_ARGB32, // 32bpp 8-8-8-8 ARGB
TEXFORMAT_YUY16 // 16bpp 8-8 Y/Cb, Y/Cr in sequence
@@ -181,7 +180,7 @@ class layout_file;
// texture scaling callback
-typedef void (*texture_scaler_func)(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param);
+typedef void (*texture_scaler_func)(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
// render_bounds - floating point bounding rectangle
@@ -437,10 +436,10 @@ public:
int format() const { return m_format; }
// configure the texture bitmap
- void set_bitmap(bitmap_t *bitmap, const rectangle *sbounds, int format, palette_t *palette = NULL);
+ void set_bitmap(bitmap_t &bitmap, const rectangle &sbounds, texture_format format);
// generic high-quality bitmap scaler
- static void hq_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param);
+ static void hq_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
private:
// internal helpers
@@ -452,7 +451,7 @@ private:
// a scaled_texture contains a single scaled entry for a texture
struct scaled_texture
{
- bitmap_t * bitmap; // final bitmap
+ bitmap_argb32 * bitmap; // final bitmap
UINT32 seqid; // sequence number
};
@@ -461,14 +460,15 @@ private:
render_texture * m_next; // next texture (for free list)
bitmap_t * m_bitmap; // pointer to the original bitmap
rectangle m_sbounds; // source bounds within the bitmap
- palette_t * m_palette; // palette associated with the texture
- int m_format; // format of the texture data
+ texture_format m_format; // format of the texture data
+ rgb_t * m_bcglookup; // dynamically allocated B/C/G lookup table
+ UINT32 m_bcglookup_entries; // number of B/C/G lookup entries allocated
+
+ // scaling state (ARGB32 only)
texture_scaler_func m_scaler; // scaling callback
void * m_param; // scaling callback parameter
UINT32 m_curseq; // current sequence number
scaled_texture m_scaled[MAX_TEXTURE_SCALES];// array of scaled variants of this texture
- rgb_t * m_bcglookup; // dynamically allocated B/C/G lookup table
- UINT32 m_bcglookup_entries; // number of B/C/G lookup entries allocated
};
@@ -518,7 +518,7 @@ public:
void get_user_settings(user_settings &settings) const { settings = m_user; }
// setters
- void set_overlay(bitmap_t *bitmap);
+ void set_overlay(bitmap_argb32 *bitmap);
void set_user_settings(const user_settings &settings);
// empty the item list
@@ -568,7 +568,7 @@ private:
};
// generic screen overlay scaler
- static void overlay_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param);
+ static void overlay_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
// internal helpers
item *first_item() const { return m_itemlist.first(); }
@@ -583,11 +583,10 @@ private:
fixed_allocator<item> m_item_allocator; // free container items
screen_device * m_screen; // the screen device
user_settings m_user; // user settings
- bitmap_t * m_overlaybitmap; // overlay bitmap
+ bitmap_argb32 * m_overlaybitmap; // overlay bitmap
render_texture * m_overlaytexture; // overlay texture
palette_client * m_palclient; // client to the system palette
rgb_t m_bcglookup256[0x400]; // lookup table for brightness/contrast/gamma
- rgb_t m_bcglookup32[0x80]; // lookup table for brightness/contrast/gamma
rgb_t m_bcglookup[0x10000]; // full palette lookup with bcg adjustements
};
diff --git a/src/emu/rendersw.c b/src/emu/rendersw.c
index 31b3a6163af..6248a56c3c5 100644
--- a/src/emu/rendersw.c
+++ b/src/emu/rendersw.c
@@ -268,54 +268,6 @@ INLINE UINT32 get_texel_palette16a_bilinear(const render_texinfo *texture, INT32
/*-------------------------------------------------
- get_texel_rgb15_nearest - return the
- nearest neighbor texel from a 15bpp RGB source
--------------------------------------------------*/
-
-INLINE UINT32 get_texel_rgb15_nearest(const render_texinfo *texture, INT32 curu, INT32 curv)
-{
- const UINT16 *texbase = (const UINT16 *)texture->base + (curv >> 16) * texture->rowpixels + (curu >> 16);
- return texbase[0];
-}
-
-
-/*-------------------------------------------------
- get_texel_rgb15_bilinear - return the
- bilinear filtered texel from a 15bpp RGB
- source
--------------------------------------------------*/
-
-INLINE UINT32 get_texel_rgb15_bilinear(const render_texinfo *texture, INT32 curu, INT32 curv)
-{
- const UINT16 *texbase = (const UINT16 *)texture->base;
- rgb_t pix00, pix01, pix10, pix11, filtered;
- INT32 u0, u1, v0, v1;
-
- u0 = curu >> 16;
- u1 = 1;
- if (u0 < 0) u0 = u1 = 0;
- else if (u0 + 1 >= texture->width) u0 = texture->width - 1, u1 = 0;
- v0 = curv >> 16;
- v1 = texture->rowpixels;
- if (v0 < 0) v0 = v1 = 0;
- else if (v0 + 1 >= texture->height) v0 = texture->height - 1, v1 = 0;
-
- texbase += v0 * texture->rowpixels + u0;
-
- pix00 = texbase[0];
- pix01 = texbase[u1];
- pix10 = texbase[v1];
- pix11 = texbase[u1 + v1];
- pix00 = ((pix00 & 0x7fe0) << 6) | (pix00 & 0x1f);
- pix01 = ((pix01 & 0x7fe0) << 6) | (pix01 & 0x1f);
- pix10 = ((pix10 & 0x7fe0) << 6) | (pix10 & 0x1f);
- pix11 = ((pix11 & 0x7fe0) << 6) | (pix11 & 0x1f);
- filtered = rgb_bilinear_filter(pix00, pix01, pix10, pix11, curu >> 8, curv >> 8);
- return (filtered & 0x1f) | ((filtered & 0x1ff800) >> 6);
-}
-
-
-/*-------------------------------------------------
get_texel_yuy16_nearest - return the
nearest neighbor texel from a 16bpp YCbCr
source (pixel is returned as Cr-Cb-Y
@@ -1298,181 +1250,6 @@ static void FUNC_PREFIX(draw_quad_yuy16_none)(const render_primitive *prim, void
}
-/***************************************************************************
- 15-BIT RGB QUAD RASTERIZERS
-***************************************************************************/
-
-/*-------------------------------------------------
- draw_quad_rgb15 - perform rasterization of
- a 15bpp RGB texture
--------------------------------------------------*/
-
-static void FUNC_PREFIX(draw_quad_rgb15)(const render_primitive *prim, void *dstdata, UINT32 pitch, quad_setup_data *setup)
-{
- const rgb_t *palbase = prim->texture.palette;
- INT32 dudx = setup->dudx;
- INT32 dvdx = setup->dvdx;
- INT32 endx = setup->endx;
- INT32 x, y;
-
- /* fast case: no coloring, no alpha */
- if (prim->color.r >= 1.0f && prim->color.g >= 1.0f && prim->color.b >= 1.0f && IS_OPAQUE(prim->color.a))
- {
- /* loop over rows */
- for (y = setup->starty; y < setup->endy; y++)
- {
- PIXEL_TYPE *dest = (PIXEL_TYPE *)dstdata + y * pitch + setup->startx;
- INT32 curu = setup->startu + (y - setup->starty) * setup->dudy;
- INT32 curv = setup->startv + (y - setup->starty) * setup->dvdy;
-
- /* no lookup case */
- if (palbase == NULL)
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- *dest++ = SOURCE15_TO_DEST(pix);
- curu += dudx;
- curv += dvdx;
- }
- }
-
- /* lookup case */
- else
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- UINT32 r = palbase[(pix >> 10) & 0x1f] >> SRCSHIFT_R;
- UINT32 g = palbase[(pix >> 5) & 0x1f] >> SRCSHIFT_G;
- UINT32 b = palbase[(pix >> 0) & 0x1f] >> SRCSHIFT_B;
-
- *dest++ = DEST_ASSEMBLE_RGB(r, g, b);
- curu += dudx;
- curv += dvdx;
- }
- }
- }
- }
-
- /* coloring-only case */
- else if (IS_OPAQUE(prim->color.a))
- {
- UINT32 sr = (UINT32)(256.0f * prim->color.r);
- UINT32 sg = (UINT32)(256.0f * prim->color.g);
- UINT32 sb = (UINT32)(256.0f * prim->color.b);
-
- /* clamp R,G,B to 0-256 range */
- if (sr > 0x100) { if ((INT32)sr < 0) sr = 0; else sr = 0x100; }
- if (sg > 0x100) { if ((INT32)sg < 0) sg = 0; else sg = 0x100; }
- if (sb > 0x100) { if ((INT32)sb < 0) sb = 0; else sb = 0x100; }
-
- /* loop over rows */
- for (y = setup->starty; y < setup->endy; y++)
- {
- PIXEL_TYPE *dest = (PIXEL_TYPE *)dstdata + y * pitch + setup->startx;
- INT32 curu = setup->startu + (y - setup->starty) * setup->dudy;
- INT32 curv = setup->startv + (y - setup->starty) * setup->dvdy;
-
- /* no lookup case */
- if (palbase == NULL)
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- UINT32 r = (SOURCE15_R(pix) * sr) >> 8;
- UINT32 g = (SOURCE15_G(pix) * sg) >> 8;
- UINT32 b = (SOURCE15_B(pix) * sb) >> 8;
-
- *dest++ = DEST_ASSEMBLE_RGB(r, g, b);
- curu += dudx;
- curv += dvdx;
- }
- }
-
- /* lookup case */
- else
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- UINT32 r = (palbase[(pix >> 10) & 0x1f] * sr) >> (8 + SRCSHIFT_R);
- UINT32 g = (palbase[(pix >> 5) & 0x1f] * sg) >> (8 + SRCSHIFT_G);
- UINT32 b = (palbase[(pix >> 0) & 0x1f] * sb) >> (8 + SRCSHIFT_B);
-
- *dest++ = DEST_ASSEMBLE_RGB(r, g, b);
- curu += dudx;
- curv += dvdx;
- }
- }
- }
- }
-
- /* alpha and/or coloring case */
- else if (!IS_TRANSPARENT(prim->color.a))
- {
- UINT32 sr = (UINT32)(256.0f * prim->color.r * prim->color.a);
- UINT32 sg = (UINT32)(256.0f * prim->color.g * prim->color.a);
- UINT32 sb = (UINT32)(256.0f * prim->color.b * prim->color.a);
- UINT32 invsa = (UINT32)(256.0f * (1.0f - prim->color.a));
-
- /* clamp R,G,B and inverse A to 0-256 range */
- if (sr > 0x100) { if ((INT32)sr < 0) sr = 0; else sr = 0x100; }
- if (sg > 0x100) { if ((INT32)sg < 0) sg = 0; else sg = 0x100; }
- if (sb > 0x100) { if ((INT32)sb < 0) sb = 0; else sb = 0x100; }
- if (invsa > 0x100) { if ((INT32)invsa < 0) invsa = 0; else invsa = 0x100; }
-
- /* loop over rows */
- for (y = setup->starty; y < setup->endy; y++)
- {
- PIXEL_TYPE *dest = (PIXEL_TYPE *)dstdata + y * pitch + setup->startx;
- INT32 curu = setup->startu + (y - setup->starty) * setup->dudy;
- INT32 curv = setup->startv + (y - setup->starty) * setup->dvdy;
-
- /* no lookup case */
- if (palbase == NULL)
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- UINT32 dpix = NO_DEST_READ ? 0 : *dest;
- UINT32 r = (SOURCE15_R(pix) * sr + DEST_R(dpix) * invsa) >> 8;
- UINT32 g = (SOURCE15_G(pix) * sg + DEST_G(dpix) * invsa) >> 8;
- UINT32 b = (SOURCE15_B(pix) * sb + DEST_B(dpix) * invsa) >> 8;
-
- *dest++ = DEST_ASSEMBLE_RGB(r, g, b);
- curu += dudx;
- curv += dvdx;
- }
- }
-
- /* lookup case */
- else
- {
- /* loop over cols */
- for (x = setup->startx; x < endx; x++)
- {
- UINT32 pix = GET_TEXEL(rgb15)(&prim->texture, curu, curv);
- UINT32 dpix = NO_DEST_READ ? 0 : *dest;
- UINT32 r = ((palbase[(pix >> 10) & 0x1f] >> SRCSHIFT_R) * sr + DEST_R(dpix) * invsa) >> 8;
- UINT32 g = ((palbase[(pix >> 5) & 0x1f] >> SRCSHIFT_G) * sg + DEST_G(dpix) * invsa) >> 8;
- UINT32 b = ((palbase[(pix >> 0) & 0x1f] >> SRCSHIFT_B) * sb + DEST_B(dpix) * invsa) >> 8;
-
- *dest++ = DEST_ASSEMBLE_RGB(r, g, b);
- curu += dudx;
- curv += dvdx;
- }
- }
- }
- }
-}
-
-
/***************************************************************************
32-BIT RGB QUAD RASTERIZERS
@@ -2289,11 +2066,6 @@ static void FUNC_PREFIX(setup_and_draw_textured_quad)(const render_primitive *pr
FUNC_PREFIX(draw_quad_yuy16_none)(prim, dstdata, pitch, &setup);
break;
- case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB15) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE):
- case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB15) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA):
- FUNC_PREFIX(draw_quad_rgb15)(prim, dstdata, pitch, &setup);
- break;
-
case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE):
case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA):
case PRIMFLAG_TEXFORMAT(TEXFORMAT_ARGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE):
diff --git a/src/emu/rendfont.c b/src/emu/rendfont.c
index d4f3f0b93b1..ed600823ce1 100644
--- a/src/emu/rendfont.c
+++ b/src/emu/rendfont.c
@@ -89,7 +89,7 @@ inline render_font::glyph &render_font::get_char(unicode_char chnum)
// if the character isn't generated yet, do it now
glyph &gl = glyphtable[chnum % 256];
- if (gl.bitmap == NULL)
+ if (!gl.bitmap.valid())
char_expand(chnum, gl);
// return the resulting character
@@ -161,7 +161,6 @@ render_font::~render_font()
{
glyph &gl = m_glyphs[tablenum][charnum];
m_manager.texture_free(gl.texture);
- auto_free(m_manager.machine(), gl.bitmap);
}
// free the subtable itself
@@ -192,16 +191,16 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
return;
// attempt to get the font bitmap; if we fail, set bmwidth to -1
- gl.bitmap = m_manager.machine().osd().font_get_bitmap(m_osdfont, chnum, gl.width, gl.xoffs, gl.yoffs);
- if (gl.bitmap == NULL)
+ if (!m_manager.machine().osd().font_get_bitmap(m_osdfont, chnum, gl.bitmap, gl.width, gl.xoffs, gl.yoffs))
{
+ gl.bitmap.reset();
gl.bmwidth = -1;
return;
}
// populate the bmwidth/bmheight fields
- gl.bmwidth = gl.bitmap->width();
- gl.bmheight = gl.bitmap->height();
+ gl.bmwidth = gl.bitmap.width();
+ gl.bmheight = gl.bitmap.height();
}
// other formats need to parse their data
@@ -212,8 +211,8 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
return;
// allocate a new bitmap of the size we need
- gl.bitmap = auto_alloc(m_manager.machine(), bitmap_t(gl.bmwidth, m_height, BITMAP_FORMAT_ARGB32));
- gl.bitmap->fill(0);
+ gl.bitmap.allocate(gl.bmwidth, m_height);
+ gl.bitmap.fill(0);
// extract the data
const char *ptr = gl.rawdata;
@@ -221,7 +220,7 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
for (int y = 0; y < gl.bmheight; y++)
{
int desty = y + m_height + m_yoffs - gl.yoffs - gl.bmheight;
- UINT32 *dest = (desty >= 0 && desty < m_height) ? &gl.bitmap->pix32(desty) : NULL;
+ UINT32 *dest = (desty >= 0 && desty < m_height) ? &gl.bitmap.pix32(desty) : NULL;
// text format
if (m_format == FF_TEXT)
@@ -274,7 +273,7 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
// wrap a texture around the bitmap
gl.texture = m_manager.texture_alloc(render_texture::hq_scale);
- gl.texture->set_bitmap(gl.bitmap, NULL, TEXFORMAT_ARGB32);
+ gl.texture->set_bitmap(gl.bitmap, gl.bitmap.cliprect(), TEXFORMAT_ARGB32);
}
@@ -307,7 +306,7 @@ render_texture *render_font::get_char_texture_and_bounds(float height, float asp
// scaled bitmap and bounding rect for a char
//-------------------------------------------------
-void render_font::get_scaled_bitmap_and_bounds(bitmap_t &dest, float height, float aspect, unicode_char chnum, rectangle &bounds)
+void render_font::get_scaled_bitmap_and_bounds(bitmap_argb32 &dest, float height, float aspect, unicode_char chnum, rectangle &bounds)
{
glyph &gl = get_char(chnum);
@@ -333,8 +332,8 @@ void render_font::get_scaled_bitmap_and_bounds(bitmap_t &dest, float height, flo
}
// scale the font
- bitmap_t tempbitmap(&dest.pix8(0), bounds.max_x - bounds.min_x, bounds.max_y - bounds.min_y, dest.rowpixels(), dest.format());
- render_texture::hq_scale(tempbitmap, *gl.bitmap, gl.bitmap->cliprect(), NULL);
+ bitmap_argb32 tempbitmap(dest, bounds);
+ render_texture::hq_scale(tempbitmap, gl.bitmap, gl.bitmap.cliprect(), NULL);
}
@@ -728,7 +727,7 @@ bool render_font::save_cached(const char *filename, UINT32 hash)
if (gl.width > 0)
{
// write out a bit-compressed bitmap if we have one
- if (gl.bitmap != NULL)
+ if (gl.bitmap.valid())
{
// write the data to the tempbuffer
dest = tempbuffer;
@@ -739,7 +738,7 @@ bool render_font::save_cached(const char *filename, UINT32 hash)
for (int y = 0; y < gl.bmheight; y++)
{
int desty = y + m_height + m_yoffs - gl.yoffs - gl.bmheight;
- const UINT32 *src = (desty >= 0 && desty < m_height) ? &gl.bitmap->pix32(desty) : NULL;
+ const UINT32 *src = (desty >= 0 && desty < m_height) ? &gl.bitmap.pix32(desty) : NULL;
for (int x = 0; x < gl.bmwidth; x++)
{
if (src != NULL && RGB_ALPHA(src[x]) != 0)
@@ -764,9 +763,8 @@ bool render_font::save_cached(const char *filename, UINT32 hash)
// free the bitmap and texture
m_manager.texture_free(gl.texture);
- auto_free(m_manager.machine(), gl.bitmap);
+ gl.bitmap.reset();
gl.texture = NULL;
- gl.bitmap = NULL;
}
// compute the table entry
diff --git a/src/emu/rendfont.h b/src/emu/rendfont.h
index 8d8ad66a450..6c55a2b72ed 100644
--- a/src/emu/rendfont.h
+++ b/src/emu/rendfont.h
@@ -72,7 +72,7 @@ public:
// texture/bitmap queries
render_texture *get_char_texture_and_bounds(float height, float aspect, unicode_char ch, render_bounds &bounds);
- void get_scaled_bitmap_and_bounds(bitmap_t &dest, float height, float aspect, unicode_char chnum, rectangle &bounds);
+ void get_scaled_bitmap_and_bounds(bitmap_argb32 &dest, float height, float aspect, unicode_char chnum, rectangle &bounds);
private:
// a glyph describes a single glyph
@@ -83,7 +83,7 @@ private:
INT32 xoffs, yoffs; // X and Y offset from baseline to top,left of bitmap
INT32 bmwidth, bmheight; // width and height of bitmap
const char * rawdata; // pointer to the raw data for this one
- bitmap_t * bitmap; // pointer to the bitmap containing the raw data
+ bitmap_argb32 bitmap; // pointer to the bitmap containing the raw data
render_texture * texture; // pointer to a texture for rendering and sizing
};
diff --git a/src/emu/rendlay.c b/src/emu/rendlay.c
index 4367a0a98e8..41c63a33515 100644
--- a/src/emu/rendlay.c
+++ b/src/emu/rendlay.c
@@ -541,7 +541,7 @@ render_texture *layout_element::state_texture(int state)
// resolution
//-------------------------------------------------
-void layout_element::element_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param)
+void layout_element::element_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param)
{
texture *elemtex = (texture *)param;
@@ -555,6 +555,7 @@ void layout_element::element_scale(bitmap_t &dest, const bitmap_t &source, const
bounds.min_y = render_round_nearest(curcomp->bounds().y0 * dest.height());
bounds.max_x = render_round_nearest(curcomp->bounds().x1 * dest.width());
bounds.max_y = render_round_nearest(curcomp->bounds().y1 * dest.height());
+ bounds &= dest.cliprect();
// based on the component type, add to the texture
curcomp->draw(elemtex->m_element->machine(), dest, bounds, elemtex->m_state);
@@ -602,7 +603,6 @@ layout_element::component::component(running_machine &machine, xml_data_node &co
: m_next(NULL),
m_type(CTYPE_INVALID),
m_state(0),
- m_bitmap(NULL),
m_file(NULL),
m_hasalpha(false)
{
@@ -673,7 +673,6 @@ layout_element::component::component(running_machine &machine, xml_data_node &co
layout_element::component::~component()
{
global_free(m_file);
- global_free(m_bitmap);
}
@@ -681,19 +680,17 @@ layout_element::component::~component()
// draw - draw a component
//-------------------------------------------------
-void layout_element::component::draw(running_machine &machine, bitmap_t &dest, const rectangle &bounds, int state)
+void layout_element::component::draw(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state)
{
switch (m_type)
{
case CTYPE_IMAGE:
- if (m_bitmap == NULL)
- m_bitmap = load_bitmap();
- render_resample_argb_bitmap_hq(
- &dest.pix32(bounds.min_y, bounds.min_x),
- dest.rowpixels(),
- bounds.max_x - bounds.min_x,
- bounds.max_y - bounds.min_y,
- m_bitmap, NULL, &m_color);
+ if (!m_bitmap.valid())
+ load_bitmap();
+ {
+ bitmap_argb32 destsub(dest, bounds);
+ render_resample_argb_bitmap_hq(destsub, m_bitmap, m_color);
+ }
break;
case CTYPE_RECT:
@@ -743,7 +740,7 @@ void layout_element::component::draw(running_machine &machine, bitmap_t &dest, c
// color
//-------------------------------------------------
-void layout_element::component::draw_rect(bitmap_t &dest, const rectangle &bounds)
+void layout_element::component::draw_rect(bitmap_argb32 &dest, const rectangle &bounds)
{
// compute premultiplied colors
UINT32 r = m_color.r * m_color.a * 255.0;
@@ -779,7 +776,7 @@ void layout_element::component::draw_rect(bitmap_t &dest, const rectangle &bound
// color
//-------------------------------------------------
-void layout_element::component::draw_disk(bitmap_t &dest, const rectangle &bounds)
+void layout_element::component::draw_disk(bitmap_argb32 &dest, const rectangle &bounds)
{
// compute premultiplied colors
UINT32 r = m_color.r * m_color.a * 255.0;
@@ -831,7 +828,7 @@ void layout_element::component::draw_disk(bitmap_t &dest, const rectangle &bound
// draw_text - draw text in the specified color
//-------------------------------------------------
-void layout_element::component::draw_text(running_machine &machine, bitmap_t &dest, const rectangle &bounds)
+void layout_element::component::draw_text(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds)
{
// compute premultiplied colors
UINT32 r = m_color.r * 255.0;
@@ -853,14 +850,14 @@ void layout_element::component::draw_text(running_machine &machine, bitmap_t &de
INT32 curx = bounds.min_x + (bounds.max_x - bounds.min_x - width) / 2;
// allocate a temporary bitmap
- bitmap_t *tempbitmap = global_alloc(bitmap_t(dest.width(), dest.height(), BITMAP_FORMAT_ARGB32));
+ bitmap_argb32 tempbitmap(dest.width(), dest.height());
// loop over characters
for (const char *s = m_string; *s != 0; s++)
{
// get the font bitmap
rectangle chbounds;
- font->get_scaled_bitmap_and_bounds(*tempbitmap, bounds.max_y - bounds.min_y, aspect, *s, chbounds);
+ font->get_scaled_bitmap_and_bounds(tempbitmap, bounds.max_y - bounds.min_y, aspect, *s, chbounds);
// copy the data into the target
for (int y = 0; y < chbounds.max_y - chbounds.min_y; y++)
@@ -868,7 +865,7 @@ void layout_element::component::draw_text(running_machine &machine, bitmap_t &de
int effy = bounds.min_y + y;
if (effy >= bounds.min_y && effy <= bounds.max_y)
{
- UINT32 *src = &tempbitmap->pix32(y);
+ UINT32 *src = &tempbitmap.pix32(y);
UINT32 *d = &dest.pix32(effy);
for (int x = 0; x < chbounds.max_x - chbounds.min_x; x++)
{
@@ -895,7 +892,6 @@ void layout_element::component::draw_text(running_machine &machine, bitmap_t &de
}
// free the temporary bitmap and font
- global_free(tempbitmap);
machine.render().font_free(font);
}
@@ -905,29 +901,25 @@ void layout_element::component::draw_text(running_machine &machine, bitmap_t &de
// a component
//-------------------------------------------------
-bitmap_t *layout_element::component::load_bitmap()
+void layout_element::component::load_bitmap()
{
// load the basic bitmap
assert(m_file != NULL);
- bitmap_t *bitmap = render_load_png(*m_file, m_dirname, m_imagefile, NULL, &m_hasalpha);
- if (bitmap != NULL && m_alphafile)
+ m_hasalpha = render_load_png(m_bitmap, *m_file, m_dirname, m_imagefile);
- // load the alpha bitmap if specified
- if (render_load_png(*m_file, m_dirname, m_alphafile, bitmap, &m_hasalpha) == NULL)
- {
- global_free(bitmap);
- bitmap = NULL;
- }
+ // load the alpha bitmap if specified
+ if (m_bitmap.valid() && m_alphafile)
+ render_load_png(m_bitmap, *m_file, m_dirname, m_alphafile, true);
// if we can't load the bitmap, allocate a dummy one and report an error
- if (bitmap == NULL)
+ if (!m_bitmap.valid())
{
// draw some stripes in the bitmap
- bitmap = global_alloc(bitmap_t(100, 100, BITMAP_FORMAT_ARGB32));
- bitmap->fill(0);
+ m_bitmap.allocate(100, 100);
+ m_bitmap.fill(0);
for (int step = 0; step < 100; step += 25)
for (int line = 0; line < 100; line++)
- bitmap->pix32((step + line) % 100, line % 100) = MAKE_ARGB(0xff,0xff,0xff,0xff);
+ m_bitmap.pix32((step + line) % 100, line % 100) = MAKE_ARGB(0xff,0xff,0xff,0xff);
// log an error
if (!m_alphafile)
@@ -935,8 +927,6 @@ bitmap_t *layout_element::component::load_bitmap()
else
mame_printf_warning("Unable to load component bitmap '%s'/'%s'", m_imagefile.cstr(), m_alphafile.cstr());
}
-
- return bitmap;
}
@@ -944,7 +934,7 @@ bitmap_t *layout_element::component::load_bitmap()
// draw_led7seg - draw a 7-segment LCD
//-------------------------------------------------
-void layout_element::component::draw_led7seg(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_led7seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff,0xff,0xff,0xff);
const rgb_t offpen = MAKE_ARGB(0xff,0x20,0x20,0x20);
@@ -956,40 +946,38 @@ void layout_element::component::draw_led7seg(bitmap_t &dest, const rectangle &bo
int skewwidth = 40;
// allocate a temporary bitmap for drawing
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth + skewwidth, bmheight, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff,0x00,0x00,0x00));
+ bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight);
+ tempbitmap.fill(MAKE_ARGB(0xff,0x00,0x00,0x00));
// top bar
- draw_segment_horizontal(*tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 0)) ? onpen : offpen);
+ draw_segment_horizontal(tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 0)) ? onpen : offpen);
// top-right bar
- draw_segment_vertical(*tempbitmap, 0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2, segwidth, (pattern & (1 << 1)) ? onpen : offpen);
+ draw_segment_vertical(tempbitmap, 0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2, segwidth, (pattern & (1 << 1)) ? onpen : offpen);
// bottom-right bar
- draw_segment_vertical(*tempbitmap, bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2, segwidth, (pattern & (1 << 2)) ? onpen : offpen);
+ draw_segment_vertical(tempbitmap, bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2, segwidth, (pattern & (1 << 2)) ? onpen : offpen);
// bottom bar
- draw_segment_horizontal(*tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight - segwidth/2, segwidth, (pattern & (1 << 3)) ? onpen : offpen);
+ draw_segment_horizontal(tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight - segwidth/2, segwidth, (pattern & (1 << 3)) ? onpen : offpen);
// bottom-left bar
- draw_segment_vertical(*tempbitmap, bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 4)) ? onpen : offpen);
+ draw_segment_vertical(tempbitmap, bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 4)) ? onpen : offpen);
// top-left bar
- draw_segment_vertical(*tempbitmap, 0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 5)) ? onpen : offpen);
+ draw_segment_vertical(tempbitmap, 0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2, segwidth, (pattern & (1 << 5)) ? onpen : offpen);
// middle bar
- draw_segment_horizontal(*tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight/2, segwidth, (pattern & (1 << 6)) ? onpen : offpen);
+ draw_segment_horizontal(tempbitmap, 0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight/2, segwidth, (pattern & (1 << 6)) ? onpen : offpen);
// apply skew
- apply_skew(*tempbitmap, 40);
+ apply_skew(tempbitmap, 40);
// decimal point
- draw_segment_decimal(*tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 7)) ? onpen : offpen);
+ draw_segment_decimal(tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 7)) ? onpen : offpen);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -997,7 +985,7 @@ void layout_element::component::draw_led7seg(bitmap_t &dest, const rectangle &bo
// draw_led14seg - draw a 14-segment LCD
//-------------------------------------------------
-void layout_element::component::draw_led14seg(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_led14seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff, 0xff, 0xff, 0xff);
const rgb_t offpen = MAKE_ARGB(0xff, 0x20, 0x20, 0x20);
@@ -1009,90 +997,88 @@ void layout_element::component::draw_led14seg(bitmap_t &dest, const rectangle &b
int skewwidth = 40;
// allocate a temporary bitmap for drawing
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth + skewwidth, bmheight, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
+ bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight);
+ tempbitmap.fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
// top bar
- draw_segment_horizontal(*tempbitmap,
+ draw_segment_horizontal(tempbitmap,
0 + 2*segwidth/3, bmwidth - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 0)) ? onpen : offpen);
// right-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 1)) ? onpen : offpen);
// right-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 2)) ? onpen : offpen);
// bottom bar
- draw_segment_horizontal(*tempbitmap,
+ draw_segment_horizontal(tempbitmap,
0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight - segwidth/2,
segwidth, (pattern & (1 << 3)) ? onpen : offpen);
// left-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 4)) ? onpen : offpen);
// left-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 5)) ? onpen : offpen);
// horizontal-middle-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight/2,
segwidth, LINE_CAP_START, (pattern & (1 << 6)) ? onpen : offpen);
// horizontal-middle-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight/2,
segwidth, LINE_CAP_END, (pattern & (1 << 7)) ? onpen : offpen);
// vertical-middle-top bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 8)) ? onpen : offpen);
// vertical-middle-bottom bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 9)) ? onpen : offpen);
// diagonal-left-bottom bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 10)) ? onpen : offpen);
// diagonal-left-top bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 11)) ? onpen : offpen);
// diagonal-right-top bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 12)) ? onpen : offpen);
// diagonal-right-bottom bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 13)) ? onpen : offpen);
// apply skew
- apply_skew(*tempbitmap, 40);
+ apply_skew(tempbitmap, 40);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -1101,7 +1087,7 @@ void layout_element::component::draw_led14seg(bitmap_t &dest, const rectangle &b
// semicolon (2 extra segments)
//-------------------------------------------------
-void layout_element::component::draw_led14segsc(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_led14segsc(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff, 0xff, 0xff, 0xff);
const rgb_t offpen = MAKE_ARGB(0xff, 0x20, 0x20, 0x20);
@@ -1113,99 +1099,97 @@ void layout_element::component::draw_led14segsc(bitmap_t &dest, const rectangle
int skewwidth = 40;
// allocate a temporary bitmap for drawing, adding some extra space for the tail
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth + skewwidth, bmheight + segwidth, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
+ bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight + segwidth);
+ tempbitmap.fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
// top bar
- draw_segment_horizontal(*tempbitmap,
+ draw_segment_horizontal(tempbitmap,
0 + 2*segwidth/3, bmwidth - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 0)) ? onpen : offpen);
// right-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 1)) ? onpen : offpen);
// right-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 2)) ? onpen : offpen);
// bottom bar
- draw_segment_horizontal(*tempbitmap,
+ draw_segment_horizontal(tempbitmap,
0 + 2*segwidth/3, bmwidth - 2*segwidth/3, bmheight - segwidth/2,
segwidth, (pattern & (1 << 3)) ? onpen : offpen);
// left-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 4)) ? onpen : offpen);
// left-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 5)) ? onpen : offpen);
// horizontal-middle-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight/2,
segwidth, LINE_CAP_START, (pattern & (1 << 6)) ? onpen : offpen);
// horizontal-middle-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight/2,
segwidth, LINE_CAP_END, (pattern & (1 << 7)) ? onpen : offpen);
// vertical-middle-top bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 8)) ? onpen : offpen);
// vertical-middle-bottom bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 9)) ? onpen : offpen);
// diagonal-left-bottom bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 10)) ? onpen : offpen);
// diagonal-left-top bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 11)) ? onpen : offpen);
// diagonal-right-top bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 12)) ? onpen : offpen);
// diagonal-right-bottom bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 13)) ? onpen : offpen);
// apply skew
- apply_skew(*tempbitmap, 40);
+ apply_skew(tempbitmap, 40);
// comma tail
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth - (segwidth/2), bmwidth + segwidth,
bmheight - (segwidth), bmheight + segwidth*1.5,
segwidth/2, (pattern & (1 << 15)) ? onpen : offpen);
// decimal point
- draw_segment_decimal(*tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 14)) ? onpen : offpen);
+ draw_segment_decimal(tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 14)) ? onpen : offpen);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -1213,7 +1197,7 @@ void layout_element::component::draw_led14segsc(bitmap_t &dest, const rectangle
// draw_led16seg - draw a 16-segment LCD
//-------------------------------------------------
-void layout_element::component::draw_led16seg(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_led16seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff, 0xff, 0xff, 0xff);
const rgb_t offpen = MAKE_ARGB(0xff, 0x20, 0x20, 0x20);
@@ -1225,100 +1209,98 @@ void layout_element::component::draw_led16seg(bitmap_t &dest, const rectangle &b
int skewwidth = 40;
// allocate a temporary bitmap for drawing
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth + skewwidth, bmheight, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
+ bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight);
+ tempbitmap.fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
// top-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, 0 + segwidth/2,
segwidth, LINE_CAP_START, (pattern & (1 << 0)) ? onpen : offpen);
// top-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, 0 + segwidth/2,
segwidth, LINE_CAP_END, (pattern & (1 << 1)) ? onpen : offpen);
// right-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 2)) ? onpen : offpen);
// right-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 3)) ? onpen : offpen);
// bottom-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight - segwidth/2,
segwidth, LINE_CAP_END, (pattern & (1 << 4)) ? onpen : offpen);
// bottom-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight - segwidth/2,
segwidth, LINE_CAP_START, (pattern & (1 << 5)) ? onpen : offpen);
// left-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 6)) ? onpen : offpen);
// left-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 7)) ? onpen : offpen);
// horizontal-middle-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight/2,
segwidth, LINE_CAP_START, (pattern & (1 << 8)) ? onpen : offpen);
// horizontal-middle-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight/2,
segwidth, LINE_CAP_END, (pattern & (1 << 9)) ? onpen : offpen);
// vertical-middle-top bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 10)) ? onpen : offpen);
// vertical-middle-bottom bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 11)) ? onpen : offpen);
// diagonal-left-bottom bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 12)) ? onpen : offpen);
// diagonal-left-top bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 13)) ? onpen : offpen);
// diagonal-right-top bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 14)) ? onpen : offpen);
// diagonal-right-bottom bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 15)) ? onpen : offpen);
// apply skew
- apply_skew(*tempbitmap, 40);
+ apply_skew(tempbitmap, 40);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -1327,7 +1309,7 @@ void layout_element::component::draw_led16seg(bitmap_t &dest, const rectangle &b
// semicolon (2 extra segments)
//-------------------------------------------------
-void layout_element::component::draw_led16segsc(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_led16segsc(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff, 0xff, 0xff, 0xff);
const rgb_t offpen = MAKE_ARGB(0xff, 0x20, 0x20, 0x20);
@@ -1339,109 +1321,107 @@ void layout_element::component::draw_led16segsc(bitmap_t &dest, const rectangle
int skewwidth = 40;
// allocate a temporary bitmap for drawing
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth + skewwidth, bmheight + segwidth, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
+ bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight + segwidth);
+ tempbitmap.fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
// top-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, 0 + segwidth/2,
segwidth, LINE_CAP_START, (pattern & (1 << 0)) ? onpen : offpen);
// top-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, 0 + segwidth/2,
segwidth, LINE_CAP_END, (pattern & (1 << 1)) ? onpen : offpen);
// right-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 2)) ? onpen : offpen);
// right-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, bmwidth - segwidth/2,
segwidth, (pattern & (1 << 3)) ? onpen : offpen);
// bottom-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight - segwidth/2,
segwidth, LINE_CAP_END, (pattern & (1 << 4)) ? onpen : offpen);
// bottom-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight - segwidth/2,
segwidth, LINE_CAP_START, (pattern & (1 << 5)) ? onpen : offpen);
// left-bottom bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
bmheight/2 + segwidth/3, bmheight - 2*segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 6)) ? onpen : offpen);
// left-top bar
- draw_segment_vertical(*tempbitmap,
+ draw_segment_vertical(tempbitmap,
0 + 2*segwidth/3, bmheight/2 - segwidth/3, 0 + segwidth/2,
segwidth, (pattern & (1 << 7)) ? onpen : offpen);
// horizontal-middle-left bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + 2*segwidth/3, bmwidth/2 - segwidth/10, bmheight/2,
segwidth, LINE_CAP_START, (pattern & (1 << 8)) ? onpen : offpen);
// horizontal-middle-right bar
- draw_segment_horizontal_caps(*tempbitmap,
+ draw_segment_horizontal_caps(tempbitmap,
0 + bmwidth/2 + segwidth/10, bmwidth - 2*segwidth/3, bmheight/2,
segwidth, LINE_CAP_END, (pattern & (1 << 9)) ? onpen : offpen);
// vertical-middle-top bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 10)) ? onpen : offpen);
// vertical-middle-bottom bar
- draw_segment_vertical_caps(*tempbitmap,
+ draw_segment_vertical_caps(tempbitmap,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3, bmwidth/2,
segwidth, LINE_CAP_NONE, (pattern & (1 << 11)) ? onpen : offpen);
// diagonal-left-bottom bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 12)) ? onpen : offpen);
// diagonal-left-top bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
0 + segwidth + segwidth/5, bmwidth/2 - segwidth/2 - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 13)) ? onpen : offpen);
// diagonal-right-top bar
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
0 + segwidth + segwidth/3, bmheight/2 - segwidth/2 - segwidth/3,
segwidth, (pattern & (1 << 14)) ? onpen : offpen);
// diagonal-right-bottom bar
- draw_segment_diagonal_2(*tempbitmap,
+ draw_segment_diagonal_2(tempbitmap,
bmwidth/2 + segwidth/2 + segwidth/5, bmwidth - segwidth - segwidth/5,
bmheight/2 + segwidth/2 + segwidth/3, bmheight - segwidth - segwidth/3,
segwidth, (pattern & (1 << 15)) ? onpen : offpen);
// comma tail
- draw_segment_diagonal_1(*tempbitmap,
+ draw_segment_diagonal_1(tempbitmap,
bmwidth - (segwidth/2), bmwidth + segwidth,
bmheight - (segwidth), bmheight + segwidth*1.5,
segwidth/2, (pattern & (1 << 17)) ? onpen : offpen);
// decimal point (draw last for priority)
- draw_segment_decimal(*tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 16)) ? onpen : offpen);
+ draw_segment_decimal(tempbitmap, bmwidth + segwidth/2, bmheight - segwidth/2, segwidth, (pattern & (1 << 16)) ? onpen : offpen);
// apply skew
- apply_skew(*tempbitmap, 40);
+ apply_skew(tempbitmap, 40);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -1450,7 +1430,7 @@ void layout_element::component::draw_led16segsc(bitmap_t &dest, const rectangle
// dotmatrix
//-------------------------------------------------
-void layout_element::component::draw_dotmatrix(bitmap_t &dest, const rectangle &bounds, int pattern)
+void layout_element::component::draw_dotmatrix(bitmap_argb32 &dest, const rectangle &bounds, int pattern)
{
const rgb_t onpen = MAKE_ARGB(0xff, 0xff, 0xff, 0xff);
const rgb_t offpen = MAKE_ARGB(0xff, 0x20, 0x20, 0x20);
@@ -1461,16 +1441,14 @@ void layout_element::component::draw_dotmatrix(bitmap_t &dest, const rectangle &
int dotwidth = 250;
// allocate a temporary bitmap for drawing
- bitmap_t *tempbitmap = global_alloc(bitmap_t(bmwidth, bmheight, BITMAP_FORMAT_ARGB32));
- tempbitmap->fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
+ bitmap_argb32 tempbitmap(bmwidth, bmheight);
+ tempbitmap.fill(MAKE_ARGB(0xff, 0x00, 0x00, 0x00));
for (int i = 0; i < 8; i++)
- draw_segment_decimal(*tempbitmap, ((dotwidth/2 )+ (i * dotwidth)), bmheight/2, dotwidth, (pattern & (1 << i))?onpen:offpen);
+ draw_segment_decimal(tempbitmap, ((dotwidth/2 )+ (i * dotwidth)), bmheight/2, dotwidth, (pattern & (1 << i))?onpen:offpen);
// resample to the target size
- render_resample_argb_bitmap_hq(&dest.pix32(0), dest.rowpixels(), dest.width(), dest.height(), tempbitmap, NULL, &m_color);
-
- global_free(tempbitmap);
+ render_resample_argb_bitmap_hq(dest, tempbitmap, m_color);
}
@@ -1480,7 +1458,7 @@ void layout_element::component::draw_dotmatrix(bitmap_t &dest, const rectangle &
// and start points
//-------------------------------------------------
-void layout_element::component::draw_segment_horizontal_caps(bitmap_t &dest, int minx, int maxx, int midy, int width, int caps, rgb_t color)
+void layout_element::component::draw_segment_horizontal_caps(bitmap_argb32 &dest, int minx, int maxx, int midy, int width, int caps, rgb_t color)
{
// loop over the width of the segment
for (int y = 0; y < width / 2; y++)
@@ -1501,7 +1479,7 @@ void layout_element::component::draw_segment_horizontal_caps(bitmap_t &dest, int
// LED segment
//-------------------------------------------------
-void layout_element::component::draw_segment_horizontal(bitmap_t &dest, int minx, int maxx, int midy, int width, rgb_t color)
+void layout_element::component::draw_segment_horizontal(bitmap_argb32 &dest, int minx, int maxx, int midy, int width, rgb_t color)
{
draw_segment_horizontal_caps(dest, minx, maxx, midy, width, LINE_CAP_START | LINE_CAP_END, color);
}
@@ -1513,7 +1491,7 @@ void layout_element::component::draw_segment_horizontal(bitmap_t &dest, int minx
// and start points
//-------------------------------------------------
-void layout_element::component::draw_segment_vertical_caps(bitmap_t &dest, int miny, int maxy, int midx, int width, int caps, rgb_t color)
+void layout_element::component::draw_segment_vertical_caps(bitmap_argb32 &dest, int miny, int maxy, int midx, int width, int caps, rgb_t color)
{
// loop over the width of the segment
for (int x = 0; x < width / 2; x++)
@@ -1534,7 +1512,7 @@ void layout_element::component::draw_segment_vertical_caps(bitmap_t &dest, int m
// LED segment
//-------------------------------------------------
-void layout_element::component::draw_segment_vertical(bitmap_t &dest, int miny, int maxy, int midx, int width, rgb_t color)
+void layout_element::component::draw_segment_vertical(bitmap_argb32 &dest, int miny, int maxy, int midx, int width, rgb_t color)
{
draw_segment_vertical_caps(dest, miny, maxy, midx, width, LINE_CAP_START | LINE_CAP_END, color);
}
@@ -1545,7 +1523,7 @@ void layout_element::component::draw_segment_vertical(bitmap_t &dest, int miny,
// LED segment that looks like this: /
//-------------------------------------------------
-void layout_element::component::draw_segment_diagonal_1(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
+void layout_element::component::draw_segment_diagonal_1(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
{
// compute parameters
width *= 1.5;
@@ -1570,7 +1548,7 @@ void layout_element::component::draw_segment_diagonal_1(bitmap_t &dest, int minx
// LED segment that looks like this:
//-------------------------------------------------
-void layout_element::component::draw_segment_diagonal_2(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
+void layout_element::component::draw_segment_diagonal_2(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
{
// compute parameters
width *= 1.5;
@@ -1594,7 +1572,7 @@ void layout_element::component::draw_segment_diagonal_2(bitmap_t &dest, int minx
// draw_segment_decimal - draw a decimal point
//-------------------------------------------------
-void layout_element::component::draw_segment_decimal(bitmap_t &dest, int midx, int midy, int width, rgb_t color)
+void layout_element::component::draw_segment_decimal(bitmap_argb32 &dest, int midx, int midy, int width, rgb_t color)
{
// compute parameters
width /= 2;
@@ -1623,7 +1601,7 @@ void layout_element::component::draw_segment_decimal(bitmap_t &dest, int midx, i
// draw_segment_comma - draw a comma tail
//-------------------------------------------------
-void layout_element::component::draw_segment_comma(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
+void layout_element::component::draw_segment_comma(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color)
{
// compute parameters
width *= 1.5;
@@ -1642,10 +1620,10 @@ void layout_element::component::draw_segment_comma(bitmap_t &dest, int minx, int
//-------------------------------------------------
-// apply_skew - apply skew to a bitmap_t
+// apply_skew - apply skew to a bitmap
//-------------------------------------------------
-void layout_element::component::apply_skew(bitmap_t &dest, int skewwidth)
+void layout_element::component::apply_skew(bitmap_argb32 &dest, int skewwidth)
{
for (int y = 0; y < dest.height(); y++)
{
diff --git a/src/emu/rendlay.h b/src/emu/rendlay.h
index a52ca46205f..463882e96ff 100644
--- a/src/emu/rendlay.h
+++ b/src/emu/rendlay.h
@@ -104,7 +104,7 @@ private:
const render_bounds &bounds() const { return m_bounds; }
// operations
- void draw(running_machine &machine, bitmap_t &dest, const rectangle &bounds, int state);
+ void draw(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state);
private:
// component types
@@ -125,25 +125,25 @@ private:
};
// helpers
- void draw_rect(bitmap_t &dest, const rectangle &bounds);
- void draw_disk(bitmap_t &dest, const rectangle &bounds);
- void draw_text(running_machine &machine, bitmap_t &dest, const rectangle &bounds);
- bitmap_t *load_bitmap();
- void draw_led7seg(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_led14seg(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_led14segsc(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_led16seg(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_led16segsc(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_dotmatrix(bitmap_t &dest, const rectangle &bounds, int pattern);
- void draw_segment_horizontal_caps(bitmap_t &dest, int minx, int maxx, int midy, int width, int caps, rgb_t color);
- void draw_segment_horizontal(bitmap_t &dest, int minx, int maxx, int midy, int width, rgb_t color);
- void draw_segment_vertical_caps(bitmap_t &dest, int miny, int maxy, int midx, int width, int caps, rgb_t color);
- void draw_segment_vertical(bitmap_t &dest, int miny, int maxy, int midx, int width, rgb_t color);
- void draw_segment_diagonal_1(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
- void draw_segment_diagonal_2(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
- void draw_segment_decimal(bitmap_t &dest, int midx, int midy, int width, rgb_t color);
- void draw_segment_comma(bitmap_t &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
- void apply_skew(bitmap_t &dest, int skewwidth);
+ void draw_rect(bitmap_argb32 &dest, const rectangle &bounds);
+ void draw_disk(bitmap_argb32 &dest, const rectangle &bounds);
+ void draw_text(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds);
+ void load_bitmap();
+ void draw_led7seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_led14seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_led14segsc(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_led16seg(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_led16segsc(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_dotmatrix(bitmap_argb32 &dest, const rectangle &bounds, int pattern);
+ void draw_segment_horizontal_caps(bitmap_argb32 &dest, int minx, int maxx, int midy, int width, int caps, rgb_t color);
+ void draw_segment_horizontal(bitmap_argb32 &dest, int minx, int maxx, int midy, int width, rgb_t color);
+ void draw_segment_vertical_caps(bitmap_argb32 &dest, int miny, int maxy, int midx, int width, int caps, rgb_t color);
+ void draw_segment_vertical(bitmap_argb32 &dest, int miny, int maxy, int midx, int width, rgb_t color);
+ void draw_segment_diagonal_1(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
+ void draw_segment_diagonal_2(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
+ void draw_segment_decimal(bitmap_argb32 &dest, int midx, int midy, int width, rgb_t color);
+ void draw_segment_comma(bitmap_argb32 &dest, int minx, int maxx, int miny, int maxy, int width, rgb_t color);
+ void apply_skew(bitmap_argb32 &dest, int skewwidth);
// internal state
component * m_next; // link to next component
@@ -152,7 +152,7 @@ private:
render_bounds m_bounds; // bounds of the element
render_color m_color; // color of the element
astring m_string; // string for text components
- bitmap_t * m_bitmap; // source bitmap for images
+ bitmap_argb32 m_bitmap; // source bitmap for images
astring m_dirname; // directory name of image file (for lazy loading)
emu_file * m_file; // file object for reading image/alpha files
astring m_imagefile; // name of the image file (for lazy loading)
@@ -173,7 +173,7 @@ private:
};
// internal helpers
- static void element_scale(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param);
+ static void element_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
// internal state
layout_element * m_next; // link to next element
diff --git a/src/emu/rendutil.c b/src/emu/rendutil.c
index ac4a1e806c1..b92207bb2bf 100644
--- a/src/emu/rendutil.c
+++ b/src/emu/rendutil.c
@@ -21,10 +21,10 @@
***************************************************************************/
/* utilities */
-static void resample_argb_bitmap_average(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color *color, UINT32 dx, UINT32 dy);
-static void resample_argb_bitmap_bilinear(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color *color, UINT32 dx, UINT32 dy);
-static void copy_png_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasalpha);
-static void copy_png_alpha_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasalpha);
+static void resample_argb_bitmap_average(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color &color, UINT32 dx, UINT32 dy);
+static void resample_argb_bitmap_bilinear(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color &color, UINT32 dx, UINT32 dy);
+static bool copy_png_to_bitmap(bitmap_argb32 &bitmap, const png_info *png);
+static bool copy_png_alpha_to_bitmap(bitmap_argb32 &bitmap, const png_info *png);
@@ -53,40 +53,27 @@ INLINE UINT8 compute_brightness(rgb_t rgb)
quality resampling of a texture
-------------------------------------------------*/
-void render_resample_argb_bitmap_hq(void *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const bitmap_t *source, const rectangle *orig_sbounds, const render_color *color)
+void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color)
{
- UINT32 swidth, sheight;
- const UINT32 *sbase;
- rectangle sbounds;
- UINT32 dx, dy;
-
- if (dwidth == 0 || dheight == 0)
+ if (dest.width() == 0 || dest.height() == 0)
return;
- /* compute the real source bounds */
- if (orig_sbounds != NULL)
- sbounds = *orig_sbounds;
- else
- {
- sbounds.min_x = sbounds.min_y = 0;
- sbounds.max_x = source->width();
- sbounds.max_y = source->height();
- }
-
/* adjust the source base */
- sbase = &source->pix32(sbounds.min_y, sbounds.min_x);
+ const UINT32 *sbase = &source.pix32(0);
/* determine the steppings */
- swidth = sbounds.max_x - sbounds.min_x;
- sheight = sbounds.max_y - sbounds.min_y;
- dx = (swidth << 12) / dwidth;
- dy = (sheight << 12) / dheight;
+ UINT32 swidth = source.width();
+ UINT32 sheight = source.height();
+ UINT32 dwidth = dest.width();
+ UINT32 dheight = dest.height();
+ UINT32 dx = (swidth << 12) / dwidth;
+ UINT32 dy = (sheight << 12) / dheight;
/* if the source is higher res than the target, use full averaging */
if (dx > 0x1000 || dy > 0x1000)
- resample_argb_bitmap_average((UINT32 *)dest, drowpixels, dwidth, dheight, sbase, source->rowpixels(), swidth, sheight, color, dx, dy);
+ resample_argb_bitmap_average(&dest.pix(0), dest.rowpixels(), dwidth, dheight, sbase, source.rowpixels(), swidth, sheight, color, dx, dy);
else
- resample_argb_bitmap_bilinear((UINT32 *)dest, drowpixels, dwidth, dheight, sbase, source->rowpixels(), swidth, sheight, color, dx, dy);
+ resample_argb_bitmap_bilinear(&dest.pix(0), dest.rowpixels(), dwidth, dheight, sbase, source.rowpixels(), swidth, sheight, color, dx, dy);
}
@@ -96,17 +83,17 @@ void render_resample_argb_bitmap_hq(void *dest, UINT32 drowpixels, UINT32 dwidth
all contributing pixels
-------------------------------------------------*/
-static void resample_argb_bitmap_average(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color *color, UINT32 dx, UINT32 dy)
+static void resample_argb_bitmap_average(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color &color, UINT32 dx, UINT32 dy)
{
UINT64 sumscale = (UINT64)dx * (UINT64)dy;
UINT32 r, g, b, a;
UINT32 x, y;
/* precompute premultiplied R/G/B/A factors */
- r = color->r * color->a * 256.0;
- g = color->g * color->a * 256.0;
- b = color->b * color->a * 256.0;
- a = color->a * 256.0;
+ r = color.r * color.a * 256.0;
+ g = color.g * color.a * 256.0;
+ b = color.b * color.a * 256.0;
+ a = color.a * 256.0;
/* loop over the target vertically */
for (y = 0; y < dheight; y++)
@@ -188,17 +175,17 @@ static void resample_argb_bitmap_average(UINT32 *dest, UINT32 drowpixels, UINT32
sampling via a bilinear filter
-------------------------------------------------*/
-static void resample_argb_bitmap_bilinear(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color *color, UINT32 dx, UINT32 dy)
+static void resample_argb_bitmap_bilinear(UINT32 *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const UINT32 *source, UINT32 srowpixels, UINT32 swidth, UINT32 sheight, const render_color &color, UINT32 dx, UINT32 dy)
{
UINT32 maxx = swidth << 12, maxy = sheight << 12;
UINT32 r, g, b, a;
UINT32 x, y;
/* precompute premultiplied R/G/B/A factors */
- r = color->r * color->a * 256.0;
- g = color->g * color->a * 256.0;
- b = color->b * color->a * 256.0;
- a = color->a * 256.0;
+ r = color.r * color.a * 256.0;
+ g = color.g * color.a * 256.0;
+ b = color.b * color.a * 256.0;
+ a = color.a * 256.0;
/* loop over the target vertically */
for (y = 0; y < dheight; y++)
@@ -557,16 +544,16 @@ void render_line_to_quad(const render_bounds *bounds, float width, render_bounds
/*-------------------------------------------------
render_load_png - load a PNG file into a
- bitmap_t
+ bitmap
-------------------------------------------------*/
-bitmap_t *render_load_png(emu_file &file, const char *dirname, const char *filename, bitmap_t *alphadest, bool *hasalpha)
+bool render_load_png(bitmap_argb32 &bitmap, emu_file &file, const char *dirname, const char *filename, bool load_as_alpha_to_existing)
{
- bitmap_t *bitmap = NULL;
- png_info png;
- png_error result;
+ // deallocate if we're not overlaying alpha
+ if (!load_as_alpha_to_existing)
+ bitmap.reset();
- /* open the file */
+ // open the file
astring fname;
if (dirname == NULL)
fname.cpy(filename);
@@ -574,111 +561,53 @@ bitmap_t *render_load_png(emu_file &file, const char *dirname, const char *filen
fname.cpy(dirname).cat(PATH_SEPARATOR).cat(filename);
file_error filerr = file.open(fname);
if (filerr != FILERR_NONE)
- return NULL;
+ return false;
- /* read the PNG data */
- result = png_read_file(file, &png);
+ // read the PNG data
+ png_info png;
+ png_error result = png_read_file(file, &png);
file.close();
if (result != PNGERR_NONE)
- return NULL;
+ return false;
- /* verify we can handle this PNG */
+ // verify we can handle this PNG
if (png.bit_depth > 8)
{
logerror("%s: Unsupported bit depth %d (8 bit max)\n", filename, png.bit_depth);
png_free(&png);
- return NULL;
+ return false;
}
if (png.interlace_method != 0)
{
logerror("%s: Interlace unsupported\n", filename);
png_free(&png);
- return NULL;
+ return false;
}
if (png.color_type != 0 && png.color_type != 3 && png.color_type != 2 && png.color_type != 6)
{
logerror("%s: Unsupported color type %d\n", filename, png.color_type);
png_free(&png);
- return NULL;
+ return false;
}
- /* if less than 8 bits, upsample */
+ // if less than 8 bits, upsample
png_expand_buffer_8bit(&png);
- /* non-alpha case */
- if (alphadest == NULL)
+ // non-alpha case
+ bool hasalpha = false;
+ if (!load_as_alpha_to_existing)
{
- bitmap = global_alloc(bitmap_t(png.width, png.height, BITMAP_FORMAT_ARGB32));
- if (bitmap != NULL)
- copy_png_to_bitmap(*bitmap, &png, hasalpha);
- }
-
- /* alpha case */
- else
- {
- if (png.width == alphadest->width() && png.height == alphadest->height())
- {
- bitmap = alphadest;
- copy_png_alpha_to_bitmap(*bitmap, &png, hasalpha);
- }
+ bitmap.allocate(png.width, png.height);
+ hasalpha = copy_png_to_bitmap(bitmap, &png);
}
- /* free PNG data */
- png_free(&png);
- return bitmap;
-}
-
-void render_load_png(bitmap_t &bitmap, emu_file &file, const char *dirname, const char *filename)
-{
- png_info png;
- png_error result;
-
- bitmap.deallocate();
-
- /* open the file */
- astring fname;
- if (dirname == NULL)
- fname.cpy(filename);
- else
- fname.cpy(dirname).cat(PATH_SEPARATOR).cat(filename);
- file_error filerr = file.open(fname);
- if (filerr != FILERR_NONE)
- return;
-
- /* read the PNG data */
- result = png_read_file(file, &png);
- file.close();
- if (result != PNGERR_NONE)
- return;
-
- /* verify we can handle this PNG */
- if (png.bit_depth > 8)
- {
- logerror("%s: Unsupported bit depth %d (8 bit max)\n", filename, png.bit_depth);
- png_free(&png);
- return;
- }
- if (png.interlace_method != 0)
- {
- logerror("%s: Interlace unsupported\n", filename);
- png_free(&png);
- return;
- }
- if (png.color_type != 0 && png.color_type != 3 && png.color_type != 2 && png.color_type != 6)
- {
- logerror("%s: Unsupported color type %d\n", filename, png.color_type);
- png_free(&png);
- return;
- }
-
- /* if less than 8 bits, upsample */
- png_expand_buffer_8bit(&png);
-
- bitmap.allocate(png.width, png.height, BITMAP_FORMAT_ARGB32);
- copy_png_to_bitmap(bitmap, &png, NULL);
+ // alpha case
+ else if (png.width == bitmap.width() && png.height == bitmap.height())
+ hasalpha = copy_png_alpha_to_bitmap(bitmap, &png);
- /* free PNG data */
+ // free PNG data
png_free(&png);
+ return hasalpha;
}
@@ -687,7 +616,7 @@ void render_load_png(bitmap_t &bitmap, emu_file &file, const char *dirname, cons
bitmap
-------------------------------------------------*/
-static void copy_png_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasalpha)
+static bool copy_png_to_bitmap(bitmap_argb32 &bitmap, const png_info *png)
{
UINT8 accumalpha = 0xff;
UINT8 *src;
@@ -742,8 +671,7 @@ static void copy_png_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasa
}
/* set the hasalpha flag */
- if (hasalpha != NULL)
- *hasalpha = (accumalpha != 0xff);
+ return (accumalpha != 0xff);
}
@@ -752,7 +680,7 @@ static void copy_png_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasa
to the alpha channel of a bitmap
-------------------------------------------------*/
-static void copy_png_alpha_to_bitmap(bitmap_t &bitmap, const png_info *png, bool *hasalpha)
+static bool copy_png_alpha_to_bitmap(bitmap_argb32 &bitmap, const png_info *png)
{
UINT8 accumalpha = 0xff;
UINT8 *src;
@@ -818,6 +746,5 @@ static void copy_png_alpha_to_bitmap(bitmap_t &bitmap, const png_info *png, bool
}
/* set the hasalpha flag */
- if (hasalpha != NULL)
- *hasalpha = (accumalpha != 0xff);
+ return (accumalpha != 0xff);
}
diff --git a/src/emu/rendutil.h b/src/emu/rendutil.h
index 041748e0d23..d9b22ab5f3b 100644
--- a/src/emu/rendutil.h
+++ b/src/emu/rendutil.h
@@ -24,12 +24,11 @@
/* ----- render utilities ----- */
-void render_resample_argb_bitmap_hq(void *dest, UINT32 drowpixels, UINT32 dwidth, UINT32 dheight, const bitmap_t *source, const rectangle *sbounds, const render_color *color);
+void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color);
int render_clip_line(render_bounds *bounds, const render_bounds *clip);
int render_clip_quad(render_bounds *bounds, const render_bounds *clip, render_quad_texuv *texcoords);
void render_line_to_quad(const render_bounds *bounds, float width, render_bounds *bounds0, render_bounds *bounds1);
-bitmap_t *render_load_png(emu_file &file, const char *dirname, const char *filename, bitmap_t *alphadest, bool *hasalpha);
-void render_load_png(bitmap_t &bitmap, emu_file &file, const char *dirname, const char *filename);
+bool render_load_png(bitmap_argb32 &bitmap, emu_file &file, const char *dirname, const char *filename, bool load_as_alpha_to_existing = false);
diff --git a/src/emu/save.h b/src/emu/save.h
index b0585f0fb24..574f23eb192 100644
--- a/src/emu/save.h
+++ b/src/emu/save.h
@@ -268,9 +268,27 @@ ALLOW_SAVE_TYPE(endianness_t);
//-------------------------------------------------
template<>
-inline void save_manager::save_item(const char *module, const char *tag, int index, bitmap_t &value, const char *name)
+inline void save_manager::save_item(const char *module, const char *tag, int index, bitmap_ind8 &value, const char *name)
{
- save_memory(module, tag, index, name, &value.pix8(0), value.bpp() / 8, value.rowpixels() * value.height());
+ save_memory(module, tag, index, name, &value.pix(0), value.bpp() / 8, value.rowpixels() * value.height());
+}
+
+template<>
+inline void save_manager::save_item(const char *module, const char *tag, int index, bitmap_ind16 &value, const char *name)
+{
+ save_memory(module, tag, index, name, &value.pix(0), value.bpp() / 8, value.rowpixels() * value.height());
+}
+
+template<>
+inline void save_manager::save_item(const char *module, const char *tag, int index, bitmap_ind32 &value, const char *name)
+{
+ save_memory(module, tag, index, name, &value.pix(0), value.bpp() / 8, value.rowpixels() * value.height());
+}
+
+template<>
+inline void save_manager::save_item(const char *module, const char *tag, int index, bitmap_rgb32 &value, const char *name)
+{
+ save_memory(module, tag, index, name, &value.pix(0), value.bpp() / 8, value.rowpixels() * value.height());
}
diff --git a/src/emu/screen.c b/src/emu/screen.c
index f67ba97480c..15d2a7a698f 100644
--- a/src/emu/screen.c
+++ b/src/emu/screen.c
@@ -78,19 +78,18 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev
m_oldstyle_vblank_supplied(false),
m_refresh(0),
m_vblank(0),
- m_format(BITMAP_FORMAT_INVALID),
m_xoffset(0.0f),
m_yoffset(0.0f),
m_xscale(1.0f),
m_yscale(1.0f),
- m_screen_update(NULL),
+ m_screen_update_device(NULL),
m_screen_eof(NULL),
m_container(NULL),
m_width(100),
m_height(100),
+ m_visarea(0, 99, 0, 99),
m_curbitmap(0),
m_curtexture(0),
- m_texture_format(0),
m_changed(true),
m_last_partial_scan(0),
m_frame_period(DEFAULT_FRAME_PERIOD.as_attoseconds()),
@@ -106,9 +105,6 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev
m_frame_number(0),
m_partial_updates_this_frame(0)
{
- m_visarea.min_x = m_visarea.min_y = 0;
- m_visarea.max_x = m_width - 1;
- m_visarea.max_y = m_height - 1;
memset(m_texture, 0, sizeof(m_texture));
}
@@ -123,18 +119,6 @@ screen_device::~screen_device()
//-------------------------------------------------
-// static_set_format - configuration helper
-// to set the bitmap format
-//-------------------------------------------------
-
-void screen_device::static_set_format(device_t &device, bitmap_format format)
-{
- screen_device &screen = downcast<screen_device &>(device);
- screen.m_format = format;
-}
-
-
-//-------------------------------------------------
// static_set_type - configuration helper
// to set the screen type
//-------------------------------------------------
@@ -240,9 +224,11 @@ void screen_device::static_set_default_position(device_t &device, double xscale,
// configuration
//-------------------------------------------------
-void screen_device::static_set_screen_update(device_t &device, screen_update_func callback)
+void screen_device::static_set_screen_update(device_t &device, screen_update_delegate callback, const char *devicename)
{
- downcast<screen_device &>(device).m_screen_update = callback;
+ screen_device &screen = downcast<screen_device &>(device);
+ screen.m_screen_update = callback;
+ screen.m_screen_update_device = devicename;
}
@@ -287,9 +273,8 @@ bool screen_device::device_validity_check(emu_options &options, const game_drive
}
// sanity check screen formats
- if (m_format != BITMAP_FORMAT_INDEXED16 &&
- m_format != BITMAP_FORMAT_RGB15 &&
- m_format != BITMAP_FORMAT_RGB32)
+ if (m_screen_update.format() != BITMAP_FORMAT_IND16 &&
+ m_screen_update.format() != BITMAP_FORMAT_RGB32)
{
mame_printf_error("%s: %s screen '%s' has unsupported format\n", driver.source_file, driver.name, tag());
error = true;
@@ -302,6 +287,7 @@ bool screen_device::device_validity_check(emu_options &options, const game_drive
mame_printf_error("%s: %s screen '%s' has a zero refresh rate\n", driver.source_file, driver.name, tag());
error = true;
}
+
return error;
}
@@ -312,6 +298,25 @@ bool screen_device::device_validity_check(emu_options &options, const game_drive
void screen_device::device_start()
{
+ // bind our handlers
+ if (!m_screen_update.isnull())
+ {
+ device_t *device = (m_screen_update_device == NULL) ? machine().driver_data() : machine().device(m_screen_update_device);
+ if (device == NULL) throw emu_fatalerror("Unable to find screen update device '%s' for screen '%s'\n", m_screen_update_device, tag());
+ m_screen_update.late_bind(*device);
+ }
+
+ // configure bitmap formats
+ texture_format texformat;
+ switch (m_screen_update.format())
+ {
+ default:
+ case BITMAP_FORMAT_IND16: texformat = TEXFORMAT_PALETTE16; break;
+ case BITMAP_FORMAT_RGB32: texformat = TEXFORMAT_RGB32; break;
+ }
+ for (int index = 0; index < ARRAY_LENGTH(m_bitmap); index++)
+ m_bitmap[index].set_format(m_screen_update.format(), texformat);
+
// configure the default cliparea
render_container::user_settings settings;
m_container->get_user_settings(settings);
@@ -349,7 +354,7 @@ void screen_device::device_start()
int width, height;
if (sscanf(machine().options().snap_size(), "%dx%d", &width, &height) != 2 || width == 0 || height == 0)
width = height = 300;
- m_burnin.allocate(width, height, BITMAP_FORMAT_INDEXED64);
+ m_burnin.allocate(width, height);
m_burnin.fill(0);
}
@@ -508,31 +513,19 @@ void screen_device::realloc_screen_bitmaps()
curwidth = MAX(m_width, curwidth);
curheight = MAX(m_height, curheight);
- // choose the texture format - convert the screen format to a texture format
- palette_t *palette = NULL;
- switch (m_format)
- {
- case BITMAP_FORMAT_INDEXED16: m_texture_format = TEXFORMAT_PALETTE16; palette = machine().palette; break;
- case BITMAP_FORMAT_RGB15: m_texture_format = TEXFORMAT_RGB15; palette = NULL; break;
- case BITMAP_FORMAT_RGB32: m_texture_format = TEXFORMAT_RGB32; palette = NULL; break;
- default: fatalerror("Invalid bitmap format!"); break;
- }
+ // allocate raw textures
+ m_texture[0] = machine().render().texture_alloc();
+ m_texture[1] = machine().render().texture_alloc();
// allocate bitmaps
- m_bitmap[0].allocate(curwidth, curheight, m_format);
+ m_bitmap[0].allocate(curwidth, curheight);
m_bitmap[0].set_palette(machine().palette);
- m_bitmap[1].allocate(curwidth, curheight, m_format);
+ m_bitmap[1].allocate(curwidth, curheight);
m_bitmap[1].set_palette(machine().palette);
- // allocate textures
- m_texture[0] = machine().render().texture_alloc();
- m_texture[0]->set_bitmap(&m_bitmap[0], &m_visarea, m_texture_format, palette);
- m_texture[1] = machine().render().texture_alloc();
- m_texture[1]->set_bitmap(&m_bitmap[1], &m_visarea, m_texture_format, palette);
-
- // allocate generic backing bitmap
- m_default.allocate(curwidth, curheight, m_format);
- m_default.set_palette(machine().palette);
+ // set up textures
+ m_texture[0]->set_bitmap(m_bitmap[0], m_visarea, m_bitmap[0].texformat());
+ m_texture[1]->set_bitmap(m_bitmap[1], m_visarea, m_bitmap[1].texformat());
}
}
@@ -613,7 +606,15 @@ bool screen_device::update_partial(int scanline)
g_profiler.start(PROFILER_VIDEO);
LOG_PARTIAL_UPDATES(("updating %d-%d\n", clip.min_y, clip.max_y));
- flags = screen_update(m_bitmap[m_curbitmap], clip);
+ flags = 0;
+ screen_bitmap &curbitmap = m_bitmap[m_curbitmap];
+ switch (curbitmap.format())
+ {
+ default:
+ case BITMAP_FORMAT_IND16: flags = m_screen_update(*this, curbitmap.as_ind16(), clip); break;
+ case BITMAP_FORMAT_RGB32: flags = m_screen_update(*this, curbitmap.as_rgb32(), clip); break;
+ }
+
m_partial_updates_this_frame++;
g_profiler.stop();
@@ -866,13 +867,7 @@ bool screen_device::update_quads()
// if we're not skipping the frame and if the screen actually changed, then update the texture
if (!machine().video().skip_this_frame() && m_changed)
{
- rectangle fixedvis = m_visarea;
- fixedvis.max_x++;
- fixedvis.max_y++;
-
- palette_t *palette = (m_texture_format == TEXFORMAT_PALETTE16) ? machine().palette : NULL;
- m_texture[m_curbitmap]->set_bitmap(&m_bitmap[m_curbitmap], &fixedvis, m_texture_format, palette);
-
+ m_texture[m_curbitmap]->set_bitmap(m_bitmap[m_curbitmap], m_visarea, m_bitmap[m_curbitmap].texformat());
m_curtexture = m_curbitmap;
m_curbitmap = 1 - m_curbitmap;
}
@@ -900,12 +895,12 @@ void screen_device::update_burnin()
if (!m_burnin.valid())
return;
- bitmap_t &srcbitmap = m_bitmap[m_curtexture];
- if (!srcbitmap.valid())
+ screen_bitmap &curbitmap = m_bitmap[m_curtexture];
+ if (!curbitmap.valid())
return;
- int srcwidth = srcbitmap.width();
- int srcheight = srcbitmap.height();
+ int srcwidth = curbitmap.width();
+ int srcheight = curbitmap.height();
int dstwidth = m_burnin.width();
int dstheight = m_burnin.height();
int xstep = (srcwidth << 16) / dstwidth;
@@ -914,44 +909,43 @@ void screen_device::update_burnin()
int ystart = ((UINT32)rand() % 32767) * ystep / 32767;
int srcx, srcy;
int x, y;
-
- // iterate over rows in the destination
- for (y = 0, srcy = ystart; y < dstheight; y++, srcy += ystep)
+
+ switch (curbitmap.format())
{
- UINT64 *dst = &m_burnin.pix64(y);
-
- // handle the 16-bit palettized case
- if (srcbitmap.format() == BITMAP_FORMAT_INDEXED16)
+ default:
+ case BITMAP_FORMAT_IND16:
{
- const UINT16 *src = &srcbitmap.pix16(srcy >> 16);
- const rgb_t *palette = palette_entry_list_adjusted(machine().palette);
- for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
+ // iterate over rows in the destination
+ bitmap_ind16 &srcbitmap = curbitmap.as_ind16();
+ for (y = 0, srcy = ystart; y < dstheight; y++, srcy += ystep)
{
- rgb_t pixel = palette[src[srcx >> 16]];
- dst[x] += RGB_GREEN(pixel) + RGB_RED(pixel) + RGB_BLUE(pixel);
- }
- }
-
- // handle the 15-bit RGB case
- else if (srcbitmap.format() == BITMAP_FORMAT_RGB15)
- {
- const UINT16 *src = &srcbitmap.pix16(srcy >> 16);
- for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
- {
- rgb15_t pixel = src[srcx >> 16];
- dst[x] += ((pixel >> 10) & 0x1f) + ((pixel >> 5) & 0x1f) + ((pixel >> 0) & 0x1f);
+ UINT64 *dst = &m_burnin.pix64(y);
+ const UINT16 *src = &srcbitmap.pix16(srcy >> 16);
+ const rgb_t *palette = palette_entry_list_adjusted(machine().palette);
+ for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
+ {
+ rgb_t pixel = palette[src[srcx >> 16]];
+ dst[x] += RGB_GREEN(pixel) + RGB_RED(pixel) + RGB_BLUE(pixel);
+ }
}
+ break;
}
-
- // handle the 32-bit RGB case
- else if (srcbitmap.format() == BITMAP_FORMAT_RGB32)
+
+ case BITMAP_FORMAT_RGB32:
{
- const UINT32 *src = &srcbitmap.pix32(srcy >> 16);
- for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
+ // iterate over rows in the destination
+ bitmap_rgb32 &srcbitmap = curbitmap.as_rgb32();
+ for (y = 0, srcy = ystart; y < dstheight; y++, srcy += ystep)
{
- rgb_t pixel = src[srcx >> 16];
- dst[x] += RGB_GREEN(pixel) + RGB_RED(pixel) + RGB_BLUE(pixel);
+ UINT64 *dst = &m_burnin.pix64(y);
+ const UINT32 *src = &srcbitmap.pix32(srcy >> 16);
+ for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
+ {
+ rgb_t pixel = src[srcx >> 16];
+ dst[x] += RGB_GREEN(pixel) + RGB_RED(pixel) + RGB_BLUE(pixel);
+ }
}
+ break;
}
}
}
@@ -974,7 +968,7 @@ void screen_device::finalize_burnin()
scaledvis.max_y = m_visarea.max_y * m_burnin.height() / m_height;
// wrap a bitmap around the subregion we care about
- bitmap_t finalmap(scaledvis.max_x + 1 - scaledvis.min_x, scaledvis.max_y + 1 - scaledvis.min_y, BITMAP_FORMAT_ARGB32);
+ bitmap_argb32 finalmap(scaledvis.max_x + 1 - scaledvis.min_x, scaledvis.max_y + 1 - scaledvis.min_y);
int srcwidth = m_burnin.width();
int srcheight = m_burnin.height();
int dstwidth = finalmap.width();
@@ -1060,20 +1054,6 @@ void screen_device::load_effect_overlay(const char *filename)
//-------------------------------------------------
-// screen_update - default implementation which
-// calls to the legacy screen_update function
-//-------------------------------------------------
-
-bool screen_device::screen_update(bitmap_t &bitmap, const rectangle &cliprect)
-{
- if (m_screen_update != NULL)
- return (*m_screen_update)(*this, bitmap, cliprect);
- else
- return machine().driver_data<driver_device>()->screen_update(*this, bitmap, cliprect);
-}
-
-
-//-------------------------------------------------
// screen_eof - default implementation which
// calls to the legacy screen_update function
//-------------------------------------------------
diff --git a/src/emu/screen.h b/src/emu/screen.h
index 16beda4af97..55b0c6dbec9 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -71,10 +71,149 @@ class render_texture;
class screen_device;
+// ======================> screen_bitmap
+
+class screen_bitmap
+{
+private:
+ // internal helpers
+ bitmap_t &appropriate_bitmap()
+ {
+ switch (m_format)
+ {
+ case BITMAP_FORMAT_IND16: return m_ind16;
+ case BITMAP_FORMAT_RGB32: return m_rgb32;
+ default: throw emu_fatalerror("Invalid screen_bitmap format");
+ }
+ }
+
+ const bitmap_t &appropriate_bitmap() const
+ {
+ switch (m_format)
+ {
+ case BITMAP_FORMAT_IND16: return m_ind16;
+ case BITMAP_FORMAT_RGB32: return m_rgb32;
+ default: throw emu_fatalerror("Invalid screen_bitmap format");
+ }
+ }
+
+public:
+ // construction/destruction
+ screen_bitmap()
+ : m_format(BITMAP_FORMAT_INVALID),
+ m_texformat(TEXFORMAT_UNDEFINED) { }
+ screen_bitmap(bitmap_ind16 &orig)
+ : m_format(BITMAP_FORMAT_IND16),
+ m_texformat(TEXFORMAT_PALETTE16),
+ m_ind16(orig, orig.cliprect()) { }
+ screen_bitmap(bitmap_rgb32 &orig)
+ : m_format(BITMAP_FORMAT_RGB32),
+ m_texformat(TEXFORMAT_RGB32),
+ m_rgb32(orig, orig.cliprect()) { }
+
+ // allocation
+ void allocate(int width, int height)
+ {
+ switch (m_format)
+ {
+ case BITMAP_FORMAT_IND16: m_ind16.allocate(width, height); break;
+ case BITMAP_FORMAT_RGB32: m_rgb32.allocate(width, height); break;
+ default: throw emu_fatalerror("Invalid screen_bitmap format");
+ }
+ }
+
+ // conversion
+ operator bitmap_t &() { return appropriate_bitmap(); }
+ bitmap_ind16 &as_ind16() { assert(m_format == BITMAP_FORMAT_IND16); return m_ind16; }
+ bitmap_rgb32 &as_rgb32() { assert(m_format == BITMAP_FORMAT_RGB32); return m_rgb32; }
+
+ // getters
+ INT32 width() const { return appropriate_bitmap().width(); }
+ INT32 height() const { return appropriate_bitmap().height(); }
+ INT32 rowpixels() const { return appropriate_bitmap().rowpixels(); }
+ INT32 rowbytes() const { return appropriate_bitmap().rowbytes(); }
+ UINT8 bpp() const { return appropriate_bitmap().bpp(); }
+ bitmap_format format() const { return m_format; }
+ texture_format texformat() const { return m_texformat; }
+ bool valid() const { return appropriate_bitmap().valid(); }
+ palette_t *palette() const { return appropriate_bitmap().palette(); }
+ const rectangle &cliprect() const { return appropriate_bitmap().cliprect(); }
+
+ // operations
+ void set_palette(palette_t *palette) { appropriate_bitmap().set_palette(palette); }
+ void set_format(bitmap_format format, texture_format texformat)
+ {
+ m_format = format;
+ m_texformat = texformat;
+ m_ind16.reset();
+ m_rgb32.reset();
+ }
+
+private:
+ // internal state
+ bitmap_format m_format;
+ texture_format m_texformat;
+ bitmap_ind16 m_ind16;
+ bitmap_rgb32 m_rgb32;
+};
+
+
+// ======================> screen_update_delegate
+
+// composite "smart" delegate with late binding
+class screen_update_delegate
+{
+public:
+ // construction
+ screen_update_delegate() { }
+
+ screen_update_delegate(UINT32 (*callback)(screen_device *, screen_device &, bitmap_ind16 &, const rectangle &), const char *name)
+ : m_ind16(callback, name, (screen_device *)0) { }
+
+ screen_update_delegate(UINT32 (*callback)(screen_device *, screen_device &, bitmap_rgb32 &, const rectangle &), const char *name)
+ : m_rgb32(callback, name, (screen_device *)0) { }
+
+ template<class _FunctionClass>
+ screen_update_delegate(UINT32 (_FunctionClass::*callback)(screen_device &, bitmap_ind16 &, const rectangle &), const char *name)
+ : m_ind16(callback, name, (_FunctionClass *)0) { }
+
+ template<class _FunctionClass>
+ screen_update_delegate(UINT32 (_FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, const rectangle &), const char *name)
+ : m_rgb32(callback, name, (_FunctionClass *)0) { }
+
+ // queries
+ bool isnull() const { return m_ind16.isnull() && m_rgb32.isnull(); }
+ bitmap_format format() const { return (!m_ind16.isnull()) ? BITMAP_FORMAT_IND16 : (!m_rgb32.isnull()) ? BITMAP_FORMAT_RGB32 : BITMAP_FORMAT_INVALID; }
+
+ // binding
+ void late_bind(delegate_late_bind &object)
+ {
+ if (!m_ind16.isnull()) m_ind16.late_bind(object);
+ if (!m_rgb32.isnull()) m_rgb32.late_bind(object);
+ }
+
+ // calling
+ UINT32 operator()(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &rectangle) const
+ {
+ return m_ind16.isnull() ? UPDATE_HAS_NOT_CHANGED : m_ind16(screen, bitmap, rectangle);
+ }
+
+ UINT32 operator()(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &rectangle) const
+ {
+ return m_rgb32.isnull() ? UPDATE_HAS_NOT_CHANGED : m_rgb32(screen, bitmap, rectangle);
+ }
+
+private:
+ delegate<UINT32 (screen_device &, bitmap_ind16 &, const rectangle &)> m_ind16;
+ delegate<UINT32 (screen_device &, bitmap_rgb32 &, const rectangle &)> m_rgb32;
+};
+
+
// callback that is called to notify of a change in the VBLANK state
typedef delegate<void (screen_device &, bool)> vblank_state_delegate;
-typedef UINT32 (*screen_update_func)(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+typedef delegate<void (screen_device &)> screen_eof_delegate;
+
typedef void (*screen_eof_func)(screen_device &screen);
@@ -97,15 +236,14 @@ public:
bool oldstyle_vblank_supplied() const { return m_oldstyle_vblank_supplied; }
attoseconds_t refresh_attoseconds() const { return m_refresh; }
attoseconds_t vblank_attoseconds() const { return m_vblank; }
- bitmap_format format() const { return m_format; }
+ bitmap_format format() const { return m_screen_update.format(); }
float xoffset() const { return m_xoffset; }
float yoffset() const { return m_yoffset; }
float xscale() const { return m_xscale; }
float yscale() const { return m_yscale; }
- bool have_screen_update() const { return m_screen_update != NULL; }
+ bool have_screen_update() const { return !m_screen_update.isnull(); }
// inline configuration helpers
- static void static_set_format(device_t &device, bitmap_format format);
static void static_set_type(device_t &device, screen_type_enum type);
static void static_set_raw(device_t &device, UINT32 pixclock, UINT16 htotal, UINT16 hbend, UINT16 hbstart, UINT16 vtotal, UINT16 vbend, UINT16 vbstart);
static void static_set_refresh(device_t &device, attoseconds_t rate);
@@ -113,13 +251,12 @@ public:
static void static_set_size(device_t &device, UINT16 width, UINT16 height);
static void static_set_visarea(device_t &device, INT16 minx, INT16 maxx, INT16 miny, INT16 maxy);
static void static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs);
- static void static_set_screen_update(device_t &device, screen_update_func callback);
+ static void static_set_screen_update(device_t &device, screen_update_delegate callback, const char *devicename = NULL);
static void static_set_screen_eof(device_t &device, screen_eof_func callback);
// information getters
screen_device *next_screen() const { return downcast<screen_device *>(typenext()); }
render_container &container() const { assert(m_container != NULL); return *m_container; }
- bool screen_update(bitmap_t &bitmap, const rectangle &cliprect);
void screen_eof();
// dynamic configuration
@@ -146,11 +283,9 @@ public:
// updating
bool update_partial(int scanline);
void update_now();
-
+
// additional helpers
void register_vblank_callback(vblank_state_delegate vblank_callback);
- bitmap_t *alloc_compatible_bitmap(int width = 0, int height = 0) { return auto_bitmap_alloc(machine(), (width == 0) ? m_width : width, (height == 0) ? m_height : height, format()); }
- bitmap_t &default_bitmap() { return m_default; }
// internal to the video system
bool update_quads();
@@ -193,10 +328,10 @@ private:
bool m_oldstyle_vblank_supplied; // MCFG_SCREEN_VBLANK_TIME macro used
attoseconds_t m_refresh; // default refresh period
attoseconds_t m_vblank; // duration of a VBLANK
- bitmap_format m_format; // bitmap format
float m_xoffset, m_yoffset; // default X/Y offsets
float m_xscale, m_yscale; // default X/Y scale factor
- screen_update_func m_screen_update; // screen update callback
+ screen_update_delegate m_screen_update; // screen update callback (16-bit palette)
+ const char * m_screen_update_device; // device for resolving the screen update
screen_eof_func m_screen_eof; // screen eof callback
// internal state
@@ -208,16 +343,15 @@ private:
rectangle m_visarea; // current visible area (HBLANK end/start, VBLANK end/start)
// textures and bitmaps
+ texture_format m_texformat; // texture format
render_texture * m_texture[2]; // 2x textures for the screen bitmap
- bitmap_t m_bitmap[2]; // 2x bitmaps for rendering
- bitmap_t m_default; // default backing bitmap (copied by default)
- bitmap_t m_burnin; // burn-in bitmap
+ screen_bitmap m_bitmap[2]; // 2x bitmaps for rendering
+ bitmap_ind64 m_burnin; // burn-in bitmap
UINT8 m_curbitmap; // current bitmap index
UINT8 m_curtexture; // current texture index
- INT32 m_texture_format; // texture format of bitmap for this screen
bool m_changed; // has this bitmap changed?
INT32 m_last_partial_scan; // scanline of last partial update
- bitmap_t m_screen_overlay_bitmap; // screen overlay bitmap
+ bitmap_argb32 m_screen_overlay_bitmap; // screen overlay bitmap
// screen timing
attoseconds_t m_frame_period; // attoseconds per frame
@@ -257,8 +391,10 @@ extern const device_type SCREEN;
//**************************************************************************
#define SCREEN_UPDATE_NAME(name) screen_update_##name
-#define SCREEN_UPDATE(name) UINT32 SCREEN_UPDATE_NAME(name)(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
-#define SCREEN_UPDATE_CALL(name) SCREEN_UPDATE_NAME(name)(screen, bitmap, cliprect)
+#define SCREEN_UPDATE_IND16(name) UINT32 SCREEN_UPDATE_NAME(name)(screen_device *__dummy, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+#define SCREEN_UPDATE_RGB32(name) UINT32 SCREEN_UPDATE_NAME(name)(screen_device *__dummy, screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+#define SCREEN_UPDATE16_CALL(name) SCREEN_UPDATE_NAME(name)(__dummy, screen, bitmap, cliprect)
+#define SCREEN_UPDATE32_CALL(name) SCREEN_UPDATE_NAME(name)(__dummy, screen, bitmap, cliprect)
#define SCREEN_EOF_NAME(name) screen_eof_##name
#define SCREEN_EOF(name) void SCREEN_EOF_NAME(name)(screen_device &screen)
@@ -273,9 +409,6 @@ extern const device_type SCREEN;
#define MCFG_SCREEN_MODIFY(_tag) \
MCFG_DEVICE_MODIFY(_tag)
-#define MCFG_SCREEN_FORMAT(_format) \
- screen_device::static_set_format(*device, _format); \
-
#define MCFG_SCREEN_TYPE(_type) \
screen_device::static_set_type(*device, SCREEN_TYPE_##_type); \
@@ -297,8 +430,14 @@ extern const device_type SCREEN;
#define MCFG_SCREEN_DEFAULT_POSITION(_xscale, _xoffs, _yscale, _yoffs) \
screen_device::static_set_default_position(*device, _xscale, _xoffs, _yscale, _yoffs); \
-#define MCFG_SCREEN_UPDATE(_func) \
- screen_device::static_set_screen_update(*device, SCREEN_UPDATE_NAME(_func)); \
+#define MCFG_SCREEN_UPDATE_STATIC(_func) \
+ screen_device::static_set_screen_update(*device, screen_update_delegate(&screen_update_##_func, "screen_update_" #_func), device->tag()); \
+
+#define MCFG_SCREEN_UPDATE_DRIVER(_class, _method) \
+ screen_device::static_set_screen_update(*device, screen_update_delegate(&_class::_method, #_class "::" #_method)); \
+
+#define MCFG_SCREEN_UPDATE_DEVICE(_device, _class, _method) \
+ screen_device::static_set_screen_update(*device, screen_update_delegate(&_class::_method, #_class "::" #_method), _device); \
#define MCFG_SCREEN_EOF(_func) \
screen_device::static_set_screen_eof(*device, SCREEN_EOF_NAME(_func)); \
diff --git a/src/emu/sound/bsmt2000.c b/src/emu/sound/bsmt2000.c
index 114461beece..4f3ddbf930a 100644
--- a/src/emu/sound/bsmt2000.c
+++ b/src/emu/sound/bsmt2000.c
@@ -182,7 +182,7 @@ void bsmt2000_device::device_start()
// in theory we should generate a 24MHz stream, but that's certainly overkill
// internally at 24MHz the max output sample rate is 32kHz
// divided by 128 gives us 6x the max output rate which is plenty for oversampling
- m_stream = machine().sound().stream_alloc(*this, 0, 2, clock() / 128);
+ m_stream = stream_alloc(0, 2, clock() / 128);
// register for save states
save_item(NAME(m_register_select));
diff --git a/src/emu/sound/cdp1864.c b/src/emu/sound/cdp1864.c
index 3dff797f8d5..376cc3ffb98 100644
--- a/src/emu/sound/cdp1864.c
+++ b/src/emu/sound/cdp1864.c
@@ -169,7 +169,7 @@ void cdp1864_device::device_start()
// find devices
m_cpu = machine().device<cpu_device>(m_cpu_tag);
m_screen = machine().device<screen_device>(m_screen_tag);
- m_bitmap = auto_bitmap_alloc(machine(), m_screen->width(), m_screen->height(), m_screen->format());
+ m_bitmap.allocate(m_screen->width(), m_screen->height());
// register for state saving
save_item(NAME(m_disp));
@@ -422,7 +422,7 @@ WRITE8_MEMBER( cdp1864_device::dma_w )
color = (gdata << 2) | (bdata << 1) | rdata;
}
- m_bitmap->pix16(y, sx + x) = color;
+ m_bitmap.pix16(y, sx + x) = color;
data <<= 1;
}
@@ -470,15 +470,16 @@ WRITE_LINE_MEMBER( cdp1864_device::evs_w )
// update_screen -
//-------------------------------------------------
-void cdp1864_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 cdp1864_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_disp)
{
- copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect);
- m_bitmap->fill(CDP1864_BACKGROUND_COLOR_SEQUENCE[m_bgcolor] + 8, cliprect);
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
+ m_bitmap.fill(CDP1864_BACKGROUND_COLOR_SEQUENCE[m_bgcolor] + 8, cliprect);
}
else
{
bitmap.fill(get_black_pen(machine()), cliprect);
}
+ return 0;
}
diff --git a/src/emu/sound/cdp1864.h b/src/emu/sound/cdp1864.h
index 4cdc3efc47b..6d2193840d7 100644
--- a/src/emu/sound/cdp1864.h
+++ b/src/emu/sound/cdp1864.h
@@ -87,7 +87,6 @@
#define MCFG_CDP1864_SCREEN_ADD(_tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
MCFG_SCREEN_RAW_PARAMS(_clock, CDP1864_SCREEN_WIDTH, CDP1864_HBLANK_END, CDP1864_HBLANK_START, CDP1864_TOTAL_SCANLINES, CDP1864_SCANLINE_VBLANK_END, CDP1864_SCANLINE_VBLANK_START)
@@ -156,7 +155,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( aoe_w );
DECLARE_WRITE_LINE_MEMBER( evs_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -187,7 +186,7 @@ private:
cpu_device *m_cpu;
screen_device *m_screen; // screen
- bitmap_t *m_bitmap; // bitmap
+ bitmap_ind16 m_bitmap; // bitmap
sound_stream *m_stream; // sound output
// video state
diff --git a/src/emu/sound/cdp1869.c b/src/emu/sound/cdp1869.c
index 165a4898486..44db966d5ed 100644
--- a/src/emu/sound/cdp1869.c
+++ b/src/emu/sound/cdp1869.c
@@ -539,7 +539,7 @@ void cdp1869_device::sound_stream_update(sound_stream &stream, stream_sample_t *
// draw_line - draw character line
//-------------------------------------------------
-void cdp1869_device::draw_line(bitmap_t &bitmap, const rectangle &rect, int x, int y, UINT8 data, int color)
+void cdp1869_device::draw_line(bitmap_ind16 &bitmap, const rectangle &rect, int x, int y, UINT8 data, int color)
{
int i;
@@ -583,7 +583,7 @@ void cdp1869_device::draw_line(bitmap_t &bitmap, const rectangle &rect, int x, i
// draw_char - draw character
//-------------------------------------------------
-void cdp1869_device::draw_char(bitmap_t &bitmap, const rectangle &rect, int x, int y, UINT16 pma)
+void cdp1869_device::draw_char(bitmap_ind16 &bitmap, const rectangle &rect, int x, int y, UINT16 pma)
{
UINT8 pmd = read_page_ram_byte(pma);
@@ -907,7 +907,7 @@ READ_LINE_MEMBER( cdp1869_device::pal_ntsc_r )
// update_screen - update screen
//-------------------------------------------------
-void cdp1869_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 cdp1869_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle screen_rect, outer;
@@ -973,4 +973,5 @@ void cdp1869_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
}
}
}
+ return 0;
}
diff --git a/src/emu/sound/cdp1869.h b/src/emu/sound/cdp1869.h
index b717dbe720c..b56f82f76d6 100644
--- a/src/emu/sound/cdp1869.h
+++ b/src/emu/sound/cdp1869.h
@@ -142,15 +142,15 @@
MCFG_DEVICE_CONFIG(_config) \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
-#define MCFG_CDP1869_SCREEN_PAL_ADD(_tag, _clock) \
+#define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
+ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, CDP1869_SCREEN_WIDTH, CDP1869_HBLANK_END, CDP1869_HBLANK_START, CDP1869_TOTAL_SCANLINES_PAL, CDP1869_SCANLINE_VBLANK_END_PAL, CDP1869_SCANLINE_VBLANK_START_PAL) \
MCFG_PALETTE_LENGTH(8+64)
-#define MCFG_CDP1869_SCREEN_NTSC_ADD(_tag, _clock) \
+#define MCFG_CDP1869_SCREEN_NTSC_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
+ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, CDP1869_SCREEN_WIDTH, CDP1869_HBLANK_END, CDP1869_HBLANK_START, CDP1869_TOTAL_SCANLINES_NTSC, CDP1869_SCANLINE_VBLANK_END_NTSC, CDP1869_SCANLINE_VBLANK_START_NTSC) \
MCFG_PALETTE_LENGTH(8+64)
@@ -231,7 +231,7 @@ public:
DECLARE_READ_LINE_MEMBER( predisplay_r );
DECLARE_READ_LINE_MEMBER( pal_ntsc_r );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -260,8 +260,8 @@ protected:
inline int get_pen(int ccb0, int ccb1, int pcb);
void initialize_palette();
- void draw_line(bitmap_t &bitmap, const rectangle &rect, int x, int y, UINT8 data, int color);
- void draw_char(bitmap_t &bitmap, const rectangle &rect, int x, int y, UINT16 pma);
+ void draw_line(bitmap_ind16 &bitmap, const rectangle &rect, int x, int y, UINT8 data, int color);
+ void draw_char(bitmap_ind16 &bitmap, const rectangle &rect, int x, int y, UINT16 pma);
private:
devcb_resolved_read_line m_in_pal_ntsc_func;
diff --git a/src/emu/sound/mos6560.c b/src/emu/sound/mos6560.c
index 8e8e0ef5625..cd47b58b8f3 100644
--- a/src/emu/sound/mos6560.c
+++ b/src/emu/sound/mos6560.c
@@ -72,7 +72,7 @@ struct _mos6560_state
UINT8 reg[16];
- bitmap_t *bitmap;
+ bitmap_ind16 *bitmap;
int rasterline, lastline;
double lightpenreadtime;
@@ -509,7 +509,7 @@ void mos6560_raster_interrupt_gen( device_t *device )
main screen bitmap
-------------------------------------------------*/
-UINT32 mos6560_video_update( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 mos6560_video_update( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mos6560_state *mos6560 = get_safe_token(device);
@@ -808,7 +808,7 @@ static DEVICE_START( mos6560 )
mos6560->type = intf->type;
- mos6560->bitmap = auto_bitmap_alloc(device->machine(), width, height, BITMAP_FORMAT_INDEXED16);
+ mos6560->bitmap = auto_bitmap_ind16_alloc(device->machine(), width, height);
assert(intf->dma_read != NULL);
assert(intf->dma_read_color != NULL);
diff --git a/src/emu/sound/mos6560.h b/src/emu/sound/mos6560.h
index a80ef62c215..f320a4efe0a 100644
--- a/src/emu/sound/mos6560.h
+++ b/src/emu/sound/mos6560.h
@@ -107,7 +107,7 @@ WRITE8_DEVICE_HANDLER( mos6560_port_w );
READ8_DEVICE_HANDLER( mos6560_port_r );
void mos6560_raster_interrupt_gen( device_t *device );
-UINT32 mos6560_video_update( device_t *device, bitmap_t &bitmap, const rectangle &cliprect );
+UINT32 mos6560_video_update( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect );
#endif /* __MOS6560_H__ */
diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c
index aecadab3c90..8416ca8da14 100644
--- a/src/emu/tilemap.c
+++ b/src/emu/tilemap.c
@@ -53,7 +53,6 @@ typedef void (*blitopaque_func)(void *dest, const UINT16 *source, int count, con
typedef struct _blit_parameters blit_parameters;
struct _blit_parameters
{
- bitmap_t * bitmap;
rectangle cliprect;
blitmask_func draw_masked;
blitopaque_func draw_opaque;
@@ -117,10 +116,10 @@ public:
INT32 dy_flipped; /* global vertical scroll offset when flipped */
/* pixel data */
- bitmap_t pixmap; /* cached pixel data */
+ bitmap_ind16 pixmap; /* cached pixel data */
/* transparency mapping */
- bitmap_t flagsmap; /* per-pixel flags */
+ bitmap_ind8 flagsmap; /* per-pixel flags */
UINT8 * tileflags; /* per-tile flags */
UINT8 * pen_to_flags; /* mapping of pens to flags */
@@ -159,24 +158,22 @@ static UINT8 tile_draw(tilemap_t *tmap, const UINT8 *pendata, UINT32 x0, UINT32
static UINT8 tile_apply_bitmask(tilemap_t *tmap, const UINT8 *maskdata, UINT32 x0, UINT32 y0, UINT8 category, UINT8 flags);
/* drawing helpers */
-static void configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_t &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask);
-static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit, int xpos, int ypos);
-static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
+static void configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_format dest_format, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask);
+template<class _BitmapClass>
+static void tilemap_draw_instance(_BitmapClass &dest, tilemap_t *tmap, const blit_parameters *blit, int xpos, int ypos);
+template<class _BitmapClass>
+static void tilemap_draw_roz_core(_BitmapClass &dest, tilemap_t *tmap, const blit_parameters *blit,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound);
/* scanline rasterizers for drawing to the pixmap */
-static void scanline_draw_opaque_null(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_null(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_opaque_ind16(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_ind16(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_opaque_rgb16(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_rgb16(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_opaque_rgb16_alpha(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_rgb16_alpha(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_opaque_rgb32(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_rgb32(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_opaque_rgb32_alpha(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
-static void scanline_draw_masked_rgb32_alpha(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
+inline void scanline_draw_opaque_null(int count, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_masked_null(const UINT8 *maskptr, int mask, int value, int count, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_opaque_ind16(UINT16 *dest, const UINT16 *source, int count, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_masked_ind16(UINT16 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_opaque_rgb32(UINT32 *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_masked_rgb32(UINT32 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode);
+inline void scanline_draw_opaque_rgb32_alpha(UINT32 *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
+inline void scanline_draw_masked_rgb32_alpha(UINT32 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha);
@@ -304,7 +301,7 @@ void tilemap_init(running_machine &machine)
if (screen_width != 0 && screen_height != 0)
{
- machine.priority_bitmap.allocate(screen_width, screen_height, BITMAP_FORMAT_INDEXED8);
+ machine.priority_bitmap.allocate(screen_width, screen_height);
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(tilemap_exit), &machine));
}
}
@@ -389,11 +386,11 @@ static tilemap_t *tilemap_create_common(running_machine &machine, void *get_info
tmap->colscroll = auto_alloc_array_clear(machine, INT32, tmap->width);
/* allocate the pixel data cache */
- tmap->pixmap.allocate(tmap->width, tmap->height, BITMAP_FORMAT_INDEXED16);
+ tmap->pixmap.allocate(tmap->width, tmap->height);
/* allocate transparency mapping data */
tmap->tileflags = auto_alloc_array(machine, UINT8, tmap->max_logical_index);
- tmap->flagsmap.allocate(tmap->width, tmap->height, BITMAP_FORMAT_INDEXED8);
+ tmap->flagsmap.allocate(tmap->width, tmap->height);
tmap->pen_to_flags = auto_alloc_array_clear(machine, UINT8, MAX_PEN_TO_FLAGS * TILEMAP_NUM_GROUPS);
for (group = 0; group < TILEMAP_NUM_GROUPS; group++)
tilemap_map_pens_to_layer(tmap, group, 0, 0, TILEMAP_PIXEL_LAYER0);
@@ -776,7 +773,7 @@ int tilemap_get_scrolly(tilemap_t *tmap, int which)
(updated) internal pixmap for a tilemap
-------------------------------------------------*/
-bitmap_t &tilemap_get_pixmap(tilemap_t *tmap)
+bitmap_ind16 &tilemap_get_pixmap(tilemap_t *tmap)
{
/* ensure all the tiles are up-to-date and then return the pixmap */
pixmap_update(tmap);
@@ -789,7 +786,7 @@ bitmap_t &tilemap_get_pixmap(tilemap_t *tmap)
(updated) internal flagsmap for a tilemap
-------------------------------------------------*/
-bitmap_t &tilemap_get_flagsmap(tilemap_t *tmap)
+bitmap_ind8 &tilemap_get_flagsmap(tilemap_t *tmap)
{
/* ensure all the tiles are up-to-date and then return the flagsmap */
pixmap_update(tmap);
@@ -821,7 +818,8 @@ UINT8 *tilemap_get_tile_flags(tilemap_t *tmap)
priority/priority_mask to the priority bitmap
-------------------------------------------------*/
-void tilemap_draw_primask(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+template<class _BitmapClass>
+void tilemap_draw_primask_common(_BitmapClass &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask)
{
UINT32 width, height;
blit_parameters blit;
@@ -833,7 +831,7 @@ void tilemap_draw_primask(bitmap_t &dest, const rectangle &cliprect, tilemap_t *
g_profiler.start(PROFILER_TILEMAP_DRAW);
/* configure the blit parameters based on the input parameters */
- configure_blit_parameters(&blit, tmap, dest, cliprect, flags, priority, priority_mask);
+ configure_blit_parameters(&blit, tmap, dest.format(), cliprect, flags, priority, priority_mask);
/* if the whole map is dirty, mark it as such */
if (tmap->all_tiles_dirty || gfx_elements_changed(tmap))
@@ -855,7 +853,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
/* iterate to handle wraparound */
for (ypos = scrolly - tmap->height; ypos <= blit.cliprect.max_y; ypos += tmap->height)
for (xpos = scrollx - tmap->width; xpos <= blit.cliprect.max_x; xpos += tmap->width)
- tilemap_draw_instance(tmap, &blit, xpos, ypos);
+ tilemap_draw_instance(dest, tmap, &blit, xpos, ypos);
}
/* scrolling rows + vertical scroll */
@@ -893,7 +891,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
/* iterate over X to handle wraparound */
for (xpos = scrollx - tmap->width; xpos <= original_cliprect.max_x; xpos += tmap->width)
- tilemap_draw_instance(tmap, &blit, xpos, ypos);
+ tilemap_draw_instance(dest, tmap, &blit, xpos, ypos);
}
}
}
@@ -930,13 +928,18 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
/* iterate over Y to handle wraparound */
for (ypos = scrolly - tmap->height; ypos <= original_cliprect.max_y; ypos += tmap->height)
- tilemap_draw_instance(tmap, &blit, xpos, ypos);
+ tilemap_draw_instance(dest, tmap, &blit, xpos, ypos);
}
}
}
g_profiler.stop();
}
+void tilemap_draw_primask(bitmap_ind16 &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+{ tilemap_draw_primask_common(dest, cliprect, tmap, flags, priority, priority_mask); }
+
+void tilemap_draw_primask(bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+{ tilemap_draw_primask_common(dest, cliprect, tmap, flags, priority, priority_mask); }
/*-------------------------------------------------
tilemap_draw_primask - draw a tilemap to the
@@ -945,7 +948,8 @@ g_profiler.stop();
priority_mask to the priority bitmap
-------------------------------------------------*/
-void tilemap_draw_roz_primask(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap,
+template<class _BitmapClass>
+void tilemap_draw_roz_common(_BitmapClass &dest, const rectangle &cliprect, tilemap_t *tmap,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask)
{
@@ -971,16 +975,25 @@ void tilemap_draw_roz_primask(bitmap_t &dest, const rectangle &cliprect, tilemap
g_profiler.start(PROFILER_TILEMAP_DRAW_ROZ);
/* configure the blit parameters */
- configure_blit_parameters(&blit, tmap, dest, cliprect, flags, priority, priority_mask);
+ configure_blit_parameters(&blit, tmap, dest.format(), cliprect, flags, priority, priority_mask);
/* get the full pixmap for the tilemap */
tilemap_get_pixmap(tmap);
/* then do the roz copy */
- tilemap_draw_roz_core(tmap, &blit, startx, starty, incxx, incxy, incyx, incyy, wraparound);
+ tilemap_draw_roz_core(dest, tmap, &blit, startx, starty, incxx, incxy, incyx, incyy, wraparound);
g_profiler.stop();
}
+void tilemap_draw_roz_primask(bitmap_ind16 &dest, const rectangle &cliprect, tilemap_t *tmap,
+ UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
+ int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+{ tilemap_draw_roz_common(dest, cliprect, tmap, startx, starty, incxx, incxy, incyx, incyy, wraparound, flags, priority, priority_mask); }
+
+void tilemap_draw_roz_primask(bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap,
+ UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
+ int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+{ tilemap_draw_roz_common(dest, cliprect, tmap, startx, starty, incxx, incxy, incyx, incyy, wraparound, flags, priority, priority_mask); }
/***************************************************************************
@@ -1025,14 +1038,14 @@ void tilemap_size_by_index(running_machine &machine, int number, UINT32 *width,
priority)
-------------------------------------------------*/
-void tilemap_draw_by_index(running_machine &machine, bitmap_t &dest, int number, UINT32 scrollx, UINT32 scrolly)
+void tilemap_draw_by_index(running_machine &machine, bitmap_rgb32 &dest, int number, UINT32 scrollx, UINT32 scrolly)
{
tilemap_t *tmap = indexed_tilemap(machine, number);
blit_parameters blit;
int xpos,ypos;
/* set up for the blit, using hard-coded parameters (no priority, etc) */
- configure_blit_parameters(&blit, tmap, dest, dest.cliprect(), TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0, 0xff);
+ configure_blit_parameters(&blit, tmap, dest.format(), dest.cliprect(), TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0, 0xff);
/* compute the effective scroll positions */
scrollx = tmap->width - scrollx % tmap->width;
@@ -1049,7 +1062,7 @@ void tilemap_draw_by_index(running_machine &machine, bitmap_t &dest, int number,
/* iterate to handle wraparound */
for (ypos = scrolly - tmap->height; ypos <= blit.cliprect.max_y; ypos += tmap->height)
for (xpos = scrollx - tmap->width; xpos <= blit.cliprect.max_x; xpos += tmap->width)
- tilemap_draw_instance(tmap, &blit, xpos, ypos);
+ tilemap_draw_instance(dest, tmap, &blit, xpos, ypos);
}
@@ -1359,8 +1372,8 @@ g_profiler.stop();
static UINT8 tile_draw(tilemap_t *tmap, const UINT8 *pendata, UINT32 x0, UINT32 y0, UINT32 palette_base, UINT8 category, UINT8 group, UINT8 flags, UINT8 pen_mask)
{
const UINT8 *penmap = tmap->pen_to_flags + group * MAX_PEN_TO_FLAGS;
- bitmap_t &flagsmap = tmap->flagsmap;
- bitmap_t &pixmap = tmap->pixmap;
+ bitmap_ind8 &flagsmap = tmap->flagsmap;
+ bitmap_ind16 &pixmap = tmap->pixmap;
int height = tmap->tileheight;
int width = tmap->tilewidth;
UINT8 andmask = ~0, ormask = 0;
@@ -1454,7 +1467,7 @@ static UINT8 tile_draw(tilemap_t *tmap, const UINT8 *pendata, UINT32 x0, UINT32
static UINT8 tile_apply_bitmask(tilemap_t *tmap, const UINT8 *maskdata, UINT32 x0, UINT32 y0, UINT8 category, UINT8 flags)
{
- bitmap_t &flagsmap = tmap->flagsmap;
+ bitmap_ind8 &flagsmap = tmap->flagsmap;
int height = tmap->tileheight;
int width = tmap->tilewidth;
UINT8 andmask = ~0, ormask = 0;
@@ -1514,52 +1527,18 @@ static UINT8 tile_apply_bitmask(tilemap_t *tmap, const UINT8 *maskdata, UINT32 x
and indexed drawing code
-------------------------------------------------*/
-static void configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_t &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask)
+static void configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_format dest_format, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask)
{
/* start with nothing */
memset(blit, 0, sizeof(*blit));
/* set the target bitmap */
- blit->bitmap = &dest;
blit->cliprect = cliprect;
/* set the priority code and alpha */
blit->tilemap_priority_code = priority | (priority_mask << 8) | (tmap->palette_offset << 16);
blit->alpha = (flags & TILEMAP_DRAW_ALPHA_FLAG) ? (flags >> 24) : 0xff;
- /* if no destination, just render priority */
- if (!dest.valid())
- {
- blit->draw_masked = scanline_draw_masked_null;
- blit->draw_opaque = scanline_draw_opaque_null;
- }
-
- /* otherwise get the appropriate callbacks for the format and flags */
- else
- {
- switch (dest.format())
- {
- case BITMAP_FORMAT_RGB32:
- blit->draw_masked = (blit->alpha < 0xff) ? scanline_draw_masked_rgb32_alpha : scanline_draw_masked_rgb32;
- blit->draw_opaque = (blit->alpha < 0xff) ? scanline_draw_opaque_rgb32_alpha : scanline_draw_opaque_rgb32;
- break;
-
- case BITMAP_FORMAT_RGB15:
- blit->draw_masked = (blit->alpha < 0xff) ? scanline_draw_masked_rgb16_alpha : scanline_draw_masked_rgb16;
- blit->draw_opaque = (blit->alpha < 0xff) ? scanline_draw_opaque_rgb16_alpha : scanline_draw_opaque_rgb16;
- break;
-
- case BITMAP_FORMAT_INDEXED16:
- blit->draw_masked = scanline_draw_masked_ind16;
- blit->draw_opaque = scanline_draw_opaque_ind16;
- break;
-
- default:
- fatalerror("tilemap_draw_primask: Invalid bitmap format");
- break;
- }
- }
-
/* tile priority; unless otherwise specified, draw anything in layer 0 */
blit->mask = TILEMAP_PIXEL_CATEGORY_MASK;
blit->value = flags & TILEMAP_PIXEL_CATEGORY_MASK;
@@ -1594,16 +1573,15 @@ static void configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bi
pixmap at the given xpos,ypos
-------------------------------------------------*/
-static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit, int xpos, int ypos)
+template<class _BitmapClass>
+static void tilemap_draw_instance(_BitmapClass &dest, tilemap_t *tmap, const blit_parameters *blit, int xpos, int ypos)
{
- bitmap_t &priority_bitmap = tmap->machine().priority_bitmap;
- bitmap_t &dest = *blit->bitmap;
+ bitmap_ind8 &priority_bitmap = tmap->machine().priority_bitmap;
const UINT16 *source_baseaddr;
const UINT8 *mask_baseaddr;
- void *dest_baseaddr = NULL;
+ typename _BitmapClass::pixel_t *dest_baseaddr = NULL;
UINT8 *priority_baseaddr;
- int dest_line_pitch_bytes = 0;
- int dest_bytespp = 0;
+ int dest_rowpixels = 0;
int mincol, maxcol;
int x1, y1, x2, y2;
int y, nexty;
@@ -1623,9 +1601,8 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
priority_baseaddr = &priority_bitmap.pix8(y1, xpos);
if (dest.valid())
{
- dest_bytespp = dest.bpp() / 8;
- dest_line_pitch_bytes = dest.rowbytes();
- dest_baseaddr = dest.raw_pixptr(y1, xpos);
+ dest_rowpixels = dest.rowpixels();
+ dest_baseaddr = &dest.pix(y1, xpos);
}
/* convert screen coordinates to source tilemap coordinates */
@@ -1696,7 +1673,7 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
if (prev_trans != WHOLLY_TRANSPARENT)
{
const UINT16 *source0 = source_baseaddr + x_start;
- void *dest0 = (UINT8 *)dest_baseaddr + x_start * dest_bytespp;
+ typename _BitmapClass::pixel_t *dest0 = dest_baseaddr + x_start;
UINT8 *pmap0 = priority_baseaddr + x_start;
int cury;
@@ -1705,9 +1682,16 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
{
for (cury = y; cury < nexty; cury++)
{
- (*blit->draw_opaque)(dest0, source0, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code, blit->alpha);
-
- dest0 = (UINT8 *)dest0 + dest_line_pitch_bytes;
+ if (dest0 == NULL)
+ scanline_draw_opaque_null(x_end - x_start, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 2)
+ scanline_draw_opaque_ind16(reinterpret_cast<UINT16 *>(dest0), source0, x_end - x_start, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 4 && blit->alpha >= 0xff)
+ scanline_draw_opaque_rgb32(reinterpret_cast<UINT32 *>(dest0), source0, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 4)
+ scanline_draw_opaque_rgb32_alpha(reinterpret_cast<UINT32 *>(dest0), source0, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code, blit->alpha);
+
+ dest0 += dest_rowpixels;
source0 += tmap->pixmap.rowpixels();
pmap0 += priority_bitmap.rowpixels();
}
@@ -1719,9 +1703,16 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
const UINT8 *mask0 = mask_baseaddr + x_start;
for (cury = y; cury < nexty; cury++)
{
- (*blit->draw_masked)(dest0, source0, mask0, blit->mask, blit->value, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code, blit->alpha);
-
- dest0 = (UINT8 *)dest0 + dest_line_pitch_bytes;
+ if (dest0 == NULL)
+ scanline_draw_masked_null(mask0, blit->mask, blit->value, x_end - x_start, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 2)
+ scanline_draw_masked_ind16(reinterpret_cast<UINT16 *>(dest0), source0, mask0, blit->mask, blit->value, x_end - x_start, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 4 && blit->alpha >= 0xff)
+ scanline_draw_masked_rgb32(reinterpret_cast<UINT32 *>(dest0), source0, mask0, blit->mask, blit->value, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code);
+ else if (sizeof(*dest0) == 4)
+ scanline_draw_masked_rgb32_alpha(reinterpret_cast<UINT32 *>(dest0), source0, mask0, blit->mask, blit->value, x_end - x_start, tmap->machine().pens, pmap0, blit->tilemap_priority_code, blit->alpha);
+
+ dest0 += dest_rowpixels;
source0 += tmap->pixmap.rowpixels();
mask0 += tmap->flagsmap.rowpixels();
pmap0 += priority_bitmap.rowpixels();
@@ -1742,7 +1733,7 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
priority_baseaddr += priority_bitmap.rowpixels() * (nexty - y);
source_baseaddr += tmap->pixmap.rowpixels() * (nexty - y);
mask_baseaddr += tmap->flagsmap.rowpixels() * (nexty - y);
- dest_baseaddr = (UINT8 *)dest_baseaddr + dest_line_pitch_bytes * (nexty - y);
+ dest_baseaddr += dest_rowpixels * (nexty - y);
/* increment the Y counter */
y = nexty;
@@ -1760,26 +1751,22 @@ static void tilemap_draw_instance(tilemap_t *tmap, const blit_parameters *blit,
#define ROZ_PLOT_PIXEL(INPUT_VAL) \
do { \
- if (blit->draw_masked == scanline_draw_masked_ind16) \
- *(UINT16 *)dest = (INPUT_VAL) + (priority >> 16); \
- else if (blit->draw_masked == scanline_draw_masked_rgb32) \
- *(UINT32 *)dest = clut[INPUT_VAL]; \
- else if (blit->draw_masked == scanline_draw_masked_rgb16) \
- *(UINT16 *)dest = clut[INPUT_VAL]; \
- else if (blit->draw_masked == scanline_draw_masked_rgb32_alpha) \
- *(UINT32 *)dest = alpha_blend_r32(*(UINT32 *)dest, clut[INPUT_VAL], alpha); \
- else if (blit->draw_masked == scanline_draw_masked_rgb16_alpha) \
- *(UINT16 *)dest = alpha_blend_r16(*(UINT16 *)dest, clut[INPUT_VAL], alpha); \
+ if (sizeof(*dest) == 2) \
+ *dest = (INPUT_VAL) + (priority >> 16); \
+ else if (sizeof(*dest) == 4 && alpha >= 0xff) \
+ *dest = clut[INPUT_VAL]; \
+ else if (sizeof(*dest) == 4) \
+ *dest = alpha_blend_r32(*dest, clut[INPUT_VAL], alpha); \
} while (0)
-static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
+template<class _BitmapClass>
+static void tilemap_draw_roz_core(_BitmapClass &destbitmap, tilemap_t *tmap, const blit_parameters *blit,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound)
{
const pen_t *clut = &tmap->machine().pens[blit->tilemap_priority_code >> 16];
- bitmap_t &priority_bitmap = tmap->machine().priority_bitmap;
- bitmap_t &destbitmap = *blit->bitmap;
- bitmap_t &srcbitmap = tmap->pixmap;
- bitmap_t &flagsmap = tmap->flagsmap;
+ bitmap_ind8 &priority_bitmap = tmap->machine().priority_bitmap;
+ bitmap_ind16 &srcbitmap = tmap->pixmap;
+ bitmap_ind8 &flagsmap = tmap->flagsmap;
const int xmask = srcbitmap.width()-1;
const int ymask = srcbitmap.height()-1;
const int widthshifted = srcbitmap.width() << 16;
@@ -1795,11 +1782,10 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
int sy;
int ex;
int ey;
- void *dest;
+ typename _BitmapClass::pixel_t *dest;
UINT8 *pri;
const UINT16 *src;
const UINT8 *maskptr;
- int destadvance = destbitmap.bpp() / 8;
/* pre-advance based on the cliprect */
startx += blit->cliprect.min_x * incxx + blit->cliprect.min_y * incyx;
@@ -1840,7 +1826,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
pri = &priority_bitmap.pix8(sy, sx);
src = &srcbitmap.pix16(cy);
maskptr = &flagsmap.pix8(cy);
- dest = destbitmap.raw_pixptr(sy, sx);
+ dest = &destbitmap.pix(sy, sx);
/* loop over columns */
while (x <= ex && cx < widthshifted)
@@ -1855,7 +1841,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
/* advance in X */
cx += incxx;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
}
@@ -1878,7 +1864,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
cy = starty;
/* get dest and priority pointers */
- dest = destbitmap.raw_pixptr(sy, sx);
+ dest = &destbitmap.pix(sy, sx);
pri = &priority_bitmap.pix8(sy, sx);
/* loop over columns */
@@ -1895,7 +1881,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
cx += incxx;
cy += incxy;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
@@ -1918,7 +1904,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
cy = starty;
/* get dest and priority pointers */
- dest = destbitmap.raw_pixptr(sy, sx);
+ dest = &destbitmap.pix(sy, sx);
pri = &priority_bitmap.pix8(sy, sx);
/* loop over columns */
@@ -1936,7 +1922,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
cx += incxx;
cy += incxy;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
@@ -1949,7 +1935,6 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
}
-
/***************************************************************************
SCANLINE RASTERIZERS
***************************************************************************/
@@ -1959,7 +1944,7 @@ static void tilemap_draw_roz_core(tilemap_t *tmap, const blit_parameters *blit,
bitmap, setting priority only
-------------------------------------------------*/
-static void scanline_draw_opaque_null(void *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_opaque_null(int count, UINT8 *pri, UINT32 pcode)
{
int i;
@@ -1977,7 +1962,7 @@ static void scanline_draw_opaque_null(void *dest, const UINT16 *source, int coun
bitmap using a mask, setting priority only
-------------------------------------------------*/
-static void scanline_draw_masked_null(void *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_masked_null(const UINT8 *maskptr, int mask, int value, int count, UINT8 *pri, UINT32 pcode)
{
int i;
@@ -1997,9 +1982,8 @@ static void scanline_draw_masked_null(void *dest, const UINT16 *source, const UI
indexed bitmap
-------------------------------------------------*/
-static void scanline_draw_opaque_ind16(void *_dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_opaque_ind16(UINT16 *dest, const UINT16 *source, int count, UINT8 *pri, UINT32 pcode)
{
- UINT16 *dest = (UINT16 *)_dest;
int pal = pcode >> 16;
int i;
@@ -2040,9 +2024,8 @@ static void scanline_draw_opaque_ind16(void *_dest, const UINT16 *source, int co
indexed bitmap using a mask
-------------------------------------------------*/
-static void scanline_draw_masked_ind16(void *_dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_masked_ind16(UINT16 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, UINT8 *pri, UINT32 pcode)
{
- UINT16 *dest = (UINT16 *)_dest;
int pal = pcode >> 16;
int i;
@@ -2069,139 +2052,13 @@ static void scanline_draw_masked_ind16(void *_dest, const UINT16 *source, const
/*-------------------------------------------------
- scanline_draw_opaque_rgb16 - draw to a 16bpp
- RGB bitmap
--------------------------------------------------*/
-
-static void scanline_draw_opaque_rgb16(void *_dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
-{
- const pen_t *clut = &pens[pcode >> 16];
- UINT16 *dest = (UINT16 *)_dest;
- int i;
-
- /* priority case */
- if ((pcode & 0xffff) != 0xff00)
- {
- for (i = 0; i < count; i++)
- {
- dest[i] = clut[source[i]];
- pri[i] = (pri[i] & (pcode >> 8)) | pcode;
- }
- }
-
- /* no priority case */
- else
- {
- for (i = 0; i < count; i++)
- dest[i] = clut[source[i]];
- }
-}
-
-
-/*-------------------------------------------------
- scanline_draw_masked_rgb16 - draw to a 16bpp
- RGB bitmap using a mask
--------------------------------------------------*/
-
-static void scanline_draw_masked_rgb16(void *_dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
-{
- const pen_t *clut = &pens[pcode >> 16];
- UINT16 *dest = (UINT16 *)_dest;
- int i;
-
- /* priority case */
- if ((pcode & 0xffff) != 0xff00)
- {
- for (i = 0; i < count; i++)
- if ((maskptr[i] & mask) == value)
- {
- dest[i] = clut[source[i]];
- pri[i] = (pri[i] & (pcode >> 8)) | pcode;
- }
- }
-
- /* no priority case */
- else
- {
- for (i = 0; i < count; i++)
- if ((maskptr[i] & mask) == value)
- dest[i] = clut[source[i]];
- }
-}
-
-
-/*-------------------------------------------------
- scanline_draw_opaque_rgb16_alpha - draw to a
- 16bpp RGB bitmap with alpha blending
--------------------------------------------------*/
-
-static void scanline_draw_opaque_rgb16_alpha(void *_dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
-{
- const pen_t *clut = &pens[pcode >> 16];
- UINT16 *dest = (UINT16 *)_dest;
- int i;
-
- /* priority case */
- if ((pcode & 0xffff) != 0xff00)
- {
- for (i = 0; i < count; i++)
- {
- dest[i] = alpha_blend_r16(dest[i], clut[source[i]], alpha);
- pri[i] = (pri[i] & (pcode >> 8)) | pcode;
- }
- }
-
- /* no priority case */
- else
- {
- for (i = 0; i < count; i++)
- dest[i] = alpha_blend_r16(dest[i], clut[source[i]], alpha);
- }
-}
-
-
-/*-------------------------------------------------
- scanline_draw_masked_rgb16_alpha - draw to a
- 16bpp RGB bitmap using a mask and alpha
- blending
--------------------------------------------------*/
-
-static void scanline_draw_masked_rgb16_alpha(void *_dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
-{
- const pen_t *clut = &pens[pcode >> 16];
- UINT16 *dest = (UINT16 *)_dest;
- int i;
-
- /* priority case */
- if ((pcode & 0xffff) != 0xff00)
- {
- for (i = 0; i < count; i++)
- if ((maskptr[i] & mask) == value)
- {
- dest[i] = alpha_blend_r16(dest[i], clut[source[i]], alpha);
- pri[i] = (pri[i] & (pcode >> 8)) | pcode;
- }
- }
-
- /* no priority case */
- else
- {
- for (i = 0; i < count; i++)
- if ((maskptr[i] & mask) == value)
- dest[i] = alpha_blend_r16(dest[i], clut[source[i]], alpha);
- }
-}
-
-
-/*-------------------------------------------------
scanline_draw_opaque_rgb32 - draw to a 32bpp
RGB bitmap
-------------------------------------------------*/
-static void scanline_draw_opaque_rgb32(void *_dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_opaque_rgb32(UINT32 *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode)
{
const pen_t *clut = &pens[pcode >> 16];
- UINT32 *dest = (UINT32 *)_dest;
int i;
/* priority case */
@@ -2228,10 +2085,9 @@ static void scanline_draw_opaque_rgb32(void *_dest, const UINT16 *source, int co
RGB bitmap using a mask
-------------------------------------------------*/
-static void scanline_draw_masked_rgb32(void *_dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_masked_rgb32(UINT32 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode)
{
const pen_t *clut = &pens[pcode >> 16];
- UINT32 *dest = (UINT32 *)_dest;
int i;
/* priority case */
@@ -2260,10 +2116,9 @@ static void scanline_draw_masked_rgb32(void *_dest, const UINT16 *source, const
32bpp RGB bitmap with alpha blending
-------------------------------------------------*/
-static void scanline_draw_opaque_rgb32_alpha(void *_dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_opaque_rgb32_alpha(UINT32 *dest, const UINT16 *source, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
{
const pen_t *clut = &pens[pcode >> 16];
- UINT32 *dest = (UINT32 *)_dest;
int i;
/* priority case */
@@ -2291,10 +2146,9 @@ static void scanline_draw_opaque_rgb32_alpha(void *_dest, const UINT16 *source,
blending
-------------------------------------------------*/
-static void scanline_draw_masked_rgb32_alpha(void *_dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
+inline void scanline_draw_masked_rgb32_alpha(UINT32 *dest, const UINT16 *source, const UINT8 *maskptr, int mask, int value, int count, const pen_t *pens, UINT8 *pri, UINT32 pcode, UINT8 alpha)
{
const pen_t *clut = &pens[pcode >> 16];
- UINT32 *dest = (UINT32 *)_dest;
int i;
/* priority case */
diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h
index 1d06ffc9e99..6bf01238ab2 100644
--- a/src/emu/tilemap.h
+++ b/src/emu/tilemap.h
@@ -148,7 +148,7 @@
6. In your VIDEO_UPDATE callback, render the tiles by calling
tilemap_draw() or tilemap_draw_roz(). If you need to do custom
rendering and want access to the raw pixels, call
- tilemap_get_pixmap() to get a pointer to the updated bitmap_t
+ tilemap_get_pixmap() to get a pointer to the updated bitmap_ind16
containing the tilemap graphics.
****************************************************************************
@@ -505,10 +505,10 @@ int tilemap_get_scrolly(tilemap_t *tmap, int col);
/* ----- internal map access ----- */
/* return a pointer to the (updated) internal pixmap for a tilemap */
-bitmap_t &tilemap_get_pixmap(tilemap_t *tmap);
+bitmap_ind16 &tilemap_get_pixmap(tilemap_t *tmap);
/* return a pointer to the (updated) internal flagsmap for a tilemap */
-bitmap_t &tilemap_get_flagsmap(tilemap_t *tmap);
+bitmap_ind8 &tilemap_get_flagsmap(tilemap_t *tmap);
/* return a pointer to the (updated) internal per-tile flags for a tilemap */
UINT8 *tilemap_get_tile_flags(tilemap_t *tmap);
@@ -518,11 +518,15 @@ UINT8 *tilemap_get_tile_flags(tilemap_t *tmap);
/* ----- tilemap rendering ----- */
/* draw a tilemap to the destination with clipping; pixels apply priority/priority_mask to the priority bitmap */
-void tilemap_draw_primask(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask);
+void tilemap_draw_primask(bitmap_ind16 &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask);
+void tilemap_draw_primask(bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority, UINT8 priority_mask);
/* draw a tilemap to the destination with clipping and arbitrary rotate/zoom; */
/* pixels apply priority/priority_mask to the priority bitmap */
-void tilemap_draw_roz_primask(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap,
+void tilemap_draw_roz_primask(bitmap_ind16 &dest, const rectangle &cliprect, tilemap_t *tmap,
+ UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
+ int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask);
+void tilemap_draw_roz_primask(bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask);
@@ -537,7 +541,7 @@ int tilemap_count(running_machine &machine);
void tilemap_size_by_index(running_machine &machine, int number, UINT32 *width, UINT32 *height);
/* render an indexed tilemap with fixed characteristics (no priority) */
-void tilemap_draw_by_index(running_machine &machine, bitmap_t &dest, int number, UINT32 scrollx, UINT32 scrolly);
+void tilemap_draw_by_index(running_machine &machine, bitmap_rgb32 &dest, int number, UINT32 scrollx, UINT32 scrolly);
@@ -566,7 +570,7 @@ TILEMAP_MAPPER( tilemap_scan_cols_flip_xy );
structure
-------------------------------------------------*/
-INLINE void tileinfo_set(running_machine &machine, tile_data *tileinfo, int gfxnum, int rawcode, int rawcolor, int flags)
+inline void tileinfo_set(running_machine &machine, tile_data *tileinfo, int gfxnum, int rawcode, int rawcolor, int flags)
{
const gfx_element *gfx = machine.gfx[gfxnum];
int code = rawcode % gfx->total_elements;
@@ -584,7 +588,7 @@ INLINE void tileinfo_set(running_machine &machine, tile_data *tileinfo, int gfxn
to a layer
-------------------------------------------------*/
-INLINE void tilemap_map_pen_to_layer(tilemap_t *tmap, int group, pen_t pen, UINT8 layermask)
+inline void tilemap_map_pen_to_layer(tilemap_t *tmap, int group, pen_t pen, UINT8 layermask)
{
tilemap_map_pens_to_layer(tmap, group, pen, ~0, layermask);
}
@@ -595,7 +599,8 @@ INLINE void tilemap_map_pen_to_layer(tilemap_t *tmap, int group, pen_t pen, UINT
tilemap_draw_primask
-------------------------------------------------*/
-INLINE void tilemap_draw(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority)
+template<class _BitmapClass>
+inline void tilemap_draw(_BitmapClass &dest, const rectangle &cliprect, tilemap_t *tmap, UINT32 flags, UINT8 priority)
{
tilemap_draw_primask(dest, cliprect, tmap, flags, priority, 0xff);
}
@@ -606,7 +611,8 @@ INLINE void tilemap_draw(bitmap_t &dest, const rectangle &cliprect, tilemap_t *t
tilemap_draw_roz_primask
-------------------------------------------------*/
-INLINE void tilemap_draw_roz(bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap,
+template<class _BitmapClass>
+inline void tilemap_draw_roz(_BitmapClass &dest, const rectangle &cliprect, tilemap_t *tmap,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
int wraparound, UINT32 flags, UINT8 priority)
{
diff --git a/src/emu/ui.c b/src/emu/ui.c
index fcd24a90c6e..59a6158ae39 100644
--- a/src/emu/ui.c
+++ b/src/emu/ui.c
@@ -163,7 +163,6 @@ static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *st
static INT32 slider_flicker(running_machine &machine, void *arg, astring *string, INT32 newval);
static INT32 slider_beam(running_machine &machine, void *arg, astring *string, INT32 newval);
static char *slider_get_screen_desc(screen_device &screen);
-static char *slider_get_laserdisc_desc(device_t *screen);
#ifdef MAME_DEBUG
static INT32 slider_crossscale(running_machine &machine, void *arg, astring *string, INT32 newval);
static INT32 slider_crossoffset(running_machine &machine, void *arg, astring *string, INT32 newval);
@@ -1739,32 +1738,33 @@ static slider_state *slider_init(running_machine &machine)
}
for (device = machine.devicelist().first(); device != NULL; device = device->next())
- if (device_is_laserdisc(device))
+ {
+ laserdisc_device *laserdisc = dynamic_cast<laserdisc_device *>(device);
+ if (laserdisc != NULL && laserdisc->overlay_configured())
{
- const laserdisc_config *config = (const laserdisc_config *)downcast<const legacy_device_base *>(device)->inline_config();
- if (config->overupdate != NULL)
- {
- int defxscale = floor(config->overscalex * 1000.0f + 0.5f);
- int defyscale = floor(config->overscaley * 1000.0f + 0.5f);
- int defxoffset = floor(config->overposx * 1000.0f + 0.5f);
- int defyoffset = floor(config->overposy * 1000.0f + 0.5f);
- void *param = (void *)device;
-
- /* add scale and offset controls per-overlay */
- string.printf("%s Horiz Stretch", slider_get_laserdisc_desc(device));
- *tailptr = slider_alloc(machine, string, 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param);
- tailptr = &(*tailptr)->next;
- string.printf("%s Horiz Position", slider_get_laserdisc_desc(device));
- *tailptr = slider_alloc(machine, string, -500, defxoffset, 500, 2, slider_overxoffset, param);
- tailptr = &(*tailptr)->next;
- string.printf("%s Vert Stretch", slider_get_laserdisc_desc(device));
- *tailptr = slider_alloc(machine, string, 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param);
- tailptr = &(*tailptr)->next;
- string.printf("%s Vert Position", slider_get_laserdisc_desc(device));
- *tailptr = slider_alloc(machine, string, -500, defyoffset, 500, 2, slider_overyoffset, param);
- tailptr = &(*tailptr)->next;
- }
+ laserdisc_overlay_config config;
+ laserdisc->get_overlay_config(config);
+ int defxscale = floor(config.m_overscalex * 1000.0f + 0.5f);
+ int defyscale = floor(config.m_overscaley * 1000.0f + 0.5f);
+ int defxoffset = floor(config.m_overposx * 1000.0f + 0.5f);
+ int defyoffset = floor(config.m_overposy * 1000.0f + 0.5f);
+ void *param = (void *)laserdisc;
+
+ /* add scale and offset controls per-overlay */
+ string.printf("Laserdisc '%s' Horiz Stretch", laserdisc->tag());
+ *tailptr = slider_alloc(machine, string, 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param);
+ tailptr = &(*tailptr)->next;
+ string.printf("Laserdisc '%s' Horiz Position", laserdisc->tag());
+ *tailptr = slider_alloc(machine, string, -500, defxoffset, 500, 2, slider_overxoffset, param);
+ tailptr = &(*tailptr)->next;
+ string.printf("Laserdisc '%s' Vert Stretch", laserdisc->tag());
+ *tailptr = slider_alloc(machine, string, 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param);
+ tailptr = &(*tailptr)->next;
+ string.printf("Laserdisc '%s' Vert Position", laserdisc->tag());
+ *tailptr = slider_alloc(machine, string, -500, defyoffset, 500, 2, slider_overyoffset, param);
+ tailptr = &(*tailptr)->next;
}
+ }
for (screen_device *screen = machine.first_screen(); screen != NULL; screen = screen->next_screen())
if (screen->screen_type() == SCREEN_TYPE_VECTOR)
@@ -2055,18 +2055,18 @@ static INT32 slider_yoffset(running_machine &machine, void *arg, astring *string
static INT32 slider_overxscale(running_machine &machine, void *arg, astring *string, INT32 newval)
{
- device_t *laserdisc = (device_t *)arg;
- laserdisc_config settings;
+ laserdisc_device *laserdisc = (laserdisc_device *)arg;
+ laserdisc_overlay_config settings;
- laserdisc_get_config(laserdisc, &settings);
+ laserdisc->get_overlay_config(settings);
if (newval != SLIDER_NOCHANGE)
{
- settings.overscalex = (float)newval * 0.001f;
- laserdisc_set_config(laserdisc, &settings);
+ settings.m_overscalex = (float)newval * 0.001f;
+ laserdisc->set_overlay_config(settings);
}
if (string != NULL)
- string->printf("%.3f", settings.overscalex);
- return floor(settings.overscalex * 1000.0f + 0.5f);
+ string->printf("%.3f", settings.m_overscalex);
+ return floor(settings.m_overscalex * 1000.0f + 0.5f);
}
@@ -2077,18 +2077,18 @@ static INT32 slider_overxscale(running_machine &machine, void *arg, astring *str
static INT32 slider_overyscale(running_machine &machine, void *arg, astring *string, INT32 newval)
{
- device_t *laserdisc = (device_t *)arg;
- laserdisc_config settings;
+ laserdisc_device *laserdisc = (laserdisc_device *)arg;
+ laserdisc_overlay_config settings;
- laserdisc_get_config(laserdisc, &settings);
+ laserdisc->get_overlay_config(settings);
if (newval != SLIDER_NOCHANGE)
{
- settings.overscaley = (float)newval * 0.001f;
- laserdisc_set_config(laserdisc, &settings);
+ settings.m_overscaley = (float)newval * 0.001f;
+ laserdisc->set_overlay_config(settings);
}
if (string != NULL)
- string->printf("%.3f", settings.overscaley);
- return floor(settings.overscaley * 1000.0f + 0.5f);
+ string->printf("%.3f", settings.m_overscaley);
+ return floor(settings.m_overscaley * 1000.0f + 0.5f);
}
@@ -2099,18 +2099,18 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, astring *str
static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *string, INT32 newval)
{
- device_t *laserdisc = (device_t *)arg;
- laserdisc_config settings;
+ laserdisc_device *laserdisc = (laserdisc_device *)arg;
+ laserdisc_overlay_config settings;
- laserdisc_get_config(laserdisc, &settings);
+ laserdisc->get_overlay_config(settings);
if (newval != SLIDER_NOCHANGE)
{
- settings.overposx = (float)newval * 0.001f;
- laserdisc_set_config(laserdisc, &settings);
+ settings.m_overposx = (float)newval * 0.001f;
+ laserdisc->set_overlay_config(settings);
}
if (string != NULL)
- string->printf("%.3f", settings.overposx);
- return floor(settings.overposx * 1000.0f + 0.5f);
+ string->printf("%.3f", settings.m_overposx);
+ return floor(settings.m_overposx * 1000.0f + 0.5f);
}
@@ -2121,18 +2121,18 @@ static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *st
static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *string, INT32 newval)
{
- device_t *laserdisc = (device_t *)arg;
- laserdisc_config settings;
+ laserdisc_device *laserdisc = (laserdisc_device *)arg;
+ laserdisc_overlay_config settings;
- laserdisc_get_config(laserdisc, &settings);
+ laserdisc->get_overlay_config(settings);
if (newval != SLIDER_NOCHANGE)
{
- settings.overposy = (float)newval * 0.001f;
- laserdisc_set_config(laserdisc, &settings);
+ settings.m_overposy = (float)newval * 0.001f;
+ laserdisc->set_overlay_config(settings);
}
if (string != NULL)
- string->printf("%.3f", settings.overposy);
- return floor(settings.overposy * 1000.0f + 0.5f);
+ string->printf("%.3f", settings.m_overposy);
+ return floor(settings.m_overposy * 1000.0f + 0.5f);
}
@@ -2185,24 +2185,6 @@ static char *slider_get_screen_desc(screen_device &screen)
}
/*-------------------------------------------------
- slider_get_laserdisc_desc - returns the
- description for a given laseridsc
--------------------------------------------------*/
-static char *slider_get_laserdisc_desc(device_t *laserdisc)
-{
- static char descbuf[256];
- for (device_t *device = laserdisc->machine().devicelist().first(); device != NULL; device = device->next())
- if (device_is_laserdisc(device) && device != laserdisc)
- {
- sprintf(descbuf, "Laserdisc '%s'", laserdisc->tag());
- return descbuf;
- }
-
- strcpy(descbuf, "Laserdisc");
- return descbuf;
-}
-
-/*-------------------------------------------------
slider_crossscale - crosshair scale slider
callback
-------------------------------------------------*/
diff --git a/src/emu/uigfx.c b/src/emu/uigfx.c
index e69e8193a1c..f1705ad960b 100644
--- a/src/emu/uigfx.c
+++ b/src/emu/uigfx.c
@@ -30,7 +30,7 @@ struct _ui_gfx_state
/* intermediate bitmaps */
UINT8 bitmap_dirty; /* is the bitmap dirty? */
- bitmap_t * bitmap; /* bitmap for drawing gfx and tilemaps */
+ bitmap_rgb32 * bitmap; /* bitmap for drawing gfx and tilemaps */
render_texture *texture; /* texture for rendering the above bitmap */
/* palette-specific data */
@@ -84,7 +84,7 @@ static void palette_handler(running_machine &machine, render_container *containe
/* graphics set handling */
static void gfxset_handle_keys(running_machine &machine, ui_gfx_state *state, int xcells, int ycells);
-static void gfxset_draw_item(running_machine &machine, const gfx_element *gfx, int index, bitmap_t &bitmap, int dstx, int dsty, int color, int rotate);
+static void gfxset_draw_item(running_machine &machine, const gfx_element *gfx, int index, bitmap_rgb32 &bitmap, int dstx, int dsty, int color, int rotate);
static void gfxset_update_bitmap(running_machine &machine, ui_gfx_state *state, int xcells, int ycells, gfx_element *gfx);
static void gfxset_handler(running_machine &machine, render_container *container, ui_gfx_state *state);
@@ -700,9 +700,9 @@ static void gfxset_update_bitmap(running_machine &machine, ui_gfx_state *state,
global_free(state->bitmap);
/* allocate new stuff */
- state->bitmap = global_alloc(bitmap_t(cellxpix * xcells, cellypix * ycells, BITMAP_FORMAT_ARGB32));
+ state->bitmap = global_alloc(bitmap_rgb32(cellxpix * xcells, cellypix * ycells));
state->texture = machine.render().texture_alloc();
- state->texture->set_bitmap(state->bitmap, NULL, TEXFORMAT_ARGB32);
+ state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_ARGB32);
/* force a redraw */
state->bitmap_dirty = TRUE;
@@ -750,7 +750,7 @@ static void gfxset_update_bitmap(running_machine &machine, ui_gfx_state *state,
}
/* reset the texture to force an update */
- state->texture->set_bitmap(state->bitmap, NULL, TEXFORMAT_ARGB32);
+ state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_ARGB32);
state->bitmap_dirty = FALSE;
}
}
@@ -761,7 +761,7 @@ static void gfxset_update_bitmap(running_machine &machine, ui_gfx_state *state,
the view
-------------------------------------------------*/
-static void gfxset_draw_item(running_machine &machine, const gfx_element *gfx, int index, bitmap_t &bitmap, int dstx, int dsty, int color, int rotate)
+static void gfxset_draw_item(running_machine &machine, const gfx_element *gfx, int index, bitmap_rgb32 &bitmap, int dstx, int dsty, int color, int rotate)
{
static const pen_t default_palette[] =
{
@@ -1030,34 +1030,21 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state *state, i
static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state *state, int width, int height)
{
- bitmap_format screen_format = machine.primary_screen->format();
- palette_t *palette = NULL;
- int screen_texformat;
-
- /* convert the screen format to a texture format */
- switch (screen_format)
- {
- case BITMAP_FORMAT_INDEXED16: screen_texformat = TEXFORMAT_PALETTE16; palette = machine.palette; break;
- case BITMAP_FORMAT_RGB15: screen_texformat = TEXFORMAT_RGB15; palette = NULL; break;
- case BITMAP_FORMAT_RGB32: screen_texformat = TEXFORMAT_RGB32; palette = NULL; break;
- default: fatalerror("Invalid bitmap format!"); break;
- }
-
/* swap the coordinates back if they were talking about a rotated surface */
if (state->tilemap.rotate & ORIENTATION_SWAP_XY)
{ UINT32 temp = width; width = height; height = temp; }
/* realloc the bitmap if it is too small */
- if (state->bitmap == NULL || state->texture == NULL || state->bitmap->format() != screen_format || state->bitmap->width() != width || state->bitmap->height() != height)
+ if (state->bitmap == NULL || state->texture == NULL || state->bitmap->width() != width || state->bitmap->height() != height)
{
/* free the old stuff */
machine.render().texture_free(state->texture);
global_free(state->bitmap);
/* allocate new stuff */
- state->bitmap = global_alloc(bitmap_t(width, height, screen_format));
+ state->bitmap = global_alloc(bitmap_rgb32(width, height));
state->texture = machine.render().texture_alloc();
- state->texture->set_bitmap(state->bitmap, NULL, screen_texformat, palette);
+ state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_RGB32);
/* force a redraw */
state->bitmap_dirty = TRUE;
@@ -1069,7 +1056,7 @@ static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state *state,
tilemap_draw_by_index(machine, *state->bitmap, state->tilemap.which, state->tilemap.xoffs, state->tilemap.yoffs);
/* reset the texture to force an update */
- state->texture->set_bitmap(state->bitmap, NULL, screen_texformat, palette);
+ state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_RGB32);
state->bitmap_dirty = FALSE;
}
}
diff --git a/src/emu/uimenu.c b/src/emu/uimenu.c
index 4d20ee6ebc0..9515d992965 100644
--- a/src/emu/uimenu.c
+++ b/src/emu/uimenu.c
@@ -33,7 +33,7 @@
ui_menu *ui_menu::menu_stack;
ui_menu *ui_menu::menu_free;
-bitmap_t *ui_menu::hilight_bitmap;
+bitmap_rgb32 *ui_menu::hilight_bitmap;
render_texture *ui_menu::hilight_texture;
render_texture *ui_menu::arrow_texture;
@@ -86,7 +86,7 @@ void ui_menu::init(running_machine &machine)
ui_menu::stack_reset(machine);
/* create a texture for hilighting items */
- hilight_bitmap = auto_bitmap_alloc(machine, 256, 1, BITMAP_FORMAT_ARGB32);
+ hilight_bitmap = auto_bitmap_rgb32_alloc(machine, 256, 1);
for (x = 0; x < 256; x++)
{
int alpha = 0xff;
@@ -95,7 +95,7 @@ void ui_menu::init(running_machine &machine)
hilight_bitmap->pix32(0, x) = MAKE_ARGB(alpha,0xff,0xff,0xff);
}
hilight_texture = machine.render().texture_alloc();
- hilight_texture->set_bitmap(hilight_bitmap, NULL, TEXFORMAT_ARGB32);
+ hilight_texture->set_bitmap(*hilight_bitmap, hilight_bitmap->cliprect(), TEXFORMAT_ARGB32);
/* create a texture for arrow icons */
arrow_texture = machine.render().texture_alloc(render_triangle);
@@ -1063,7 +1063,7 @@ UINT32 ui_menu::ui_handler(running_machine &machine, render_container *container
indicators
-------------------------------------------------*/
-void ui_menu::render_triangle(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param)
+void ui_menu::render_triangle(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param)
{
int halfwidth = dest.width() / 2;
int height = dest.height();
diff --git a/src/emu/uimenu.h b/src/emu/uimenu.h
index 8b41ca764de..6199403d68d 100644
--- a/src/emu/uimenu.h
+++ b/src/emu/uimenu.h
@@ -174,7 +174,7 @@ public:
private:
static ui_menu *menu_free;
- static bitmap_t *hilight_bitmap;
+ static bitmap_rgb32 *hilight_bitmap;
static render_texture *hilight_texture, *arrow_texture;
bool special_main_menu;
@@ -189,7 +189,7 @@ private:
inline bool exclusive_input_pressed(int key, int repeat);
static void clear_free_list(running_machine &machine);
- static void render_triangle(bitmap_t &dest, const bitmap_t &source, const rectangle &sbounds, void *param);
+ static void render_triangle(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
};
#endif /* __UIMENU_H__ */
diff --git a/src/emu/validity.c b/src/emu/validity.c
index 31b149904a4..8a1ebd2e4ea 100644
--- a/src/emu/validity.c
+++ b/src/emu/validity.c
@@ -606,7 +606,7 @@ static bool validate_display(driver_enumerator &drivlist)
bool error = false;
for (const screen_device *scrconfig = config.first_screen(); scrconfig != NULL; scrconfig = scrconfig->next_screen())
- if (scrconfig->format() == BITMAP_FORMAT_INDEXED16)
+ if (scrconfig->format() == BITMAP_FORMAT_IND16)
palette_modes = true;
/* check for empty palette */
diff --git a/src/emu/video.c b/src/emu/video.c
index d6e97e09188..41dc41250cb 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -547,7 +547,7 @@ void video_manager::exit()
// free the snapshot target
machine().render().target_free(m_snap_target);
- m_snap_bitmap.deallocate();
+ m_snap_bitmap.reset();
// print a final result if we have at least 5 seconds' worth of data
if (m_overall_emutime.seconds >= 5)
@@ -1075,7 +1075,7 @@ void video_manager::create_snapshot_bitmap(device_t *screen)
// if we don't have a bitmap, or if it's not the right size, allocate a new one
if (!m_snap_bitmap.valid() || width != m_snap_bitmap.width() || height != m_snap_bitmap.height())
- m_snap_bitmap.allocate(width, height, BITMAP_FORMAT_RGB32);
+ m_snap_bitmap.allocate(width, height);
// render the screen there
render_primitive_list &primlist = m_snap_target->get_primitives();
@@ -1238,7 +1238,7 @@ void video_manager::record_frame()
if (m_avifile != NULL)
{
// write the next frame
- avi_error avierr = avi_append_video_frame_rgb32(m_avifile, m_snap_bitmap);
+ avi_error avierr = avi_append_video_frame(m_avifile, m_snap_bitmap);
if (avierr != AVIERR_NONE)
{
g_profiler.stop();
@@ -1285,16 +1285,12 @@ void video_manager::record_frame()
invalid palette index
-------------------------------------------------*/
-void video_assert_out_of_range_pixels(running_machine &machine, bitmap_t &bitmap)
+void video_assert_out_of_range_pixels(running_machine &machine, bitmap_ind16 &bitmap)
{
#ifdef MAME_DEBUG
int maxindex = palette_get_max_index(machine.palette);
int x, y;
- // this only applies to indexed16 bitmaps
- if (bitmap.format() != BITMAP_FORMAT_INDEXED16)
- return;
-
// iterate over rows
for (y = 0; y < bitmap.height(); y++)
{
diff --git a/src/emu/video.h b/src/emu/video.h
index 4abe5799c27..976274f3835 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -181,7 +181,7 @@ private:
// snapshot stuff
render_target * m_snap_target; // screen shapshot target
- bitmap_t m_snap_bitmap; // screen snapshot bitmap
+ bitmap_rgb32 m_snap_bitmap; // screen snapshot bitmap
bool m_snap_native; // are we using native per-screen layouts?
INT32 m_snap_width; // width of snapshots (0 == auto)
INT32 m_snap_height; // height of snapshots (0 == auto)
@@ -204,7 +204,7 @@ private:
// ----- debugging helpers -----
// assert if any pixels in the given bitmap contain an invalid palette index
-void video_assert_out_of_range_pixels(running_machine &machine, bitmap_t &bitmap);
+void video_assert_out_of_range_pixels(running_machine &machine, bitmap_ind16 &bitmap);
#endif /* __VIDEO_H__ */
diff --git a/src/emu/video/315_5124.c b/src/emu/video/315_5124.c
index 75a0001472a..845ffbbac8d 100644
--- a/src/emu/video/315_5124.c
+++ b/src/emu/video/315_5124.c
@@ -397,14 +397,14 @@ void sega315_5124_device::process_line_timer()
/* Draw left border */
rec.min_x = SEGA315_5124_LBORDER_START;
rec.max_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
/* Draw right border */
rec.min_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256;
rec.max_x = rec.min_x + SEGA315_5124_RBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
/* Draw middle of the border */
/* We need to do this through the regular drawing function so it will */
@@ -430,14 +430,14 @@ void sega315_5124_device::process_line_timer()
/* Draw left border */
rec.min_x = SEGA315_5124_LBORDER_START;
rec.max_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
/* Draw right border */
rec.min_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256;
rec.max_x = rec.min_x + SEGA315_5124_RBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
select_sprites( vpos_limit, vpos - vpos_limit );
if ( m_draw_time > 0 )
@@ -462,14 +462,14 @@ void sega315_5124_device::process_line_timer()
/* Draw left border */
rec.min_x = SEGA315_5124_LBORDER_START;
rec.max_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
/* Draw right border */
rec.min_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256;
rec.max_x = rec.min_x + SEGA315_5124_RBORDER_WIDTH - 1;
- m_tmpbitmap->fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
- m_y1_bitmap->fill(1, rec);
+ m_tmpbitmap.fill(machine().pens[m_current_palette[BACKDROP_COLOR]], rec);
+ m_y1_bitmap.fill(1, rec);
/* Draw middle of the border */
/* We need to do this through the regular drawing function so it will */
@@ -1338,8 +1338,8 @@ void sega315_5124_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
}
}
- UINT32 *p_bitmap = &m_tmpbitmap->pix32(pixel_plot_y + line, pixel_offset_x);
- UINT8 *p_y1 = &m_y1_bitmap->pix8(pixel_plot_y + line, pixel_offset_x);
+ UINT32 *p_bitmap = &m_tmpbitmap.pix32(pixel_plot_y + line, pixel_offset_x);
+ UINT8 *p_y1 = &m_y1_bitmap.pix8(pixel_plot_y + line, pixel_offset_x);
/* Check if display is disabled or we're below/above active area */
if (!(m_reg[0x01] & 0x40) || line < 0 || line >= m_frame_timing[ACTIVE_DISPLAY_V])
@@ -1508,7 +1508,7 @@ void sega315_5378_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
rgb_t c2 = machine().pens[line2[x]];
rgb_t c3 = machine().pens[line3[x]];
rgb_t c4 = machine().pens[line4[x]];
- m_tmpbitmap->pix32(pixel_plot_y, pixel_offset_x + x) =
+ m_tmpbitmap.pix32(pixel_plot_y, pixel_offset_x + x) =
MAKE_RGB((RGB_RED(c1) / 6 + RGB_RED(c2) / 3 + RGB_RED(c3) / 3 + RGB_RED(c4) / 6 ),
(RGB_GREEN(c1) / 6 + RGB_GREEN(c2) / 3 + RGB_GREEN(c3) / 3 + RGB_GREEN(c4) / 6 ),
(RGB_BLUE(c1) / 6 + RGB_BLUE(c2) / 3 + RGB_BLUE(c3) / 3 + RGB_BLUE(c4) / 6 ) );
@@ -1520,7 +1520,7 @@ void sega315_5378_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
for (x = 0; x < 256; x++)
{
- m_tmpbitmap->pix32(pixel_plot_y + line, pixel_offset_x + x) = machine().pens[blitline_buffer[x]];
+ m_tmpbitmap.pix32(pixel_plot_y + line, pixel_offset_x + x) = machine().pens[blitline_buffer[x]];
}
}
@@ -1580,9 +1580,10 @@ void sega315_5378_device::update_palette()
}
-void sega315_5124_device::update_video( bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 sega315_5124_device::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
- copybitmap(bitmap, *m_tmpbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_tmpbitmap, 0, 0, 0, 0, cliprect);
+ return 0;
}
@@ -1623,8 +1624,8 @@ void sega315_5124_device::device_start()
m_frame_timing = (m_is_pal) ? pal_192 : ntsc_192;
/* Make temp bitmap for rendering */
- m_tmpbitmap = auto_bitmap_alloc(machine(), width, height, BITMAP_FORMAT_INDEXED32);
- m_y1_bitmap = auto_bitmap_alloc(machine(), width, height, BITMAP_FORMAT_INDEXED8);
+ m_tmpbitmap.allocate(width, height);
+ m_y1_bitmap.allocate(width, height);
m_display_timer = timer_alloc(TIMER_LINE);
m_display_timer->adjust(m_screen->time_until_pos(0, DISPLAY_CB_HPOS), 0, m_screen->scan_period());
@@ -1653,8 +1654,8 @@ void sega315_5124_device::device_start()
save_item(NAME(m_current_palette));
save_pointer(NAME(m_line_buffer), 256 * 5);
save_item(NAME(m_collision_buffer));
- save_item(NAME(*m_tmpbitmap));
- save_item(NAME(*m_y1_bitmap));
+ save_item(NAME(m_tmpbitmap));
+ save_item(NAME(m_y1_bitmap));
save_item(NAME(m_draw_time));
}
diff --git a/src/emu/video/315_5124.h b/src/emu/video/315_5124.h
index 16e2ed93c15..1f153799be9 100644
--- a/src/emu/video/315_5124.h
+++ b/src/emu/video/315_5124.h
@@ -78,11 +78,11 @@ public:
DECLARE_READ8_MEMBER( hcount_latch_read );
DECLARE_WRITE8_MEMBER( hcount_latch_write );
- bitmap_t *get_bitmap() { return m_tmpbitmap; };
- bitmap_t *get_y1_bitmap() { return m_y1_bitmap; };
+ bitmap_rgb32 &get_bitmap() { return m_tmpbitmap; };
+ bitmap_ind8 &get_y1_bitmap() { return m_y1_bitmap; };
/* update the screen */
- void update_video( bitmap_t &bitmap, const rectangle &cliprect );
+ UINT32 screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
virtual void set_sega315_5124_compatibility_mode( bool sega315_5124_compatibility_mode ) { };
@@ -126,8 +126,8 @@ protected:
UINT8 m_hcounter;
memory_region *m_CRAM; /* Pointer to CRAM */
const UINT8 *m_frame_timing;
- bitmap_t *m_tmpbitmap;
- bitmap_t *m_y1_bitmap;
+ bitmap_rgb32 m_tmpbitmap;
+ bitmap_ind8 m_y1_bitmap;
UINT8 m_collision_buffer[SEGA315_5124_WIDTH];
UINT8 m_palette_offset;
bool m_supports_224_240;
diff --git a/src/emu/video/cdp1861.c b/src/emu/video/cdp1861.c
index 2afae40232c..04181988000 100644
--- a/src/emu/video/cdp1861.c
+++ b/src/emu/video/cdp1861.c
@@ -82,7 +82,7 @@ void cdp1861_device::device_start()
// find devices
m_cpu = machine().device<cpu_device>(m_cpu_tag);
m_screen = machine().device<screen_device>(m_screen_tag);
- m_bitmap = auto_bitmap_alloc(machine(), m_screen->width(), m_screen->height(), m_screen->format());
+ m_bitmap.allocate(m_screen->width(), m_screen->height(), m_screen->format());
// register for state saving
save_item(NAME(m_disp));
@@ -214,7 +214,7 @@ WRITE8_MEMBER( cdp1861_device::dma_w )
for (x = 0; x < 8; x++)
{
int color = BIT(data, 7);
- m_bitmap->pix16(y, sx + x) = color;
+ m_bitmap.pix16(y, sx + x) = color;
data <<= 1;
}
}
@@ -248,17 +248,18 @@ WRITE_LINE_MEMBER( cdp1861_device::disp_off_w )
//-------------------------------------------------
-// update_screen -
+// screen_update -
//-------------------------------------------------
-void cdp1861_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 cdp1861_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_disp)
{
- copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
}
else
{
bitmap.fill(get_black_pen(machine()), cliprect);
}
+ return 0;
}
diff --git a/src/emu/video/cdp1861.h b/src/emu/video/cdp1861.h
index 11fd81a5da6..f63b1d1d7d9 100644
--- a/src/emu/video/cdp1861.h
+++ b/src/emu/video/cdp1861.h
@@ -70,9 +70,9 @@
MCFG_DEVICE_CONFIG(_config)
-#define MCFG_CDP1861_SCREEN_ADD(_tag, _clock) \
+#define MCFG_CDP1861_SCREEN_ADD(_cdptag, _tag, _clock) \
MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
+ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1861_device, screen_update) \
MCFG_SCREEN_RAW_PARAMS(_clock, CDP1861_SCREEN_WIDTH, CDP1861_HBLANK_END, CDP1861_HBLANK_START, CDP1861_TOTAL_SCANLINES, CDP1861_SCANLINE_VBLANK_END, CDP1861_SCANLINE_VBLANK_START)
@@ -113,7 +113,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( disp_on_w );
DECLARE_WRITE_LINE_MEMBER( disp_off_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -132,7 +132,7 @@ private:
devcb_resolved_write_line m_out_efx_func;
screen_device *m_screen; // screen
- bitmap_t *m_bitmap; // bitmap
+ bitmap_ind16 m_bitmap; // bitmap
int m_disp; // display enabled
int m_dispon; // display on latch
diff --git a/src/emu/video/cdp1862.c b/src/emu/video/cdp1862.c
index 0751264977d..a90c99cc4c2 100644
--- a/src/emu/video/cdp1862.c
+++ b/src/emu/video/cdp1862.c
@@ -122,7 +122,7 @@ void cdp1862_device::device_start()
// find devices
m_screen = machine().device<screen_device>(m_screen_tag);
- m_bitmap = auto_bitmap_alloc(machine(), m_screen->width(), m_screen->height(), m_screen->format());
+ m_bitmap.allocate(m_screen->width(), m_screen->height(), m_screen->format());
// init palette
initialize_palette();
@@ -171,7 +171,7 @@ WRITE8_MEMBER( cdp1862_device::dma_w )
color = (gd << 2) | (bd << 1) | rd;
}
- m_bitmap->pix16(y, sx + x) = color;
+ m_bitmap.pix16(y, sx + x) = color;
data <<= 1;
}
@@ -210,11 +210,12 @@ WRITE_LINE_MEMBER( cdp1862_device::con_w )
//-------------------------------------------------
-// update_screen -
+// screen_update -
//-------------------------------------------------
-void cdp1862_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 cdp1862_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect);
- m_bitmap->fill(CDP1862_BACKGROUND_COLOR_SEQUENCE[m_bgcolor] + 8, cliprect);
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
+ m_bitmap.fill(CDP1862_BACKGROUND_COLOR_SEQUENCE[m_bgcolor] + 8, cliprect);
+ return 0;
}
diff --git a/src/emu/video/cdp1862.h b/src/emu/video/cdp1862.h
index 56ba3c5f74c..dd7850e6086 100644
--- a/src/emu/video/cdp1862.h
+++ b/src/emu/video/cdp1862.h
@@ -94,7 +94,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( bkg_w );
DECLARE_WRITE_LINE_MEMBER( con_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -110,7 +110,7 @@ private:
devcb_resolved_read_line m_in_gd_func;
screen_device *m_screen; // screen
- bitmap_t *m_bitmap; // bitmap
+ bitmap_ind16 m_bitmap; // bitmap
int m_bgcolor; // background color
int m_con; // color on
diff --git a/src/emu/video/crt9021.c b/src/emu/video/crt9021.c
index 520b90f12eb..7613014eac1 100644
--- a/src/emu/video/crt9021.c
+++ b/src/emu/video/crt9021.c
@@ -219,9 +219,10 @@ WRITE_LINE_MEMBER( crt9021_device::vsync_w )
//-------------------------------------------------
-// update_screen - update screen
+// screen_update - update screen
//-------------------------------------------------
-void crt9021_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 crt9021_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
+ return 0;
}
diff --git a/src/emu/video/crt9021.h b/src/emu/video/crt9021.h
index 83c05f7d00b..bfa7ab03528 100644
--- a/src/emu/video/crt9021.h
+++ b/src/emu/video/crt9021.h
@@ -88,7 +88,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( retbl_w );
DECLARE_WRITE_LINE_MEMBER( vsync_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
diff --git a/src/emu/video/h63484.c b/src/emu/video/h63484.c
index 500fca65c33..edacced60b6 100644
--- a/src/emu/video/h63484.c
+++ b/src/emu/video/h63484.c
@@ -1159,7 +1159,7 @@ void h63484_device::device_reset()
// draw_graphics_line -
//-------------------------------------------------
-void h63484_device::draw_graphics_line(bitmap_t &bitmap, const rectangle &cliprect, int y, int layer_n)
+void h63484_device::draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int layer_n)
{
int x;
int pitch;
@@ -1188,7 +1188,7 @@ void h63484_device::draw_graphics_line(bitmap_t &bitmap, const rectangle &clipre
// update_screen -
//-------------------------------------------------
-void h63484_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 h63484_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if(m_dcr & 0x8000) // correct?
{
@@ -1200,4 +1200,5 @@ void h63484_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
draw_graphics_line(bitmap,cliprect, y, 1);
}
}
+ return 0;
}
diff --git a/src/emu/video/h63484.h b/src/emu/video/h63484.h
index 61ca08b5529..564c3a9afbf 100644
--- a/src/emu/video/h63484.h
+++ b/src/emu/video/h63484.h
@@ -26,8 +26,8 @@
#define H63484_INTERFACE(name) \
const h63484_interface (name) =
-typedef void (*h63484_display_pixels_func)(device_t *device, bitmap_t &bitmap, int y, int x, UINT16 data);
-#define H63484_DISPLAY_PIXELS(name) void name(device_t *device, bitmap_t &bitmap, int y, int x, UINT16 data)
+typedef void (*h63484_display_pixels_func)(device_t *device, bitmap_ind16 &bitmap, int y, int x, UINT16 data);
+#define H63484_DISPLAY_PIXELS(name) void name(device_t *device, bitmap_ind16 &bitmap, int y, int x, UINT16 data)
// ======================> h63484_interface
@@ -56,7 +56,7 @@ public:
DECLARE_READ8_MEMBER( vram_r );
DECLARE_WRITE8_MEMBER( vram_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
virtual const rom_entry *device_rom_region() const;
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
@@ -89,7 +89,7 @@ private:
UINT16 video_registers_r(int offset);
void video_registers_w(int offset);
int translate_command(UINT16 data);
- void draw_graphics_line(bitmap_t &bitmap, const rectangle &cliprect, int y, int layer_n);
+ void draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int layer_n);
screen_device *m_screen;
diff --git a/src/emu/video/hd44102.c b/src/emu/video/hd44102.c
index 34570730980..b6e8fe43fdb 100644
--- a/src/emu/video/hd44102.c
+++ b/src/emu/video/hd44102.c
@@ -271,7 +271,7 @@ WRITE_LINE_MEMBER( hd44102_device::cs2_w )
// update_screen - update screen
//-------------------------------------------------
-void hd44102_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 hd44102_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int y = 0; y < 50; y++)
{
@@ -295,4 +295,5 @@ void hd44102_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
z %= 32;
}
}
+ return 0;
}
diff --git a/src/emu/video/hd44102.h b/src/emu/video/hd44102.h
index 275f4176482..204c719ec9a 100644
--- a/src/emu/video/hd44102.h
+++ b/src/emu/video/hd44102.h
@@ -46,7 +46,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( cs2_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
diff --git a/src/emu/video/hd61830.c b/src/emu/video/hd61830.c
index a03ac52c33a..ece461232c9 100644
--- a/src/emu/video/hd61830.c
+++ b/src/emu/video/hd61830.c
@@ -406,7 +406,7 @@ WRITE8_MEMBER( hd61830_device::data_w )
// draw_scanline - draw one graphics scanline
//-------------------------------------------------
-void hd61830_device::draw_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 ra)
+void hd61830_device::draw_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 ra)
{
for (int sx = 0; sx < m_hn; sx++)
{
@@ -424,7 +424,7 @@ void hd61830_device::draw_scanline(bitmap_t &bitmap, const rectangle &cliprect,
// update_graphics - draw graphics mode screen
//-------------------------------------------------
-void hd61830_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect)
+void hd61830_device::update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int y = 0; y < m_nx; y++)
{
@@ -444,7 +444,7 @@ void hd61830_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect
// draw_char - draw a char
//-------------------------------------------------
-void hd61830_device::draw_char(bitmap_t &bitmap, const rectangle &cliprect, UINT16 ma, int x, int y, UINT8 md)
+void hd61830_device::draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 ma, int x, int y, UINT8 md)
{
for (int cl = 0; cl < m_vp; cl++)
{
@@ -515,7 +515,7 @@ void hd61830_device::draw_char(bitmap_t &bitmap, const rectangle &cliprect, UINT
// update_text - draw text mode screen
//-------------------------------------------------
-void hd61830_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
+void hd61830_device::update_text(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int y = 0; y < (m_nx / m_vp); y++)
{
@@ -534,7 +534,7 @@ void hd61830_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
// update_screen - update screen
//-------------------------------------------------
-void hd61830_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 hd61830_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_mcr & MODE_DISPLAY_ON)
{
@@ -559,4 +559,5 @@ void hd61830_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
m_blink = 0;
m_cursor = !m_cursor;
}
+ return 0;
}
diff --git a/src/emu/video/hd61830.h b/src/emu/video/hd61830.h
index 80a3fa21606..7b173eb6b81 100644
--- a/src/emu/video/hd61830.h
+++ b/src/emu/video/hd61830.h
@@ -68,7 +68,7 @@ public:
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -87,10 +87,10 @@ protected:
private:
void set_busy_flag();
- void draw_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 ra);
- void update_graphics(bitmap_t &bitmap, const rectangle &cliprect);
- void draw_char(bitmap_t &bitmap, const rectangle &cliprect, UINT16 ma, int x, int y, UINT8 md);
- void update_text(bitmap_t &bitmap, const rectangle &cliprect);
+ void draw_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 ra);
+ void update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 ma, int x, int y, UINT8 md);
+ void update_text(bitmap_ind16 &bitmap, const rectangle &cliprect);
devcb_resolved_read8 m_in_rd_func;
diff --git a/src/emu/video/i8275.c b/src/emu/video/i8275.c
index 22a7fcb64de..289957878ad 100644
--- a/src/emu/video/i8275.c
+++ b/src/emu/video/i8275.c
@@ -460,7 +460,7 @@ WRITE8_DEVICE_HANDLER( i8275_dack_w )
}
/* Screen Update */
-void i8275_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void i8275_update(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
i8275_t *i8275 = get_safe_token(device);
i8275->ypos = 0;
diff --git a/src/emu/video/i8275.h b/src/emu/video/i8275.h
index 848ea898d49..689a7f6b046 100644
--- a/src/emu/video/i8275.h
+++ b/src/emu/video/i8275.h
@@ -51,7 +51,7 @@ READ8_DEVICE_HANDLER ( i8275_r );
WRITE8_DEVICE_HANDLER ( i8275_w );
/* updates the screen */
-void i8275_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+void i8275_update(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
WRITE8_DEVICE_HANDLER( i8275_dack_w );
diff --git a/src/emu/video/k053250.c b/src/emu/video/k053250.c
index dc39793b9d4..b5f86814ace 100644
--- a/src/emu/video/k053250.c
+++ b/src/emu/video/k053250.c
@@ -58,9 +58,9 @@ void k053250_t::device_reset()
}
// utility function to render a clipped scanline vertically or horizontally
-inline void k053250_t::pdraw_scanline32(bitmap_t &bitmap, const pen_t *palette, UINT8 *source,
+inline void k053250_t::pdraw_scanline32(bitmap_rgb32 &bitmap, const pen_t *palette, UINT8 *source,
const rectangle &cliprect, int linepos, int scroll, int zoom,
- UINT32 clipmask, UINT32 wrapmask, UINT32 orientation, bitmap_t &priority, UINT8 pri)
+ UINT32 clipmask, UINT32 wrapmask, UINT32 orientation, bitmap_ind8 &priority, UINT8 pri)
{
// a sixteen-bit fixed point resolution should be adequate to our application
#define FIXPOINT_PRECISION 16
@@ -221,7 +221,7 @@ inline void k053250_t::pdraw_scanline32(bitmap_t &bitmap, const pen_t *palette,
#undef FIXPOINT_PRECISION_HALF
}
-void k053250_t::draw( bitmap_t &bitmap, const rectangle &cliprect, int colorbase, int flags, int priority )
+void k053250_t::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, int priority )
{
UINT8 *pix_ptr;
const pen_t *pal_base, *pal_ptr;
diff --git a/src/emu/video/k053250.h b/src/emu/video/k053250.h
index 3070d769508..cea197f2d4d 100644
--- a/src/emu/video/k053250.h
+++ b/src/emu/video/k053250.h
@@ -26,7 +26,7 @@ public:
DECLARE_WRITE16_MEMBER(ram_w);
DECLARE_READ16_MEMBER(rom_r);
- void draw( bitmap_t &bitmap, const rectangle &cliprect, int colorbase, int flags, int priority );
+ void draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, int priority );
protected:
void device_start();
@@ -46,9 +46,9 @@ private:
void unpack_nibbles();
void dma(int limiter);
- static void pdraw_scanline32(bitmap_t &bitmap, const pen_t *palette, UINT8 *source,
+ static void pdraw_scanline32(bitmap_rgb32 &bitmap, const pen_t *palette, UINT8 *source,
const rectangle &cliprect, int linepos, int scroll, int zoom,
- UINT32 clipmask, UINT32 wrapmask, UINT32 orientation, bitmap_t &priority, UINT8 pri);
+ UINT32 clipmask, UINT32 wrapmask, UINT32 orientation, bitmap_ind8 &priority, UINT8 pri);
};
extern const device_type K053250;
diff --git a/src/emu/video/mc6845.c b/src/emu/video/mc6845.c
index 1857c768820..621875d22b5 100644
--- a/src/emu/video/mc6845.c
+++ b/src/emu/video/mc6845.c
@@ -688,7 +688,7 @@ void mc6845_device::update_cursor_state()
}
-void mc6845_device::update(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 mc6845_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
assert(bitmap.valid());
@@ -751,6 +751,7 @@ void mc6845_device::update(bitmap_t &bitmap, const rectangle &cliprect)
}
else
popmessage("Invalid MC6845 screen parameters - display disabled!!!");
+ return 0;
}
diff --git a/src/emu/video/mc6845.h b/src/emu/video/mc6845.h
index ff6afa1b00e..c1c70dab4fd 100644
--- a/src/emu/video/mc6845.h
+++ b/src/emu/video/mc6845.h
@@ -25,22 +25,22 @@
class mc6845_device;
/* callback definitions */
-typedef void * (*mc6845_begin_update_func)(mc6845_device *device, bitmap_t &bitmap, const rectangle &cliprect);
-#define MC6845_BEGIN_UPDATE(name) void *name(mc6845_device *device, bitmap_t &bitmap, const rectangle &cliprect)
+typedef void * (*mc6845_begin_update_func)(mc6845_device *device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+#define MC6845_BEGIN_UPDATE(name) void *name(mc6845_device *device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-typedef void (*mc6845_update_row_func)(mc6845_device *device, bitmap_t &bitmap,
+typedef void (*mc6845_update_row_func)(mc6845_device *device, bitmap_rgb32 &bitmap,
const rectangle &cliprect, UINT16 ma, UINT8 ra,
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param);
-#define MC6845_UPDATE_ROW(name) void name(mc6845_device *device, bitmap_t &bitmap, \
+#define MC6845_UPDATE_ROW(name) void name(mc6845_device *device, bitmap_rgb32 &bitmap, \
const rectangle &cliprect, UINT16 ma, UINT8 ra, \
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param)
-typedef void (*mc6845_end_update_func)(mc6845_device *device, bitmap_t &bitmap, const rectangle &cliprect, void *param);
-#define MC6845_END_UPDATE(name) void name(mc6845_device *device, bitmap_t &bitmap, const rectangle &cliprect, void *param)
+typedef void (*mc6845_end_update_func)(mc6845_device *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, void *param);
+#define MC6845_END_UPDATE(name) void name(mc6845_device *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, void *param)
typedef void (*mc6845_on_update_addr_changed_func)(mc6845_device *device, int address, int strobe);
@@ -148,7 +148,7 @@ public:
/* updates the screen -- this will call begin_update(),
followed by update_row() reapeatedly and after all row
updating is complete, end_update() */
- void update(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
diff --git a/src/emu/video/msm6255.c b/src/emu/video/msm6255.c
index d0f60c80b0c..d4f53f1ddd9 100644
--- a/src/emu/video/msm6255.c
+++ b/src/emu/video/msm6255.c
@@ -317,7 +317,7 @@ void msm6255_device::update_cursor()
// draw_scanline -
//-------------------------------------------------
-void msm6255_device::draw_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 ma, UINT8 ra)
+void msm6255_device::draw_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 ma, UINT8 ra)
{
UINT8 hp = (m_pr & PR_HP_MASK) + 1;
UINT8 hn = (m_hnr & HNR_HN_MASK) + 1;
@@ -358,7 +358,7 @@ void msm6255_device::draw_scanline(bitmap_t &bitmap, const rectangle &cliprect,
// update_graphics -
//-------------------------------------------------
-void msm6255_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect)
+void msm6255_device::update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 hn = (m_hnr & HNR_HN_MASK) + 1;
UINT8 nx = (m_dvr & DVR_DN_MASK) + 1;
@@ -386,7 +386,7 @@ void msm6255_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect
// update_text -
//-------------------------------------------------
-void msm6255_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
+void msm6255_device::update_text(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 hn = (m_hnr & HNR_HN_MASK) + 1;
UINT8 vp = (m_pr & PR_VP_MASK) + 1;
@@ -417,7 +417,7 @@ void msm6255_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
// update_screen - update screen
//-------------------------------------------------
-void msm6255_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 msm6255_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_mor & MOR_DISPLAY_ON)
{
@@ -434,4 +434,5 @@ void msm6255_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
{
bitmap.fill(get_black_pen(machine()), cliprect);
}
+ return 0;
}
diff --git a/src/emu/video/msm6255.h b/src/emu/video/msm6255.h
index af8b595f512..2d083d41b40 100644
--- a/src/emu/video/msm6255.h
+++ b/src/emu/video/msm6255.h
@@ -68,7 +68,7 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &device, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -79,9 +79,9 @@ protected:
private:
inline UINT8 read_video_data(UINT16 ma, UINT8 ra);
void update_cursor();
- void draw_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 ma, UINT8 ra);
- void update_graphics(bitmap_t &bitmap, const rectangle &cliprect);
- void update_text(bitmap_t &bitmap, const rectangle &cliprect);
+ void draw_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 ma, UINT8 ra);
+ void update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void update_text(bitmap_ind16 &bitmap, const rectangle &cliprect);
screen_device *m_screen;
diff --git a/src/emu/video/pc_cga.c b/src/emu/video/pc_cga.c
index e0b98d3bfec..df1f8196a6e 100644
--- a/src/emu/video/pc_cga.c
+++ b/src/emu/video/pc_cga.c
@@ -168,10 +168,10 @@ static MC6845_UPDATE_ROW( cga_update_row );
static WRITE_LINE_DEVICE_HANDLER( cga_hsync_changed );
static WRITE_LINE_DEVICE_HANDLER( cga_vsync_changed );
static VIDEO_START( pc1512 );
-static SCREEN_UPDATE( mc6845_pc1512 );
+static SCREEN_UPDATE_RGB32( mc6845_pc1512 );
static VIDEO_START( cga_poisk2 );
-static SCREEN_UPDATE( cga_poisk2 );
+static SCREEN_UPDATE_RGB32( cga_poisk2 );
static const mc6845_interface mc6845_cga_intf =
{
@@ -193,9 +193,8 @@ static const mc6845_interface mc6845_cga_intf =
MACHINE_CONFIG_FRAGMENT( pcvideo_cga )
MCFG_SCREEN_ADD(CGA_SCREEN_NAME, RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
- MCFG_SCREEN_UPDATE( mc6845_cga )
+ MCFG_SCREEN_UPDATE_STATIC( mc6845_cga )
MCFG_PALETTE_LENGTH(/* CGA_PALETTE_SETS * 16*/ 65536 )
MCFG_PALETTE_INIT(pc_cga)
@@ -214,14 +213,14 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_poisk2 )
MCFG_FRAGMENT_ADD( pcvideo_cga )
MCFG_VIDEO_START( cga_poisk2 )
MCFG_SCREEN_MODIFY(CGA_SCREEN_NAME)
- MCFG_SCREEN_UPDATE( cga_poisk2 )
+ MCFG_SCREEN_UPDATE_STATIC( cga_poisk2 )
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( pcvideo_pc1512 )
MCFG_FRAGMENT_ADD( pcvideo_cga )
MCFG_VIDEO_START( pc1512 )
MCFG_SCREEN_MODIFY(CGA_SCREEN_NAME)
- MCFG_SCREEN_UPDATE( mc6845_pc1512 )
+ MCFG_SCREEN_UPDATE_STATIC( mc6845_pc1512 )
MACHINE_CONFIG_END
@@ -385,11 +384,11 @@ static VIDEO_START( pc_cga32k )
memory_set_bankptr(machine,"bank11", cga.videoram);
}
-SCREEN_UPDATE( mc6845_cga )
+SCREEN_UPDATE_RGB32( mc6845_cga )
{
UINT8 *gfx = screen.machine().region("gfx1")->base();
mc6845_device *mc6845 = screen.machine().device<mc6845_device>(CGA_MC6845_NAME);
- mc6845->update( bitmap, cliprect);
+ mc6845->screen_update( screen, bitmap, cliprect);
/* Check for changes in font dipsetting */
switch ( CGA_FONT & 0x01 )
@@ -411,11 +410,11 @@ static VIDEO_START( cga_poisk2 )
cga.chr_gen = machine.region( "gfx1" )->base() + 0x0000;
}
-static SCREEN_UPDATE( cga_poisk2 )
+static SCREEN_UPDATE_RGB32( cga_poisk2 )
{
UINT8 *gfx = screen.machine().region("gfx1")->base();
mc6845_device *mc6845 = screen.machine().device<mc6845_device>(CGA_MC6845_NAME);
- mc6845->update( bitmap, cliprect);
+ mc6845->screen_update( screen, bitmap, cliprect);
/* Check for changes in font dipsetting */
switch ( CGA_FONT & 0x01 )
@@ -445,7 +444,8 @@ VIDEO_START( pc_cga_superimpose )
static MC6845_UPDATE_ROW( cga_text_inten_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -464,14 +464,14 @@ static MC6845_UPDATE_ROW( cga_text_inten_update_row )
data = 0xFF;
}
- *p = ( data & 0x80 ) ? fg : bg; p++;
- *p = ( data & 0x40 ) ? fg : bg; p++;
- *p = ( data & 0x20 ) ? fg : bg; p++;
- *p = ( data & 0x10 ) ? fg : bg; p++;
- *p = ( data & 0x08 ) ? fg : bg; p++;
- *p = ( data & 0x04 ) ? fg : bg; p++;
- *p = ( data & 0x02 ) ? fg : bg; p++;
- *p = ( data & 0x01 ) ? fg : bg; p++;
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
}
}
@@ -484,7 +484,8 @@ static MC6845_UPDATE_ROW( cga_text_inten_update_row )
static MC6845_UPDATE_ROW( cga_text_inten_comp_grey_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -503,14 +504,14 @@ static MC6845_UPDATE_ROW( cga_text_inten_comp_grey_update_row )
data = 0xFF;
}
- *p = ( data & 0x80 ) ? fg : bg; p++;
- *p = ( data & 0x40 ) ? fg : bg; p++;
- *p = ( data & 0x20 ) ? fg : bg; p++;
- *p = ( data & 0x10 ) ? fg : bg; p++;
- *p = ( data & 0x08 ) ? fg : bg; p++;
- *p = ( data & 0x04 ) ? fg : bg; p++;
- *p = ( data & 0x02 ) ? fg : bg; p++;
- *p = ( data & 0x01 ) ? fg : bg; p++;
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
}
}
@@ -522,7 +523,8 @@ static MC6845_UPDATE_ROW( cga_text_inten_comp_grey_update_row )
static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -540,14 +542,14 @@ static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row )
data = 0xFF;
}
- *p = ( data & 0x80 ) ? fg : 0; p++;
- *p = ( data & 0x40 ) ? fg : 0; p++;
- *p = ( data & 0x20 ) ? fg : 0; p++;
- *p = ( data & 0x10 ) ? fg : 0; p++;
- *p = ( data & 0x08 ) ? fg : 0; p++;
- *p = ( data & 0x04 ) ? fg : 0; p++;
- *p = ( data & 0x02 ) ? fg : 0; p++;
- *p = ( data & 0x01 ) ? fg : 0; p++;
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
}
}
@@ -560,7 +562,8 @@ static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row )
static MC6845_UPDATE_ROW( cga_text_blink_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -589,21 +592,22 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row )
}
}
- *p = ( data & 0x80 ) ? fg : bg; p++;
- *p = ( data & 0x40 ) ? fg : bg; p++;
- *p = ( data & 0x20 ) ? fg : bg; p++;
- *p = ( data & 0x10 ) ? fg : bg; p++;
- *p = ( data & 0x08 ) ? fg : bg; p++;
- *p = ( data & 0x04 ) ? fg : bg; p++;
- *p = ( data & 0x02 ) ? fg : bg; p++;
- *p = ( data & 0x01 ) ? fg : bg; p++;
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
}
}
static MC6845_UPDATE_ROW( cga_text_blink_update_row_si )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -640,7 +644,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row_si )
dot = (data & (1 << (7-xi)));
pen_data = dot ? fg : bg;
if(pen_data || dot)
- *p = pen_data;
+ *p = palette[pen_data];
p++;
}
}
@@ -654,7 +658,8 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row_si )
static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -684,14 +689,14 @@ static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row )
}
}
- *p = ( data & 0x80 ) ? fg : bg; p++;
- *p = ( data & 0x40 ) ? fg : bg; p++;
- *p = ( data & 0x20 ) ? fg : bg; p++;
- *p = ( data & 0x10 ) ? fg : bg; p++;
- *p = ( data & 0x08 ) ? fg : bg; p++;
- *p = ( data & 0x04 ) ? fg : bg; p++;
- *p = ( data & 0x02 ) ? fg : bg; p++;
- *p = ( data & 0x01 ) ? fg : bg; p++;
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
}
}
@@ -701,7 +706,8 @@ static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row )
static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -711,17 +717,17 @@ static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row )
UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
UINT8 data = videoram[ offset ];
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
data = videoram[ offset + 1 ];
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
}
}
@@ -758,7 +764,8 @@ static const UINT8 yc_lut[16][8] =
static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -769,25 +776,25 @@ static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row )
UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
UINT8 data = videoram[ offset ];
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
data = videoram[ offset + 1 ];
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data >> 4; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
- *p = data & 0x0F; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
}
}
@@ -801,7 +808,8 @@ static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row )
static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int i;
running_machine &machine = device->machine();
@@ -811,17 +819,17 @@ static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row )
UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
UINT8 data = videoram[ offset ];
- *p = cga.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ data & 0x03 ]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ data & 0x03 ]]; p++;
data = videoram[ offset+1 ];
- *p = cga.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]; p++;
- *p = cga.palette_lut_2bpp[ data & 0x03 ]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
+ *p = palette[cga.palette_lut_2bpp[ data & 0x03 ]]; p++;
}
}
@@ -836,7 +844,8 @@ static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row )
static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
UINT8 fg = cga.color_select & 0x0F;
int i;
running_machine &machine = device->machine();
@@ -847,25 +856,25 @@ static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row )
UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( ra & 1 ) << 13 );
UINT8 data = videoram[ offset ];
- *p = ( data & 0x80 ) ? fg : 0; p++;
- *p = ( data & 0x40 ) ? fg : 0; p++;
- *p = ( data & 0x20 ) ? fg : 0; p++;
- *p = ( data & 0x10 ) ? fg : 0; p++;
- *p = ( data & 0x08 ) ? fg : 0; p++;
- *p = ( data & 0x04 ) ? fg : 0; p++;
- *p = ( data & 0x02 ) ? fg : 0; p++;
- *p = ( data & 0x01 ) ? fg : 0; p++;
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
data = videoram[ offset + 1 ];
- *p = ( data & 0x80 ) ? fg : 0; p++;
- *p = ( data & 0x40 ) ? fg : 0; p++;
- *p = ( data & 0x20 ) ? fg : 0; p++;
- *p = ( data & 0x10 ) ? fg : 0; p++;
- *p = ( data & 0x08 ) ? fg : 0; p++;
- *p = ( data & 0x04 ) ? fg : 0; p++;
- *p = ( data & 0x02 ) ? fg : 0; p++;
- *p = ( data & 0x01 ) ? fg : 0; p++;
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
}
}
@@ -1218,7 +1227,7 @@ static WRITE32_HANDLER( pc_cga32le_w ) { write32le_with_write8_handler(pc_cga8_w
// proc = cga_pgfx_4bpp;
//
-//INLINE void pgfx_plot_unit_4bpp(bitmap_t &bitmap,
+//INLINE void pgfx_plot_unit_4bpp(bitmap_ind16 &bitmap,
// int x, int y, int offs)
//{
// int color, values[2];
@@ -1253,7 +1262,7 @@ static WRITE32_HANDLER( pc_cga32le_w ) { write32le_with_write8_handler(pc_cga8_w
// Second plane at CGA_base + 0x4000 / 0x6000
//***************************************************************************/
//
-//static void cga_pgfx_4bpp(bitmap_t &bitmap, struct mscrtc6845 *crtc)
+//static void cga_pgfx_4bpp(bitmap_ind16 &bitmap, struct mscrtc6845 *crtc)
//{
// int i, sx, sy, sh;
// int offs = mscrtc6845_get_start(crtc)*2;
@@ -1286,7 +1295,7 @@ static WRITE32_HANDLER( pc_cga32le_w ) { write32le_with_write8_handler(pc_cga8_w
//
//
//
-//INLINE void pgfx_plot_unit_2bpp(bitmap_t &bitmap,
+//INLINE void pgfx_plot_unit_2bpp(bitmap_ind16 &bitmap,
// int x, int y, const UINT16 *palette, int offs)
//{
// int i;
@@ -1333,7 +1342,7 @@ static WRITE32_HANDLER( pc_cga32le_w ) { write32le_with_write8_handler(pc_cga8_w
// cga fetches 2 byte per mscrtc6845 access (not modeled here)!
//***************************************************************************/
//
-//static void cga_pgfx_2bpp(bitmap_t &bitmap, struct mscrtc6845 *crtc)
+//static void cga_pgfx_2bpp(bitmap_ind16 &bitmap, struct mscrtc6845 *crtc)
//{
// int i, sx, sy, sh;
// int offs = mscrtc6845_get_start(crtc)*2;
@@ -1417,7 +1426,8 @@ static struct
static MC6845_UPDATE_ROW( pc1512_gfx_4bpp_update_row )
{
UINT8 *videoram = cga.videoram;
- UINT16 *p = &bitmap.pix16(y);
+ UINT32 *p = &bitmap.pix32(y);
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
UINT16 offset_base = ra << 13;
int j;
running_machine &machine = device->machine();
@@ -1431,14 +1441,14 @@ static MC6845_UPDATE_ROW( pc1512_gfx_4bpp_update_row )
UINT16 g = ( cga.color_select & 2 ) ? videoram[ videoram_offset[1] | offset ] << 1 : 0;
UINT16 b = ( cga.color_select & 1 ) ? videoram[ videoram_offset[0] | offset ] : 0;
- *p = ( ( i & 0x400 ) | ( r & 0x200 ) | ( g & 0x100 ) | ( b & 0x80 ) ) >> 7; p++;
- *p = ( ( i & 0x200 ) | ( r & 0x100 ) | ( g & 0x080 ) | ( b & 0x40 ) ) >> 6; p++;
- *p = ( ( i & 0x100 ) | ( r & 0x080 ) | ( g & 0x040 ) | ( b & 0x20 ) ) >> 5; p++;
- *p = ( ( i & 0x080 ) | ( r & 0x040 ) | ( g & 0x020 ) | ( b & 0x10 ) ) >> 4; p++;
- *p = ( ( i & 0x040 ) | ( r & 0x020 ) | ( g & 0x010 ) | ( b & 0x08 ) ) >> 3; p++;
- *p = ( ( i & 0x020 ) | ( r & 0x010 ) | ( g & 0x008 ) | ( b & 0x04 ) ) >> 2; p++;
- *p = ( ( i & 0x010 ) | ( r & 0x008 ) | ( g & 0x004 ) | ( b & 0x02 ) ) >> 1; p++;
- *p = ( i & 0x008 ) | ( r & 0x004 ) | ( g & 0x002 ) | ( b & 0x01 ) ; p++;
+ *p = palette[( ( i & 0x400 ) | ( r & 0x200 ) | ( g & 0x100 ) | ( b & 0x80 ) ) >> 7]; p++;
+ *p = palette[( ( i & 0x200 ) | ( r & 0x100 ) | ( g & 0x080 ) | ( b & 0x40 ) ) >> 6]; p++;
+ *p = palette[( ( i & 0x100 ) | ( r & 0x080 ) | ( g & 0x040 ) | ( b & 0x20 ) ) >> 5]; p++;
+ *p = palette[( ( i & 0x080 ) | ( r & 0x040 ) | ( g & 0x020 ) | ( b & 0x10 ) ) >> 4]; p++;
+ *p = palette[( ( i & 0x040 ) | ( r & 0x020 ) | ( g & 0x010 ) | ( b & 0x08 ) ) >> 3]; p++;
+ *p = palette[( ( i & 0x020 ) | ( r & 0x010 ) | ( g & 0x008 ) | ( b & 0x04 ) ) >> 2]; p++;
+ *p = palette[( ( i & 0x010 ) | ( r & 0x008 ) | ( g & 0x004 ) | ( b & 0x02 ) ) >> 1]; p++;
+ *p = palette[ ( i & 0x008 ) | ( r & 0x004 ) | ( g & 0x002 ) | ( b & 0x01 ) ]; p++;
}
}
@@ -1617,11 +1627,11 @@ static VIDEO_START( pc1512 )
}
-static SCREEN_UPDATE( mc6845_pc1512 )
+static SCREEN_UPDATE_RGB32( mc6845_pc1512 )
{
UINT8 *gfx = screen.machine().region("gfx1")->base();
mc6845_device *mc6845 = screen.machine().device<mc6845_device>(CGA_MC6845_NAME);
- mc6845->update(bitmap, cliprect);
+ mc6845->screen_update(screen, bitmap, cliprect);
/* Check for changes in font dipsetting */
switch ( CGA_FONT & 0x03 )
diff --git a/src/emu/video/pc_cga.h b/src/emu/video/pc_cga.h
index 081b3bbeba9..7f47ffe0d5a 100644
--- a/src/emu/video/pc_cga.h
+++ b/src/emu/video/pc_cga.h
@@ -9,7 +9,7 @@
MACHINE_CONFIG_EXTERN( pcvideo_cga );
MACHINE_CONFIG_EXTERN( pcvideo_cga32k );
INPUT_PORTS_EXTERN( pcvideo_cga );
-SCREEN_UPDATE( mc6845_cga );
+SCREEN_UPDATE_RGB32( mc6845_cga );
VIDEO_START( pc_cga_superimpose );
/* has a special 640x200 in 16 color mode, 4 banks at 0xb8000 */
diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c
index 09e3236f788..e1062e8744b 100644
--- a/src/emu/video/pc_vga.c
+++ b/src/emu/video/pc_vga.c
@@ -79,7 +79,7 @@ void pc_video_start(running_machine &machine, pc_video_update_proc (*choosevideo
-SCREEN_UPDATE( pc_video )
+SCREEN_UPDATE_IND16( pc_video )
{
UINT32 rc = 0;
int w = 0, h = 0;
@@ -991,7 +991,7 @@ static VIDEO_RESET( vga )
pc_vga_reset(machine);
}
-static void vga_vh_text(bitmap_t &bitmap)
+static void vga_vh_text(bitmap_ind16 &bitmap)
{
UINT8 ch, attr;
UINT8 bits;
@@ -1058,7 +1058,7 @@ static void vga_vh_text(bitmap_t &bitmap)
}
}
-static void vga_vh_ega(bitmap_t &bitmap)
+static void vga_vh_ega(bitmap_ind16 &bitmap)
{
int pos, line, column, c, addr, i;
int height = CRTC_CHAR_HEIGHT;
@@ -1103,7 +1103,7 @@ static void vga_vh_ega(bitmap_t &bitmap)
}
}
-static void vga_vh_vga(bitmap_t &bitmap)
+static void vga_vh_vga(bitmap_ind16 &bitmap)
{
int pos, line, column, c, addr, curr_addr;
UINT16 *bitmapline;
@@ -1244,9 +1244,8 @@ size_t pc_vga_memory_size(void)
MACHINE_CONFIG_FRAGMENT( pcvideo_vga )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,800,0,640,525,0,480)
- MCFG_SCREEN_UPDATE(pc_video)
+ MCFG_SCREEN_UPDATE_STATIC(pc_video)
MCFG_PALETTE_LENGTH(0x100)
MCFG_PALETTE_INIT(vga)
diff --git a/src/emu/video/pc_vga.h b/src/emu/video/pc_vga.h
index 54b50a3bb67..0173df5e25b 100644
--- a/src/emu/video/pc_vga.h
+++ b/src/emu/video/pc_vga.h
@@ -9,7 +9,7 @@
#ifndef PC_VGA_H
#define PC_VGA_H
-typedef void (*pc_video_update_proc)(bitmap_t &bitmap);
+typedef void (*pc_video_update_proc)(bitmap_ind16 &bitmap);
MACHINE_CONFIG_EXTERN( pcvideo_vga );
diff --git a/src/emu/video/psx.c b/src/emu/video/psx.c
index 32eae98d596..256d72fdd33 100644
--- a/src/emu/video/psx.c
+++ b/src/emu/video/psx.c
@@ -116,7 +116,7 @@ void psxgpu_device::DebugMeshInit( void )
m_debug.b_clear = 1;
m_debug.n_coord = 0;
m_debug.n_skip = 0;
- m_debug.mesh = auto_bitmap_alloc( machine(), width, height, BITMAP_FORMAT_INDEXED16 );
+ m_debug.mesh = auto_bitmap_ind16_alloc( machine(), width, height );
}
void psxgpu_device::DebugMesh( int n_coordx, int n_coordy )
@@ -317,7 +317,7 @@ void psxgpu_device::DebugCheckKeys( void )
#endif
}
-int psxgpu_device::DebugMeshDisplay( bitmap_t &bitmap, const rectangle &cliprect )
+int psxgpu_device::DebugMeshDisplay( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
if( m_debug.mesh )
{
@@ -327,7 +327,7 @@ int psxgpu_device::DebugMeshDisplay( bitmap_t &bitmap, const rectangle &cliprect
return m_debug.b_mesh;
}
-int psxgpu_device::DebugTextureDisplay( bitmap_t &bitmap )
+int psxgpu_device::DebugTextureDisplay( bitmap_ind16 &bitmap )
{
UINT32 n_y;
@@ -600,7 +600,7 @@ void psxgpu_device::psx_gpu_init( int n_gputype )
machine().save().register_postload( save_prepost_delegate( FUNC( psxgpu_device::updatevisiblearea ), this ) );
}
-void psxgpu_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 psxgpu_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT32 n_x;
UINT32 n_y;
@@ -617,11 +617,11 @@ void psxgpu_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
#if defined( MAME_DEBUG )
if( DebugMeshDisplay( bitmap, cliprect ) )
{
- return;
+ return 0;
}
if( DebugTextureDisplay( bitmap ) )
{
- return;
+ return 0;
}
#endif
@@ -743,6 +743,7 @@ void psxgpu_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
}
}
}
+ return 0;
}
#define WRITE_PIXEL( p ) *( p_vram ) = p
@@ -3688,21 +3689,19 @@ PALETTE_INIT( psx )
}
}
-SCREEN_UPDATE( psx )
+SCREEN_UPDATE_IND16( psx )
{
psxgpu_device *gpu = downcast<psxgpu_device *>(screen.owner());
- gpu->update_screen( bitmap, cliprect );
- return 0;
+ return gpu->update_screen( screen, bitmap, cliprect );
}
MACHINE_CONFIG_FRAGMENT( psxgpu )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( 60 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC( 0 ))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 1024, 1024 )
MCFG_SCREEN_VISIBLE_AREA( 0, 639, 0, 479 )
- MCFG_SCREEN_UPDATE( psx )
+ MCFG_SCREEN_UPDATE_STATIC( psx )
((screen_device *)device)->register_vblank_callback(vblank_state_delegate(FUNC(psxgpu_device::vblank), (psxgpu_device *) owner));
MCFG_PALETTE_LENGTH( 65536 )
diff --git a/src/emu/video/psx.h b/src/emu/video/psx.h
index 000cbb45f91..f242457cba2 100644
--- a/src/emu/video/psx.h
+++ b/src/emu/video/psx.h
@@ -47,7 +47,7 @@ extern const device_type CXD8654Q;
typedef struct _psx_gpu_debug psx_gpu_debug;
struct _psx_gpu_debug
{
- bitmap_t *mesh;
+ bitmap_ind16 *mesh;
int b_clear;
int b_mesh;
int n_skip;
@@ -181,7 +181,7 @@ public:
psxgpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
virtual machine_config_constructor device_mconfig_additions() const;
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
WRITE32_MEMBER( write );
READ32_MEMBER( read );
void dma_read( UINT32 n_address, INT32 n_size );
@@ -221,8 +221,8 @@ protected:
void DebugMesh( int n_coordx, int n_coordy );
void DebugMeshEnd( void );
void DebugCheckKeys( void );
- int DebugMeshDisplay( bitmap_t &bitmap, const rectangle &cliprect );
- int DebugTextureDisplay( bitmap_t &bitmap );
+ int DebugMeshDisplay( bitmap_ind16 &bitmap, const rectangle &cliprect );
+ int DebugTextureDisplay( bitmap_ind16 &bitmap );
#endif
INT32 m_n_tx;
diff --git a/src/emu/video/s2636.c b/src/emu/video/s2636.c
index 51664fcc6ee..de58c2c68b9 100644
--- a/src/emu/video/s2636.c
+++ b/src/emu/video/s2636.c
@@ -104,8 +104,8 @@ struct _s2636_state
int y_offset;
int x_offset;
- bitmap_t *bitmap;
- bitmap_t *collision_bitmap;
+ bitmap_ind16 *bitmap;
+ bitmap_ind16 *collision_bitmap;
};
/*************************************
@@ -136,7 +136,7 @@ INLINE const s2636_interface *get_interface( device_t *device )
*
*************************************/
-static void draw_sprite( UINT8 *gfx, int color, int y, int x, int expand, int or_mode, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprite( UINT8 *gfx, int color, int y, int x, int expand, int or_mode, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int sy;
@@ -254,7 +254,7 @@ static int check_collision( device_t *device, int spriteno1, int spriteno2, cons
*
*************************************/
-bitmap_t &s2636_update( device_t *device, const rectangle &cliprect )
+bitmap_ind16 &s2636_update( device_t *device, const rectangle &cliprect )
{
s2636_state *s2636 = get_safe_token(device);
UINT8 collision = 0;
@@ -360,8 +360,8 @@ static DEVICE_START( s2636 )
s2636->y_offset = intf->y_offset;
s2636->work_ram = auto_alloc_array_clear(device->machine(), UINT8, intf->work_ram_size);
- s2636->bitmap = auto_bitmap_alloc(device->machine(), width, height, BITMAP_FORMAT_INDEXED16);
- s2636->collision_bitmap = auto_bitmap_alloc(device->machine(), width, height, BITMAP_FORMAT_INDEXED16);
+ s2636->bitmap = auto_bitmap_ind16_alloc(device->machine(), width, height);
+ s2636->collision_bitmap = auto_bitmap_ind16_alloc(device->machine(), width, height);
device->save_item(NAME(s2636->x_offset));
device->save_item(NAME(s2636->y_offset));
diff --git a/src/emu/video/s2636.h b/src/emu/video/s2636.h
index c50d1caa14e..1ca2bc21067 100644
--- a/src/emu/video/s2636.h
+++ b/src/emu/video/s2636.h
@@ -49,11 +49,11 @@ DECLARE_LEGACY_DEVICE(S2636, s2636);
*************************************/
-/* returns a BITMAP_FORMAT_INDEXED16 bitmap the size of the screen
+/* returns a BITMAP_FORMAT_IND16 bitmap the size of the screen
D0-D2 of each pixel is the pixel color
D3 indicates whether the S2636 drew this pixel - 0 = not drawn, 1 = drawn */
-bitmap_t &s2636_update( device_t *device, const rectangle &cliprect );
+bitmap_ind16 &s2636_update( device_t *device, const rectangle &cliprect );
WRITE8_DEVICE_HANDLER( s2636_work_ram_w );
READ8_DEVICE_HANDLER( s2636_work_ram_r );
diff --git a/src/emu/video/saa5050.c b/src/emu/video/saa5050.c
index bcdd19b2ff7..4b36bd77ff3 100644
--- a/src/emu/video/saa5050.c
+++ b/src/emu/video/saa5050.c
@@ -206,7 +206,7 @@ void saa5050_frame_advance( device_t *device )
saa5050->frame_count = 0;
}
-void saa5050_update( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void saa5050_update( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
saa5050_state *saa5050 = get_safe_token(device);
int code, colour;
diff --git a/src/emu/video/saa5050.h b/src/emu/video/saa5050.h
index 95672103b57..1f3dc816f08 100644
--- a/src/emu/video/saa5050.h
+++ b/src/emu/video/saa5050.h
@@ -41,7 +41,7 @@ DECLARE_LEGACY_DEVICE(SAA5050, saa5050);
DEVICE I/O FUNCTIONS
***************************************************************************/
-void saa5050_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+void saa5050_update(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
void saa5050_frame_advance(device_t *device);
GFXDECODE_EXTERN( saa5050 );
diff --git a/src/emu/video/sed1330.c b/src/emu/video/sed1330.c
index 33c3852ac09..ca68c992e67 100644
--- a/src/emu/video/sed1330.c
+++ b/src/emu/video/sed1330.c
@@ -582,7 +582,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
// draw_text_scanline -
//-------------------------------------------------
-void sed1330_device::draw_text_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 va)
+void sed1330_device::draw_text_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 va)
{
int sx, x;
@@ -623,7 +623,7 @@ void sed1330_device::draw_text_scanline(bitmap_t &bitmap, const rectangle &clipr
// draw_graphics_scanline -
//-------------------------------------------------
-void sed1330_device::draw_graphics_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 va)
+void sed1330_device::draw_graphics_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 va)
{
int sx, x;
@@ -644,7 +644,7 @@ void sed1330_device::draw_graphics_scanline(bitmap_t &bitmap, const rectangle &c
// update_graphics -
//-------------------------------------------------
-void sed1330_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect)
+void sed1330_device::update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
}
@@ -653,7 +653,7 @@ void sed1330_device::update_graphics(bitmap_t &bitmap, const rectangle &cliprect
// update_text -
//-------------------------------------------------
-void sed1330_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
+void sed1330_device::update_text(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int y;
@@ -683,10 +683,10 @@ void sed1330_device::update_text(bitmap_t &bitmap, const rectangle &cliprect)
//-------------------------------------------------
-// update_screen -
+// screen_update -
//-------------------------------------------------
-void sed1330_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 sed1330_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_d)
{
@@ -699,4 +699,5 @@ void sed1330_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
update_text(bitmap, cliprect);
}
}
+ return 0;
}
diff --git a/src/emu/video/sed1330.h b/src/emu/video/sed1330.h
index 638227aba45..b865fc5940e 100644
--- a/src/emu/video/sed1330.h
+++ b/src/emu/video/sed1330.h
@@ -49,7 +49,7 @@ public:
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -64,10 +64,10 @@ protected:
inline void writebyte(offs_t address, UINT8 m_data);
inline void increment_csr();
- void draw_text_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 va);
- void draw_graphics_scanline(bitmap_t &bitmap, const rectangle &cliprect, int y, UINT16 va);
- void update_graphics(bitmap_t &bitmap, const rectangle &cliprect);
- void update_text(bitmap_t &bitmap, const rectangle &cliprect);
+ void draw_text_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 va);
+ void draw_graphics_scanline(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, UINT16 va);
+ void update_graphics(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void update_text(bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
int m_bf; // busy flag
diff --git a/src/emu/video/tms9928a.c b/src/emu/video/tms9928a.c
index 5edf0776159..d5f1a86d00b 100644
--- a/src/emu/video/tms9928a.c
+++ b/src/emu/video/tms9928a.c
@@ -276,7 +276,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
int vpos = m_screen->vpos();
UINT16 BackColour = m_Regs[7] & 15;
- UINT16 *p = &m_tmpbmp->pix16(vpos);
+ UINT16 *p = &m_tmpbmp.pix16(vpos);
int y = vpos - m_top_border;
@@ -571,9 +571,10 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par
}
-void tms9928a_device::update( bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 tms9928a_device::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- copybitmap( bitmap, *m_tmpbmp, 0, 0, 0, 0, cliprect );
+ copybitmap( bitmap, m_tmpbmp, 0, 0, 0, 0, cliprect );
+ return 0;
}
@@ -608,7 +609,7 @@ void tms9928a_device::device_start()
m_vMem = auto_alloc_array_clear(machine(), UINT8, m_vram_size);
/* back bitmap */
- m_tmpbmp = auto_bitmap_alloc(machine(), TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_PAL, m_screen->format());
+ m_tmpbmp.allocate(TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_PAL);
m_line_timer = timer_alloc(TIMER_LINE);
diff --git a/src/emu/video/tms9928a.h b/src/emu/video/tms9928a.h
index 91f888413e9..f5cd1542d8f 100644
--- a/src/emu/video/tms9928a.h
+++ b/src/emu/video/tms9928a.h
@@ -56,14 +56,12 @@
#define MCFG_TMS9928A_SCREEN_ADD_NTSC(_screen_tag) \
MCFG_SCREEN_ADD( _screen_tag, RASTER ) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \
TMS9928A_TOTAL_VERT_NTSC, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC + 192 + 12 )
#define MCFG_TMS9928A_SCREEN_ADD_PAL(_screen_tag) \
MCFG_SCREEN_ADD(_screen_tag, RASTER ) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \
TMS9928A_TOTAL_VERT_PAL, TMS9928A_VERT_DISPLAY_START_PAL - 12, TMS9928A_VERT_DISPLAY_START_PAL + 192 + 12 )
@@ -104,7 +102,8 @@ public:
DECLARE_WRITE8_MEMBER( register_write );
/* update the screen */
- void update( bitmap_t &bitmap, const rectangle &cliprect );
+ UINT32 screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
+ bitmap_ind16 &get_bitmap() { return m_tmpbmp; }
protected:
// device-level overrides
@@ -148,7 +147,7 @@ private:
const address_space_config m_space_config;
UINT8 *m_vMem;
- bitmap_t *m_tmpbmp;
+ bitmap_ind16 m_tmpbmp;
emu_timer *m_line_timer;
UINT8 m_mode;
diff --git a/src/emu/video/upd3301.c b/src/emu/video/upd3301.c
index ca8f037078b..47683b57d55 100644
--- a/src/emu/video/upd3301.c
+++ b/src/emu/video/upd3301.c
@@ -618,7 +618,7 @@ void upd3301_device::draw_scanline()
// update_screen -
//-------------------------------------------------
-void upd3301_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 upd3301_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_status & STATUS_VE)
{
@@ -650,4 +650,5 @@ void upd3301_device::update_screen(bitmap_t &bitmap, const rectangle &cliprect)
{
bitmap.fill(get_black_pen(machine()), cliprect);
}
+ return 0;
}
diff --git a/src/emu/video/upd3301.h b/src/emu/video/upd3301.h
index 45c3fd6f9d1..7f9c82759fe 100644
--- a/src/emu/video/upd3301.h
+++ b/src/emu/video/upd3301.h
@@ -66,8 +66,8 @@
// ======================> upd3301_display_pixels_func
-typedef void (*upd3301_display_pixels_func)(device_t *device, bitmap_t &bitmap, int y, int sx, UINT8 cc, UINT8 lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa);
-#define UPD3301_DISPLAY_PIXELS(name) void name(device_t *device, bitmap_t &bitmap, int y, int sx, UINT8 cc, UINT8 lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa)
+typedef void (*upd3301_display_pixels_func)(device_t *device, bitmap_ind16 &bitmap, int y, int sx, UINT8 cc, UINT8 lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa);
+#define UPD3301_DISPLAY_PIXELS(name) void name(device_t *device, bitmap_ind16 &bitmap, int y, int sx, UINT8 cc, UINT8 lc, int hlgt, int rvv, int vsp, int sl0, int sl12, int csr, int gpa)
// ======================> upd3301_interface
@@ -103,7 +103,7 @@ public:
DECLARE_READ_LINE_MEMBER( hrtc_r );
DECLARE_READ_LINE_MEMBER( vrtc_r );
- void update_screen(bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -136,7 +136,7 @@ private:
screen_device *m_screen;
// screen drawing
- bitmap_t *m_bitmap; // bitmap
+ bitmap_ind16 *m_bitmap; // bitmap
int m_y; // current scanline
int m_hrtc; // horizontal retrace
int m_vrtc; // vertical retrace
diff --git a/src/emu/video/v9938.c b/src/emu/video/v9938.c
index 1485c01f317..c7fde0f4db6 100644
--- a/src/emu/video/v9938.c
+++ b/src/emu/video/v9938.c
@@ -20,61 +20,6 @@
#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-typedef struct {
- /* general */
- int model;
- int offset_x, offset_y, visible_y, mode;
- /* palette */
- int pal_write_first, cmd_write_first;
- UINT8 pal_write, cmd_write;
- UINT8 palReg[32], statReg[10], contReg[48], read_ahead;
- /* memory */
- UINT16 address_latch;
- UINT8 *vram, *vram_exp;
- int vram_size;
- /* interrupt */
- UINT8 INT;
- void (*INTCallback)(running_machine &, int);
- int scanline;
- /* blinking */
- int blink, blink_count;
- /* sprites */
- int sprite_limit;
- /* size */
- int size, size_old, size_auto, size_now;
- /* mouse */
- UINT8 mx_delta, my_delta;
- /* mouse & lightpen */
- UINT8 button_state;
- /* palette */
- UINT16 pal_ind16[16];
- UINT16 pal_ind256[256];
- /* render screen */
- screen_device *screen;
- /* render bitmap */
- bitmap_t *bitmap;
- /* Command unit */
- struct {
- int SX,SY;
- int DX,DY;
- int TX,TY;
- int NX,NY;
- int MX;
- int ASX,ADX,ANX;
- UINT8 CL;
- UINT8 LO;
- UINT8 CM;
- UINT8 MXS, MXD;
- } MMC;
- int VdpOpsCnt;
- void (*VdpEngine)(void);
-} V9938;
-
-static UINT16 *pal_indYJK;
-
-static V9938 vdps[2];
-static V9938 *vdp = NULL;
-
#define V9938_MODE_TEXT1 (0)
#define V9938_MODE_MULTI (1)
#define V9938_MODE_GRAPHIC1 (2)
@@ -94,13 +39,160 @@ static const char *const v9938_modes[] = {
"UNKNOWN"
};
-static void v9938_register_write (running_machine &machine, int reg, int data);
-static void v9938_update_command (void);
-static void v9938_cpu_to_vdp (UINT8 V);
-static UINT8 v9938_command_unit_w (UINT8 Op);
-static UINT8 v9938_vdp_to_cpu (void);
-static void v9938_set_mode (void);
-static void v9938_refresh_line (running_machine &machine, bitmap_t &bmp, int line);
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// devices
+const device_type V9938 = &device_creator<v9938_device>;
+const device_type V9958 = &device_creator<v9958_device>;
+
+v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, type, name, shortname, tag, owner, clock),
+ m_model(0),
+ m_offset_x(0),
+ m_offset_y(0),
+ m_visible_y(0),
+ m_mode(0),
+ m_pal_write_first(0),
+ m_cmd_write_first(0),
+ m_pal_write(0),
+ m_cmd_write(0),
+ m_read_ahead(0),
+ m_address_latch(0),
+ m_vram_exp(NULL),
+ m_vram_size(0),
+ m_int_state(0),
+ m_int_callback_device_name(NULL),
+ m_scanline(0),
+ m_blink(0),
+ m_blink_count(0),
+ m_sprite_limit(0),
+ m_size(0),
+ m_size_old(0),
+ m_size_auto(0),
+ m_size_now(0),
+ m_mx_delta(0),
+ m_my_delta(0),
+ m_button_state(0),
+ m_screen(NULL),
+ m_screen_name(NULL),
+ m_vdp_ops_count(0),
+ m_vdp_engine(NULL)
+{
+}
+
+v9938_device::v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : v99x8_device(mconfig, V9938, "V9938", "v9938", tag, owner, clock)
+{
+ m_model = MODEL_V9938;
+}
+
+v9958_device::v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : v99x8_device(mconfig, V9938, "V9938", "v9938", tag, owner, clock)
+{
+ m_model = MODEL_V9958;
+}
+
+
+int v99x8_device::interrupt ()
+{
+ int scanline, max, pal, scanline_start;
+
+ update_command ();
+
+ pal = m_cont_reg[9] & 2;
+ if (pal) scanline_start = 53; else scanline_start = 22;
+
+ // set flags
+ if (m_scanline == (m_offset_y + scanline_start) )
+ {
+ m_stat_reg[2] &= ~0x40;
+ }
+ else if (m_scanline == (m_offset_y + m_visible_y + scanline_start) )
+ {
+ m_stat_reg[2] |= 0x40;
+ m_stat_reg[0] |= 0x80;
+ }
+
+ max = (pal) ? 255 : (m_cont_reg[9] & 0x80) ? 234 : 244;
+ scanline = (m_scanline - scanline_start - m_offset_y);
+ if ( (scanline >= 0) && (scanline <= max) &&
+ ( ( (scanline + m_cont_reg[23]) & 255) == m_cont_reg[19]) )
+ {
+ m_stat_reg[1] |= 1;
+ LOG(("V9938: scanline interrupt (%d)\n", scanline));
+ }
+ else
+ if ( !(m_cont_reg[0] & 0x10) ) m_stat_reg[1] &= 0xfe;
+
+ check_int ();
+
+ // check for start of vblank
+ if ((pal && (m_scanline == 310)) ||
+ (!pal && (m_scanline == 259)))
+ interrupt_start_vblank ();
+
+ // render the current line
+ if ((m_scanline >= scanline_start) && (m_scanline < (212 + 28 + scanline_start)))
+ {
+ scanline = (m_scanline - scanline_start) & 255;
+
+ refresh_line (scanline);
+ }
+
+ max = (m_cont_reg[9] & 2) ? 313 : 262;
+ if (++m_scanline == max)
+ m_scanline = 0;
+
+ return m_int_state;
+}
+
+void v99x8_device::set_resolution (int i)
+{
+ if (i == RENDER_AUTO)
+ {
+ m_size_auto = 1;
+ }
+ else
+ {
+ m_size = i;
+ m_size_auto = 0;
+ }
+}
+
+/*
+ Not really right... won't work with sprites in graphics 7
+ and with palette updated mid-screen
+*/
+int v99x8_device::get_transpen()
+{
+ if (m_mode == V9938_MODE_GRAPHIC7)
+ {
+ return m_pal_ind256[0];
+ }
+ else
+ {
+ return m_pal_ind16[0];
+ }
+}
+
+/*
+ Driver-specific function: update the vdp mouse state
+*/
+void v99x8_device::update_mouse_state(int mx_delta, int my_delta, int button_state)
+{
+ // save button state
+ m_button_state = (button_state << 6) & 0xc0;
+
+ if ((m_cont_reg[8] & 0xc0) == 0x80)
+ { // vdp will process mouse deltas only if it is in mouse mode
+ m_mx_delta += mx_delta;
+ m_my_delta += my_delta;
+ }
+}
+
+
/***************************************************************************
@@ -140,7 +232,7 @@ PALETTE_INIT( v9938 )
{
int i;
- /* create the full 512 colour palette */
+ // create the full 512 colour palette
for (i=0;i<512;i++)
palette_set_color_rgb(machine, i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0));
}
@@ -151,27 +243,30 @@ The v9958 can display up to 19286 colours. For this we need a larger palette.
The colours are encoded in 17 bits; however there are just 19268 different colours.
Here we calculate the palette and a 2^17 reference table to the palette,
-which is: pal_indYJK. It's 256K in size, but I can't think of a faster way
+which is: s_pal_indYJK. It's 256K in size, but I can't think of a faster way
to emulate this. Also it keeps the palette a reasonable size. :)
*/
+UINT16 *v99x8_device::s_pal_indYJK;
+
PALETTE_INIT( v9958 )
{
int r,g,b,y,j,k,i,k0,j0,n;
UINT8 pal[19268*3];
- /* init v9938 512-color palette */
+ // init v9938 512-color palette
PALETTE_INIT_CALL(v9938);
+
+ if (v99x8_device::s_pal_indYJK == NULL)
+ v99x8_device::s_pal_indYJK = global_alloc_array(UINT16, 0x20000);
- /* set up YJK table */
- pal_indYJK = auto_alloc_array(machine, UINT16, 0x20000);
-
+ // set up YJK table
LOG(("Building YJK table for V9958 screens, may take a while ... \n"));
i = 0;
for (y=0;y<32;y++) for (k=0;k<64;k++) for (j=0;j<64;j++)
{
- /* calculate the color */
+ // calculate the color
if (k >= 32) k0 = (k - 64); else k0 = k;
if (j >= 32) j0 = (j - 64); else j0 = j;
r = y + j0;
@@ -184,13 +279,13 @@ PALETTE_INIT( v9958 )
r = (r << 3) | (r >> 2);
b = (b << 3) | (b >> 2);
g = (g << 3) | (g >> 2);
- /* have we seen this one before? */
+ // have we seen this one before?
n = 0;
while (n < i)
{
if (pal[n*3+0] == r && pal[n*3+1] == g && pal[n*3+2] == b)
{
- pal_indYJK[y | j << 5 | k << (5 + 6)] = n + 512;
+ v99x8_device::s_pal_indYJK[y | j << 5 | k << (5 + 6)] = n + 512;
break;
}
n++;
@@ -198,12 +293,12 @@ PALETTE_INIT( v9958 )
if (i == n)
{
- /* so we haven't; add it */
+ // so we haven't; add it
pal[i*3+0] = r;
pal[i*3+1] = g;
pal[i*3+2] = b;
palette_set_color(machine, i+512, MAKE_RGB(r, g, b));
- pal_indYJK[y | j << 5 | k << (5 + 6)] = i + 512;
+ v99x8_device::s_pal_indYJK[y | j << 5 | k << (5 + 6)] = i + 512;
i++;
}
}
@@ -212,6 +307,12 @@ PALETTE_INIT( v9958 )
LOG( ("Table creation failed - %d colours out of 19286 created\n", i));
}
+UINT32 v99x8_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
+ return 0;
+}
+
/*
so lookups for screen 12 will look like:
@@ -221,361 +322,364 @@ PALETTE_INIT( v9958 )
ind = (*data & 7) << 11 | (*(data + 1) & 7) << 14 |
(*(data + 2) & 7) << 5 | (*(data + 3) & 7) << 8;
- pixel0 = pal_indYJK[ind | (*data >> 3) & 31];
- pixel1 = pal_indYJK[ind | (*(data + 1) >> 3) & 31];
- pixel2 = pal_indYJK[ind | (*(data + 2) >> 3) & 31];
- pixel3 = pal_indYJK[ind | (*(data + 3) >> 3) & 31];
+ pixel0 = s_pal_indYJK[ind | (*data >> 3) & 31];
+ pixel1 = s_pal_indYJK[ind | (*(data + 1) >> 3) & 31];
+ pixel2 = s_pal_indYJK[ind | (*(data + 2) >> 3) & 31];
+ pixel3 = s_pal_indYJK[ind | (*(data + 3) >> 3) & 31];
and for screen 11:
-pixel0 = (*data) & 8 ? pal_ind16[(*data) >> 4] : pal_indYJK[ind | (*data >> 3) & 30];
-pixel1 = *(data+1) & 8 ? pal_ind16[*(data+1) >> 4] : pal_indYJK[ind | *(data+1) >> 3) & 30];
-pixel2 = *(data+2) & 8 ? pal_ind16[*(data+2) >> 4] : pal_indYJK[ind | *(data+2) >> 3) & 30];
-pixel3 = *(data+3) & 8 ? pal_ind16[*(data+3) >> 4] : pal_indYJK[ind | *(data+3) >> 3) & 30];
+pixel0 = (*data) & 8 ? pal_ind16[(*data) >> 4] : s_pal_indYJK[ind | (*data >> 3) & 30];
+pixel1 = *(data+1) & 8 ? pal_ind16[*(data+1) >> 4] : s_pal_indYJK[ind | *(data+1) >> 3) & 30];
+pixel2 = *(data+2) & 8 ? pal_ind16[*(data+2) >> 4] : s_pal_indYJK[ind | *(data+2) >> 3) & 30];
+pixel3 = *(data+3) & 8 ? pal_ind16[*(data+3) >> 4] : s_pal_indYJK[ind | *(data+3) >> 3) & 30];
*/
-static void v9938_palette_w(UINT8 data)
+READ8_MEMBER( v99x8_device::read )
+{
+ switch (offset & 3)
{
- int indexp;
-
- if (vdp->pal_write_first)
- {
- /* store in register */
- indexp = vdp->contReg[0x10] & 15;
- vdp->palReg[indexp*2] = vdp->pal_write & 0x77;
- vdp->palReg[indexp*2+1] = data & 0x07;
- /* update palette */
- vdp->pal_ind16[indexp] = (((int)vdp->pal_write << 2) & 0x01c0) |
- (((int)data << 3) & 0x0038) |
- ((int)vdp->pal_write & 0x0007);
-
- vdp->contReg[0x10] = (vdp->contReg[0x10] + 1) & 15;
- vdp->pal_write_first = 0;
- }
- else
- {
- vdp->pal_write = data;
- vdp->pal_write_first = 1;
- }
+ case 0: return vram_r();
+ case 1: return status_r();
}
+ return 0xff;
+}
-WRITE8_HANDLER( v9938_0_palette_w )
+WRITE8_MEMBER( v99x8_device::write )
{
- vdp = &vdps[0];
- v9938_palette_w(data);
+ switch (offset & 3)
+ {
+ case 0: vram_w(data); break;
+ case 1: command_w(data); break;
+ case 2: palette_w(data); break;
+ case 3: register_w(data); break;
+ }
}
-WRITE8_HANDLER( v9938_1_palette_w )
+UINT8 v99x8_device::vram_r()
{
- vdp = &vdps[1];
- v9938_palette_w(data);
-}
+ UINT8 ret;
+ int address;
-static void v9938_reset_palette (void)
- {
- /* taken from V9938 Technical Data book, page 148. it's in G-R-B format */
- static const UINT8 pal16[16*3] = {
- 0, 0, 0, /* 0: black/transparent */
- 0, 0, 0, /* 1: black */
- 6, 1, 1, /* 2: medium green */
- 7, 3, 3, /* 3: light green */
- 1, 1, 7, /* 4: dark blue */
- 3, 2, 7, /* 5: light blue */
- 1, 5, 1, /* 6: dark red */
- 6, 2, 7, /* 7: cyan */
- 1, 7, 1, /* 8: medium red */
- 3, 7, 3, /* 9: light red */
- 6, 6, 1, /* 10: dark yellow */
- 6, 6, 4, /* 11: light yellow */
- 4, 1, 1, /* 12: dark green */
- 2, 6, 5, /* 13: magenta */
- 5, 5, 5, /* 14: gray */
- 7, 7, 7 /* 15: white */
- };
- int i, red, ind;
+ address = ((int)m_cont_reg[14] << 14) | m_address_latch;
- for (i=0;i<16;i++)
- {
- /* set the palette registers */
- vdp->palReg[i*2+0] = pal16[i*3+1] << 4 | pal16[i*3+2];
- vdp->palReg[i*2+1] = pal16[i*3];
- /* set the reference table */
- vdp->pal_ind16[i] = pal16[i*3+1] << 6 | pal16[i*3] << 3 | pal16[i*3+2];
- }
+ m_cmd_write_first = 0;
- /* set internal palette GRAPHIC 7 */
- for (i=0;i<256;i++)
- {
- ind = (i << 4) & 0x01c0;
- ind |= (i >> 2) & 0x0038;
- red = (i << 1) & 6; if (red == 6) red++;
- ind |= red;
+ ret = m_read_ahead;
- vdp->pal_ind256[i] = ind;
- }
+ if (m_cont_reg[45] & 0x40)
+ {
+ if ( (m_mode == V9938_MODE_GRAPHIC6) || (m_mode == V9938_MODE_GRAPHIC7) )
+ address >>= 1; // correct?
+ // correct?
+ if (m_vram_exp && address < 0x10000)
+ m_read_ahead = m_vram_exp[address];
+ else
+ m_read_ahead = 0xff;
+ }
+ else
+ {
+ m_read_ahead = vram_read (address);
}
-/***************************************************************************
+ m_address_latch = (m_address_latch + 1) & 0x3fff;
+ if ((!m_address_latch) && (m_cont_reg[0] & 0x0c) ) // correct ???
+ {
+ m_cont_reg[14] = (m_cont_reg[14] + 1) & 7;
+ }
- Memory functions
+ return ret;
+}
-***************************************************************************/
+UINT8 v99x8_device::status_r()
+{
+ int reg;
+ UINT8 ret;
-static void v9938_vram_write (int offset, int data)
- {
- int newoffset;
+ m_cmd_write_first = 0;
- if ( (vdp->mode == V9938_MODE_GRAPHIC6) || (vdp->mode == V9938_MODE_GRAPHIC7) )
- {
- newoffset = ((offset & 1) << 16) | (offset >> 1);
- if (newoffset < vdp->vram_size)
- vdp->vram[newoffset] = data;
- }
- else
- {
- if (offset < vdp->vram_size)
- vdp->vram[offset] = data;
- }
+ reg = m_cont_reg[15] & 0x0f;
+ if (reg > 9)
+ return 0xff;
+
+ switch (reg)
+ {
+ case 0:
+ ret = m_stat_reg[0];
+ m_stat_reg[0] &= 0x1f;
+ break;
+ case 1:
+ ret = m_stat_reg[1];
+ m_stat_reg[1] &= 0xfe;
+ if ((m_cont_reg[8] & 0xc0) == 0x80)
+ // mouse mode: add button state
+ ret |= m_button_state & 0xc0;
+ break;
+ case 2:
+ /*update_command ();*/
+/*
+ WTF is this? Whatever this was intended to do, it is nonsensical.
+ Might as well pick a random number....
+ This was an attempt to emulate H-Blank flag ;)
+ n = cycles_currently_ran ();
+ if ( (n < 28) || (n > 199) ) vdp.statReg[2] |= 0x20;
+ else vdp.statReg[2] &= ~0x20;
+*/
+ if (machine().rand() & 1) m_stat_reg[2] |= 0x20;
+ else m_stat_reg[2] &= ~0x20;
+ ret = m_stat_reg[2];
+ break;
+ case 3:
+ if ((m_cont_reg[8] & 0xc0) == 0x80)
+ { // mouse mode: return x mouse delta
+ ret = m_mx_delta;
+ m_mx_delta = 0;
+ }
+ else
+ ret = m_stat_reg[3];
+ break;
+ case 5:
+ if ((m_cont_reg[8] & 0xc0) == 0x80)
+ { // mouse mode: return y mouse delta
+ ret = m_my_delta;
+ m_my_delta = 0;
+ }
+ else
+ ret = m_stat_reg[5];
+ break;
+ case 7:
+ ret = m_stat_reg[7];
+ m_stat_reg[7] = m_cont_reg[44] = vdp_to_cpu () ;
+ break;
+ default:
+ ret = m_stat_reg[reg];
+ break;
}
-static int v9938_vram_read (int offset)
+ LOG(("V9938: Read %02x from S#%d\n", ret, reg));
+ check_int ();
+
+ return ret;
+}
+
+void v99x8_device::palette_w(UINT8 data)
+{
+ int indexp;
+
+ if (m_pal_write_first)
{
- if ( (vdp->mode == V9938_MODE_GRAPHIC6) || (vdp->mode == V9938_MODE_GRAPHIC7) )
- return vdp->vram[((offset & 1) << 16) | (offset >> 1)];
+ // store in register
+ indexp = m_cont_reg[0x10] & 15;
+ m_pal_reg[indexp*2] = m_pal_write & 0x77;
+ m_pal_reg[indexp*2+1] = data & 0x07;
+ // update palette
+ m_pal_ind16[indexp] = (((int)m_pal_write << 2) & 0x01c0) |
+ (((int)data << 3) & 0x0038) |
+ ((int)m_pal_write & 0x0007);
+
+ m_cont_reg[0x10] = (m_cont_reg[0x10] + 1) & 15;
+ m_pal_write_first = 0;
+ }
else
- return vdp->vram[offset];
+ {
+ m_pal_write = data;
+ m_pal_write_first = 1;
}
+}
-static void v9938_vram_w( UINT8 data )
- {
+void v99x8_device::vram_w(UINT8 data)
+{
int address;
- /*v9938_update_command ();*/
+ /*update_command ();*/
- vdp->cmd_write_first = 0;
+ m_cmd_write_first = 0;
- address = ((int)vdp->contReg[14] << 14) | vdp->address_latch;
+ address = ((int)m_cont_reg[14] << 14) | m_address_latch;
- if (vdp->contReg[45] & 0x40)
+ if (m_cont_reg[45] & 0x40)
{
- if ( (vdp->mode == V9938_MODE_GRAPHIC6) || (vdp->mode == V9938_MODE_GRAPHIC7) )
- address >>= 1; /* correct? */
- if (vdp->vram_exp && address < 0x10000)
- vdp->vram_exp[address] = data;
+ if ( (m_mode == V9938_MODE_GRAPHIC6) || (m_mode == V9938_MODE_GRAPHIC7) )
+ address >>= 1; // correct?
+ if (m_vram_exp && address < 0x10000)
+ m_vram_exp[address] = data;
}
else
{
- v9938_vram_write (address, data);
+ vram_write (address, data);
}
- vdp->address_latch = (vdp->address_latch + 1) & 0x3fff;
- if ((!vdp->address_latch) && (vdp->contReg[0] & 0x0c) ) /* correct ??? */
- {
- vdp->contReg[14] = (vdp->contReg[14] + 1) & 7;
- }
+ m_address_latch = (m_address_latch + 1) & 0x3fff;
+ if ((!m_address_latch) && (m_cont_reg[0] & 0x0c) ) // correct ???
+ {
+ m_cont_reg[14] = (m_cont_reg[14] + 1) & 7;
}
-
-WRITE8_HANDLER (v9938_0_vram_w)
-{
- vdp = &vdps[0];
- v9938_vram_w( data );
}
-WRITE8_HANDLER (v9938_1_vram_w)
+void v99x8_device::command_w(UINT8 data)
{
- vdp = &vdps[1];
- v9938_vram_w( data );
-}
-
-static UINT8 v9938_vram_r(void)
+ if (m_cmd_write_first)
{
- UINT8 ret;
- int address;
-
- address = ((int)vdp->contReg[14] << 14) | vdp->address_latch;
-
- vdp->cmd_write_first = 0;
-
- ret = vdp->read_ahead;
-
- if (vdp->contReg[45] & 0x40)
- {
- if ( (vdp->mode == V9938_MODE_GRAPHIC6) || (vdp->mode == V9938_MODE_GRAPHIC7) )
- address >>= 1; /* correct? */
- /* correct? */
- if (vdp->vram_exp && address < 0x10000)
- vdp->read_ahead = vdp->vram_exp[address];
- else
- vdp->read_ahead = 0xff;
- }
- else
+ if (data & 0x80)
{
- vdp->read_ahead = v9938_vram_read (address);
+ if (!(data & 0x40))
+ register_write (data & 0x3f, m_cmd_write);
}
-
- vdp->address_latch = (vdp->address_latch + 1) & 0x3fff;
- if ((!vdp->address_latch) && (vdp->contReg[0] & 0x0c) ) /* correct ??? */
+ else
{
- vdp->contReg[14] = (vdp->contReg[14] + 1) & 7;
+ m_address_latch =
+ (((UINT16)data << 8) | m_cmd_write) & 0x3fff;
+ if ( !(data & 0x40) ) vram_r (); // read ahead!
}
- return ret;
+ m_cmd_write_first = 0;
+ }
+ else
+ {
+ m_cmd_write = data;
+ m_cmd_write_first = 1;
}
+}
-READ8_HANDLER (v9938_0_vram_r)
+void v99x8_device::register_w(UINT8 data)
{
- vdp = &vdps[0];
- return v9938_vram_r();
+ int reg;
+
+ reg = m_cont_reg[17] & 0x3f;
+ if (reg != 17)
+ register_write (reg, data); // true ?
+
+ if (!(m_cont_reg[17] & 0x80))
+ m_cont_reg[17] = (m_cont_reg[17] + 1) & 0x3f;
}
-READ8_HANDLER (v9938_1_vram_r)
+void v99x8_device::static_set_screen(device_t &device, const char *screen_name)
{
- vdp = &vdps[1];
- return v9938_vram_r();
+ downcast<v99x8_device &>(device).m_screen_name = screen_name;
}
-static void v9938_command_w(running_machine &machine, UINT8 data)
- {
- if (vdp->cmd_write_first)
- {
- if (data & 0x80)
- {
- if (!(data & 0x40))
- v9938_register_write (machine, data & 0x3f, vdp->cmd_write);
- }
- else
- {
- vdp->address_latch =
- (((UINT16)data << 8) | vdp->cmd_write) & 0x3fff;
- if ( !(data & 0x40) ) v9938_vram_r (); /* read ahead! */
- }
-
- vdp->cmd_write_first = 0;
- }
- else
- {
- vdp->cmd_write = data;
- vdp->cmd_write_first = 1;
- }
- }
-
-WRITE8_HANDLER (v9938_0_command_w)
+void v99x8_device::static_set_vram_size(device_t &device, UINT32 vram_size)
{
- vdp = &vdps[0];
- v9938_command_w(space->machine(), data);
+ downcast<v99x8_device &>(device).m_vram_size = vram_size;
}
-WRITE8_HANDLER (v9938_1_command_w)
+void v99x8_device::static_set_interrupt_callback(device_t &device, v99x8_interrupt_delegate callback, const char *device_name)
{
- vdp = &vdps[1];
- v9938_command_w(space->machine(), data);
+ v99x8_device &v99x8 = downcast<v99x8_device &>(device);
+ v99x8.m_int_callback = callback;
+ v99x8.m_int_callback_device_name = device_name;
}
+
/***************************************************************************
Init/stop/reset/Interrupt functions
***************************************************************************/
-void v9938_init (running_machine &machine, int which, screen_device &screen, bitmap_t &bitmap, int model, int vram_size, void (*callback)(running_machine &, int) )
+void v99x8_device::device_start()
{
- vdp = &vdps[which];
-
- memset (vdp, 0, sizeof (*vdp) );
+ // find our devices
+ m_screen = machine().device<screen_device>(m_screen_name);
+ assert(m_screen != NULL);
+ if (!m_screen->started())
+ throw device_missing_dependencies();
+
+ if (!m_int_callback.isnull())
+ {
+ device_t *device = (m_int_callback_device_name != NULL) ? machine().device(m_int_callback_device_name) : NULL;
+ if (device != NULL)
+ m_int_callback.late_bind(*device);
+ }
- vdp->VdpOpsCnt = 1;
- vdp->VdpEngine = NULL;
+ m_vdp_ops_count = 1;
+ m_vdp_engine = NULL;
- vdp->screen = &screen;
- vdp->bitmap = &bitmap;
- vdp->model = model;
- vdp->vram_size = vram_size;
- vdp->INTCallback = callback;
- vdp->size_old = -1;
+ m_bitmap.allocate(m_screen->width(), m_screen->height());
+ m_size_old = -1;
- /* allocate VRAM */
- vdp->vram = auto_alloc_array_clear(machine, UINT8, 0x20000);
- if (vdp->vram_size < 0x20000)
+ // allocate VRAM
+ assert(m_vram_size > 0);
+ memset(m_vram, 0, sizeof(m_vram));
+ if (m_vram_size < 0x20000)
{
- /* set unavailable RAM to 0xff */
- memset (vdp->vram + vdp->vram_size, 0xff, (0x20000 - vdp->vram_size) );
+ // set unavailable RAM to 0xff
+ memset (m_vram + m_vram_size, 0xff, (sizeof(m_vram) - m_vram_size) );
}
- /* do we have expanded memory? */
- if (vdp->vram_size > 0x20000)
- vdp->vram_exp = auto_alloc_array_clear(machine, UINT8, 0x10000);
+ // do we have expanded memory?
+ if (m_vram_size > 0x20000)
+ m_vram_exp = auto_alloc_array_clear(machine(), UINT8, 0x10000);
else
- vdp->vram_exp = NULL;
-
- state_save_register_item(machine, "v9938", NULL, which, vdp->offset_x);
- state_save_register_item(machine, "v9938", NULL, which, vdp->offset_y);
- state_save_register_item(machine, "v9938", NULL, which, vdp->visible_y);
- state_save_register_item(machine, "v9938", NULL, which, vdp->mode);
- state_save_register_item(machine, "v9938", NULL, which, vdp->pal_write_first);
- state_save_register_item(machine, "v9938", NULL, which, vdp->cmd_write_first);
- state_save_register_item(machine, "v9938", NULL, which, vdp->pal_write);
- state_save_register_item(machine, "v9938", NULL, which, vdp->cmd_write);
- state_save_register_item_array(machine, "v9938", NULL, which, vdp->palReg);
- state_save_register_item_array(machine, "v9938", NULL, which, vdp->statReg);
- state_save_register_item_array(machine, "v9938", NULL, which, vdp->contReg);
- state_save_register_item(machine, "v9938", NULL, which, vdp->read_ahead);
- state_save_register_item_pointer(machine, "v9938", NULL, which, vdp->vram, 0x20000);
- if ( vdp->vram_exp != NULL )
- state_save_register_item_pointer(machine, "v9938", NULL, which, vdp->vram_exp, 0x10000);
- state_save_register_item(machine, "v9938", NULL, which, vdp->INT);
- state_save_register_item(machine, "v9938", NULL, which, vdp->scanline);
- state_save_register_item(machine, "v9938", NULL, which, vdp->blink);
- state_save_register_item(machine, "v9938", NULL, which, vdp->blink_count);
- state_save_register_item(machine, "v9938", NULL, which, vdp->size);
- state_save_register_item(machine, "v9938", NULL, which, vdp->size_old);
- state_save_register_item(machine, "v9938", NULL, which, vdp->size_auto);
- state_save_register_item(machine, "v9938", NULL, which, vdp->size_now);
- state_save_register_item(machine, "v9938", NULL, which, vdp->mx_delta);
- state_save_register_item(machine, "v9938", NULL, which, vdp->my_delta);
- state_save_register_item(machine, "v9938", NULL, which, vdp->button_state);
- state_save_register_item_array(machine, "v9938", NULL, which, vdp->pal_ind16);
- state_save_register_item_array(machine, "v9938", NULL, which, vdp->pal_ind256);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.SX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.SY);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.DX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.DY);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.TX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.TY);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.NX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.NY);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.MX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.ASX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.ADX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.ANX);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.CL);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.LO);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.CM);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.MXS);
- state_save_register_item(machine, "v9938", NULL, which, vdp->MMC.MXD);
- state_save_register_item(machine, "v9938", NULL, which, vdp->VdpOpsCnt);
-}
-
-void v9938_reset (int which)
+ m_vram_exp = NULL;
+
+ save_item(NAME(m_offset_x));
+ save_item(NAME(m_offset_y));
+ save_item(NAME(m_visible_y));
+ save_item(NAME(m_mode));
+ save_item(NAME(m_pal_write_first));
+ save_item(NAME(m_cmd_write_first));
+ save_item(NAME(m_pal_write));
+ save_item(NAME(m_cmd_write));
+ save_item(NAME(m_pal_reg));
+ save_item(NAME(m_stat_reg));
+ save_item(NAME(m_cont_reg));
+ save_item(NAME(m_read_ahead));
+ save_item(NAME(m_vram));
+ if ( m_vram_exp != NULL )
+ save_pointer(NAME(m_vram_exp), 0x10000);
+ save_item(NAME(m_int_state));
+ save_item(NAME(m_scanline));
+ save_item(NAME(m_blink));
+ save_item(NAME(m_blink_count));
+ save_item(NAME(m_size));
+ save_item(NAME(m_size_old));
+ save_item(NAME(m_size_auto));
+ save_item(NAME(m_size_now));
+ save_item(NAME(m_mx_delta));
+ save_item(NAME(m_my_delta));
+ save_item(NAME(m_button_state));
+ save_item(NAME(m_pal_ind16));
+ save_item(NAME(m_pal_ind256));
+ save_item(NAME(m_mmc.SX));
+ save_item(NAME(m_mmc.SY));
+ save_item(NAME(m_mmc.DX));
+ save_item(NAME(m_mmc.DY));
+ save_item(NAME(m_mmc.TX));
+ save_item(NAME(m_mmc.TY));
+ save_item(NAME(m_mmc.NX));
+ save_item(NAME(m_mmc.NY));
+ save_item(NAME(m_mmc.MX));
+ save_item(NAME(m_mmc.ASX));
+ save_item(NAME(m_mmc.ADX));
+ save_item(NAME(m_mmc.ANX));
+ save_item(NAME(m_mmc.CL));
+ save_item(NAME(m_mmc.LO));
+ save_item(NAME(m_mmc.CM));
+ save_item(NAME(m_mmc.MXS));
+ save_item(NAME(m_mmc.MXD));
+ save_item(NAME(m_vdp_ops_count));
+}
+
+void v99x8_device::device_reset()
{
int i;
- vdp = &vdps[which];
-
- /* offset reset */
- vdp->offset_x = 8;
- vdp->offset_y = 8 + 16;
- vdp->visible_y = 192;
- /* register reset */
- v9938_reset_palette (); /* palette registers */
- for (i=0;i<10;i++) vdp->statReg[i] = 0;
- vdp->statReg[2] = 0x0c;
- if (vdp->model == MODEL_V9958) vdp->statReg[1] |= 4;
- for (i=0;i<48;i++) vdp->contReg[i] = 0;
- vdp->cmd_write_first = vdp->pal_write_first = 0;
- vdp->INT = 0;
- vdp->read_ahead = 0; vdp->address_latch = 0; /* ??? */
- vdp->scanline = 0;
+ // offset reset
+ m_offset_x = 8;
+ m_offset_y = 8 + 16;
+ m_visible_y = 192;
+ // register reset
+ reset_palette (); // palette registers
+ for (i=0;i<10;i++) m_stat_reg[i] = 0;
+ m_stat_reg[2] = 0x0c;
+ if (m_model == MODEL_V9958) m_stat_reg[1] |= 4;
+ for (i=0;i<48;i++) m_cont_reg[i] = 0;
+ m_cmd_write_first = m_pal_write_first = 0;
+ m_int_state = 0;
+ m_read_ahead = 0; m_address_latch = 0; // ???
+ m_scanline = 0;
// MZ: The status registers 4 and 6 hold the high bits of the sprite
// collision location. The unused bits are set to 1.
// SR3: x x x x x x x x
@@ -586,89 +690,123 @@ void v9938_reset (int which)
// apart the tms9929 from the v99x8.
// TODO: SR3-S6 do not yet store the information about the sprite collision
- vdp->statReg[4] = 0xfe;
- vdp->statReg[6] = 0xfc;
+ m_stat_reg[4] = 0xfe;
+ m_stat_reg[6] = 0xfc;
}
-static void v9938_check_int (running_machine &machine)
- {
- UINT8 n;
-
- n = ( (vdp->contReg[1] & 0x20) && (vdp->statReg[0] & 0x80) /*&& vdp->vblank_int*/) ||
- ( (vdp->statReg[1] & 0x01) && (vdp->contReg[0] & 0x10) );
-#if 0
- if(n && vdp->vblank_int)
- {
- vdp->vblank_int = 0;
- }
-#endif
- if (n != vdp->INT)
- {
- vdp->INT = n;
- LOG(("V9938: IRQ line %s\n", n ? "up" : "down"));
- }
- /*
- ** Somehow the IRQ request is going down without cpu_irq_line () being
- ** called; because of this Mr. Ghost, Xevious and SD Snatcher don't
- ** run. As a patch it's called every scanline
- */
- vdp->INTCallback (machine, n);
- }
+void v99x8_device::reset_palette ()
+ {
+ // taken from V9938 Technical Data book, page 148. it's in G-R-B format
+ static const UINT8 pal16[16*3] = {
+ 0, 0, 0, // 0: black/transparent
+ 0, 0, 0, // 1: black
+ 6, 1, 1, // 2: medium green
+ 7, 3, 3, // 3: light green
+ 1, 1, 7, // 4: dark blue
+ 3, 2, 7, // 5: light blue
+ 1, 5, 1, // 6: dark red
+ 6, 2, 7, // 7: cyan
+ 1, 7, 1, // 8: medium red
+ 3, 7, 3, // 9: light red
+ 6, 6, 1, // 10: dark yellow
+ 6, 6, 4, // 11: light yellow
+ 4, 1, 1, // 12: dark green
+ 2, 6, 5, // 13: magenta
+ 5, 5, 5, // 14: gray
+ 7, 7, 7 // 15: white
+ };
+ int i, red, ind;
-void v9938_set_sprite_limit (int which, int i)
+ for (i=0;i<16;i++)
{
- vdp = &vdps[which];
- vdp->sprite_limit = i;
+ // set the palette registers
+ m_pal_reg[i*2+0] = pal16[i*3+1] << 4 | pal16[i*3+2];
+ m_pal_reg[i*2+1] = pal16[i*3];
+ // set the reference table
+ m_pal_ind16[i] = pal16[i*3+1] << 6 | pal16[i*3] << 3 | pal16[i*3+2];
}
-void v9938_set_resolution (int which, int i)
+ // set internal palette GRAPHIC 7
+ for (i=0;i<256;i++)
{
- vdp = &vdps[which];
- if (i == RENDER_AUTO)
- {
- vdp->size_auto = 1;
- }
- else
- {
- vdp->size = i;
- vdp->size_auto = 0;
- }
+ ind = (i << 4) & 0x01c0;
+ ind |= (i >> 2) & 0x0038;
+ red = (i << 1) & 6; if (red == 6) red++;
+ ind |= red;
+
+ m_pal_ind256[i] = ind;
}
+}
/***************************************************************************
- Register functions
+ Memory functions
***************************************************************************/
-static void v9938_register_w(running_machine &machine, UINT8 data)
+void v99x8_device::vram_write (int offset, int data)
{
- int reg;
-
- reg = vdp->contReg[17] & 0x3f;
- if (reg != 17)
- v9938_register_write (machine, reg, data); /* true ? */
+ int newoffset;
- if (!(vdp->contReg[17] & 0x80))
- vdp->contReg[17] = (vdp->contReg[17] + 1) & 0x3f;
+ if ( (m_mode == V9938_MODE_GRAPHIC6) || (m_mode == V9938_MODE_GRAPHIC7) )
+ {
+ newoffset = ((offset & 1) << 16) | (offset >> 1);
+ if (newoffset < m_vram_size)
+ m_vram[newoffset] = data;
+ }
+ else
+ {
+ if (offset < m_vram_size)
+ m_vram[offset] = data;
+ }
}
-WRITE8_HANDLER (v9938_0_register_w)
+int v99x8_device::vram_read (int offset)
{
- vdp = &vdps[0];
- v9938_register_w(space->machine(), data);
+ if ( (m_mode == V9938_MODE_GRAPHIC6) || (m_mode == V9938_MODE_GRAPHIC7) )
+ return m_vram[((offset & 1) << 16) | (offset >> 1)];
+ else
+ return m_vram[offset];
}
-WRITE8_HANDLER (v9938_1_register_w)
+void v99x8_device::check_int ()
{
- vdp = &vdps[1];
- v9938_register_w(space->machine(), data);
+ UINT8 n;
+
+ n = ( (m_cont_reg[1] & 0x20) && (m_stat_reg[0] & 0x80) /*&& m_vblank_int*/) ||
+ ( (m_stat_reg[1] & 0x01) && (m_cont_reg[0] & 0x10) );
+
+#if 0
+ if(n && m_vblank_int)
+ {
+ m_vblank_int = 0;
+ }
+#endif
+
+ if (n != m_int_state)
+ {
+ m_int_state = n;
+ LOG(("V9938: IRQ line %s\n", n ? "up" : "down"));
+ }
+
+ /*
+ ** Somehow the IRQ request is going down without cpu_irq_line () being
+ ** called; because of this Mr. Ghost, Xevious and SD Snatcher don't
+ ** run. As a patch it's called every scanline
+ */
+ m_int_callback (*this, n);
}
-static void v9938_register_write (running_machine &machine, int reg, int data)
+/***************************************************************************
+
+ Register functions
+
+***************************************************************************/
+
+void v99x8_device::register_write (int reg, int data)
{
static UINT8 const reg_mask[] =
{
@@ -681,7 +819,7 @@ static void v9938_register_write (running_machine &machine, int reg, int data)
if (reg <= 27)
{
data &= reg_mask[reg];
- if (vdp->contReg[reg] == data)
+ if (m_cont_reg[reg] == data)
return;
}
@@ -691,40 +829,40 @@ static void v9938_register_write (running_machine &machine, int reg, int data)
return;
}
- /*v9938_update_command (); */
+ /*update_command ();*/
switch (reg) {
- /* registers that affect interrupt and display mode */
+ // registers that affect interrupt and display mode
case 0:
case 1:
- vdp->contReg[reg] = data;
- v9938_set_mode ();
- v9938_check_int (machine);
- LOG(("V9938: mode = %s\n", v9938_modes[vdp->mode]));
+ m_cont_reg[reg] = data;
+ set_mode ();
+ check_int ();
+ LOG(("V9938: mode = %s\n", v9938_modes[m_mode]));
break;
case 18:
case 9:
- vdp->contReg[reg] = data;
- /* recalc offset */
- vdp->offset_x = (( (~vdp->contReg[18] - 8) & 0x0f) + 1);
- vdp->offset_y = ((~(vdp->contReg[18]>>4) - 8) & 0x0f) + 7;
- if (vdp->contReg[9] & 0x80)
+ m_cont_reg[reg] = data;
+ // recalc offset
+ m_offset_x = (( (~m_cont_reg[18] - 8) & 0x0f) + 1);
+ m_offset_y = ((~(m_cont_reg[18]>>4) - 8) & 0x0f) + 7;
+ if (m_cont_reg[9] & 0x80)
{
- vdp->visible_y = 212;
+ m_visible_y = 212;
}
else
{
- vdp->visible_y = 192;
- vdp->offset_y += 10;
+ m_visible_y = 192;
+ m_offset_y += 10;
}
break;
case 15:
- vdp->pal_write_first = 0;
+ m_pal_write_first = 0;
break;
- /* color burst registers aren't emulated */
+ // color burst registers aren't emulated
case 20:
case 21:
case 22:
@@ -734,7 +872,7 @@ static void v9938_register_write (running_machine &machine, int reg, int data)
case 25:
case 26:
case 27:
- if (vdp->model != MODEL_V9958)
+ if (m_model != MODEL_V9958)
{
LOG(("V9938: Attempting to write %02xh to V9958 R#%d\n", data, reg));
data = 0;
@@ -742,567 +880,1178 @@ static void v9938_register_write (running_machine &machine, int reg, int data)
break;
case 44:
- v9938_cpu_to_vdp (data);
+ cpu_to_vdp (data);
break;
case 46:
- v9938_command_unit_w (data);
+ command_unit_w (data);
break;
}
if (reg != 15)
LOG(("V9938: Write %02x to R#%d\n", data, reg));
- vdp->contReg[reg] = data;
+ m_cont_reg[reg] = data;
+}
+
+/***************************************************************************
+
+ Refresh / render function
+
+***************************************************************************/
+
+#define V9938_SECOND_FIELD ( !(((m_cont_reg[9] & 0x04) && !(m_stat_reg[2] & 2)) || m_blink))
+
+/*
+ * This file is included for a number of different situations:
+ * _Width : can be 512 + 32 or 256 + 16
+ * V9938_BPP : can be 8 or 16
+ */
+
+
+template<typename _PixelType, int _Width>
+void v99x8_device::default_border(const pen_t *pens, _PixelType *ln)
+{
+ _PixelType pen;
+ int i;
+
+ pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ i = _Width;
+ while (i--) *ln++ = pen;
+
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::graphic7_border(const pen_t *pens, _PixelType *ln)
+{
+ _PixelType pen;
+ int i;
+
+ pen = pens[m_pal_ind256[m_cont_reg[7]]];
+ i = _Width;
+ while (i--) *ln++ = pen;
+
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
}
-static UINT8 v9938_status_r(running_machine &machine)
+template<typename _PixelType, int _Width>
+void v99x8_device::graphic5_border(const pen_t *pens, _PixelType *ln)
+{
+ int i;
+ _PixelType pen0;
+ if (_Width > 512)
{
- int reg;
- UINT8 ret;
+ _PixelType pen1;
+
+ pen1 = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]];
+ pen0 = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+ i = (_Width) / 2;
+ while (i--) { *ln++ = pen0; *ln++ = pen1; }
+ }
+ else
+ {
+ pen0 = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+ i = _Width;
+ while (i--) *ln++ = pen0;
+ }
+ m_size_now = RENDER_HIGH;
+}
- vdp->cmd_write_first = 0;
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_text1(const pen_t *pens, _PixelType *ln, int line)
+{
+ int pattern, x, xx, name, xxx;
+ _PixelType fg, bg, pen;
+ UINT8 *nametbl, *patterntbl;
- reg = vdp->contReg[15] & 0x0f;
- if (reg > 9)
- return 0xff;
+ patterntbl = m_vram + (m_cont_reg[4] << 11);
+ nametbl = m_vram + (m_cont_reg[2] << 10);
- switch (reg)
+ fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]];
+ bg = pens[m_pal_ind16[m_cont_reg[7] & 15]];
+
+ name = (line/8)*40;
+
+ pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+
+ xxx = m_offset_x + 8;
+ if (_Width > 512)
+ xxx *= 2;
+ while (xxx--) *ln++ = pen;
+
+ for (x=0;x<40;x++)
+ {
+ pattern = patterntbl[(nametbl[name] * 8) +
+ ((line + m_cont_reg[23]) & 7)];
+ for (xx=0;xx<6;xx++)
{
- case 0:
- ret = vdp->statReg[0];
- vdp->statReg[0] &= 0x1f;
- break;
- case 1:
- ret = vdp->statReg[1];
- vdp->statReg[1] &= 0xfe;
- if ((vdp->contReg[8] & 0xc0) == 0x80)
- /* mouse mode: add button state */
- ret |= vdp->button_state & 0xc0;
- break;
- case 2:
- /*v9938_update_command ();*/
-/*
- WTF is this? Whatever this was intended to do, it is nonsensical.
- Might as well pick a random number....
- This was an attempt to emulate H-Blank flag ;)
- n = cycles_currently_ran ();
- if ( (n < 28) || (n > 199) ) vdp.statReg[2] |= 0x20;
- else vdp.statReg[2] &= ~0x20;
-*/
- if (machine.rand() & 1) vdp->statReg[2] |= 0x20;
- else vdp->statReg[2] &= ~0x20;
- ret = vdp->statReg[2];
- break;
- case 3:
- if ((vdp->contReg[8] & 0xc0) == 0x80)
- { /* mouse mode: return x mouse delta */
- ret = vdp->mx_delta;
- vdp->mx_delta = 0;
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ if (_Width > 512)
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ pattern <<= 1;
+ }
+ /* width height 212, characters start repeating at the bottom */
+ name = (name + 1) & 0x3ff;
+ }
+
+ xxx = (16 - m_offset_x) + 8;
+ if (_Width > 512)
+ xxx *= 2;
+ while (xxx--) *ln++ = pen;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_text2(const pen_t *pens, _PixelType *ln, int line)
+{
+ int pattern, x, charcode, name, xxx, patternmask, colourmask;
+ _PixelType fg, bg, fg0, bg0, pen;
+ UINT8 *nametbl, *patterntbl, *colourtbl;
+
+ patterntbl = m_vram + (m_cont_reg[4] << 11);
+ colourtbl = m_vram + ((m_cont_reg[3] & 0xf8) << 6) + (m_cont_reg[10] << 14);
+#if 0
+ colourmask = ((m_cont_reg[3] & 7) << 5) | 0x1f; /* cause a bug in Forth+ v1.0 on Geneve */
+#else
+ colourmask = ((m_cont_reg[3] & 7) << 6) | 0x3f; /* verify! */
+#endif
+ nametbl = m_vram + ((m_cont_reg[2] & 0xfc) << 10);
+ patternmask = ((m_cont_reg[2] & 3) << 10) | 0x3ff; /* seems correct */
+
+ fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]];
+ bg = pens[m_pal_ind16[m_cont_reg[7] & 15]];
+ fg0 = pens[m_pal_ind16[m_cont_reg[12] >> 4]];
+ bg0 = pens[m_pal_ind16[m_cont_reg[12] & 15]];
+
+ name = (line/8)*80;
+
+ xxx = m_offset_x + 8;
+ pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width > 512)
+ xxx *= 2;
+ while (xxx--) *ln++ = pen;
+
+ for (x=0;x<80;x++)
+ {
+ charcode = nametbl[name&patternmask];
+ if (m_blink)
+ {
+ pattern = colourtbl[(name/8)&colourmask];
+ if (pattern & (0x80 >> (name & 7) ) )
+ {
+ pattern = patterntbl[(charcode * 8) +
+ ((line + m_cont_reg[23]) & 7)];
+
+ if (_Width > 512)
+ {
+ *ln++ = (pattern & 0x80) ? fg0 : bg0;
+ *ln++ = (pattern & 0x40) ? fg0 : bg0;
+ *ln++ = (pattern & 0x20) ? fg0 : bg0;
+ *ln++ = (pattern & 0x10) ? fg0 : bg0;
+ *ln++ = (pattern & 0x08) ? fg0 : bg0;
+ *ln++ = (pattern & 0x04) ? fg0 : bg0;
+ }
+ else
+ {
+ *ln++ = (pattern & 0x80) ? fg0 : bg0;
+ *ln++ = (pattern & 0x20) ? fg0 : bg0;
+ *ln++ = (pattern & 0x08) ? fg0 : bg0;
+ }
+
+ name++;
+ continue;
}
- else
- ret = vdp->statReg[3];
- break;
- case 5:
- if ((vdp->contReg[8] & 0xc0) == 0x80)
- { /* mouse mode: return y mouse delta */
- ret = vdp->my_delta;
- vdp->my_delta = 0;
+ }
+
+ pattern = patterntbl[(charcode * 8) +
+ ((line + m_cont_reg[23]) & 7)];
+
+ if (_Width > 512)
+ {
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ *ln++ = (pattern & 0x40) ? fg : bg;
+ *ln++ = (pattern & 0x20) ? fg : bg;
+ *ln++ = (pattern & 0x10) ? fg : bg;
+ *ln++ = (pattern & 0x08) ? fg : bg;
+ *ln++ = (pattern & 0x04) ? fg : bg;
+ }
+ else
+ {
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ *ln++ = (pattern & 0x20) ? fg : bg;
+ *ln++ = (pattern & 0x08) ? fg : bg;
+ }
+
+ name++;
+ }
+
+ xxx = 16 - m_offset_x + 8;
+ if (_Width > 512)
+ xxx *= 2;
+ while (xxx--) *ln++ = pen;
+ m_size_now = RENDER_HIGH;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_multi(const pen_t *pens, _PixelType *ln, int line)
+{
+ UINT8 *nametbl, *patterntbl, colour;
+ int name, line2, x, xx;
+ _PixelType pen, pen_bg;
+
+ nametbl = m_vram + (m_cont_reg[2] << 10);
+ patterntbl = m_vram + (m_cont_reg[4] << 11);
+
+ line2 = (line - m_cont_reg[23]) & 255;
+ name = (line2/8)*32;
+
+ pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width < 512)
+ xx = m_offset_x;
+ else
+ xx = m_offset_x * 2;
+ while (xx--) *ln++ = pen_bg;
+
+ for (x=0;x<32;x++)
+ {
+ colour = patterntbl[(nametbl[name] * 8) + ((line2/4)&7)];
+ pen = pens[m_pal_ind16[colour>>4]];
+ /* eight pixels */
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ if (_Width > 512)
+ {
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ }
+ pen = pens[m_pal_ind16[colour&15]];
+ /* eight pixels */
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ if (_Width > 512)
+ {
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ *ln++ = pen;
+ }
+ name++;
+ }
+
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen_bg;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic1(const pen_t *pens, _PixelType *ln, int line)
+{
+ _PixelType fg, bg, pen;
+ UINT8 *nametbl, *patterntbl, *colourtbl;
+ int pattern, x, xx, line2, name, charcode, colour, xxx;
+
+ nametbl = m_vram + (m_cont_reg[2] << 10);
+ colourtbl = m_vram + (m_cont_reg[3] << 6) + (m_cont_reg[10] << 14);
+ patterntbl = m_vram + (m_cont_reg[4] << 11);
+
+ line2 = (line - m_cont_reg[23]) & 255;
+
+ name = (line2/8)*32;
+
+ pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width < 512)
+ xxx = m_offset_x;
+ else
+ xxx = m_offset_x * 2;
+ while (xxx--) *ln++ = pen;
+
+ for (x=0;x<32;x++)
+ {
+ charcode = nametbl[name];
+ colour = colourtbl[charcode/8];
+ fg = pens[m_pal_ind16[colour>>4]];
+ bg = pens[m_pal_ind16[colour&15]];
+ pattern = patterntbl[charcode * 8 + (line2 & 7)];
+
+ for (xx=0;xx<8;xx++)
+ {
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ if (_Width > 512)
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ pattern <<= 1;
+ }
+ name++;
+ }
+
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic23(const pen_t *pens, _PixelType *ln, int line)
+{
+ _PixelType fg, bg, pen;
+ UINT8 *nametbl, *patterntbl, *colourtbl;
+ int pattern, x, xx, line2, name, charcode,
+ colour, colourmask, patternmask, xxx;
+
+ colourmask = (m_cont_reg[3] & 0x7f) * 8 | 7;
+ patternmask = (m_cont_reg[4] & 0x03) * 256 | (colourmask & 255);
+
+ nametbl = m_vram + (m_cont_reg[2] << 10);
+ colourtbl = m_vram + ((m_cont_reg[3] & 0x80) << 6) + (m_cont_reg[10] << 14);
+ patterntbl = m_vram + ((m_cont_reg[4] & 0x3c) << 11);
+
+ line2 = (line + m_cont_reg[23]) & 255;
+ name = (line2/8)*32;
+
+ pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width < 512)
+ xxx = m_offset_x;
+ else
+ xxx = m_offset_x * 2;
+ while (xxx--) *ln++ = pen;
+
+ for (x=0;x<32;x++)
+ {
+ charcode = nametbl[name] + (line2&0xc0)*4;
+ colour = colourtbl[(charcode&colourmask)*8+(line2&7)];
+ pattern = patterntbl[(charcode&patternmask)*8+(line2&7)];
+ fg = pens[m_pal_ind16[colour>>4]];
+ bg = pens[m_pal_ind16[colour&15]];
+ for (xx=0;xx<8;xx++)
+ {
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ if (_Width > 512)
+ *ln++ = (pattern & 0x80) ? fg : bg;
+ pattern <<= 1;
+ }
+ name++;
+ }
+
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic4(const pen_t *pens, _PixelType *ln, int line)
+{
+ UINT8 *nametbl, colour;
+ int line2, linemask, x, xx;
+ _PixelType pen, pen_bg;
+
+ linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7;
+
+ line2 = ((line + m_cont_reg[23]) & linemask) & 255;
+
+ nametbl = m_vram + ((m_cont_reg[2] & 0x40) << 10) + line2 * 128;
+ if ( (m_cont_reg[2] & 0x20) && (V9938_SECOND_FIELD) )
+ nametbl += 0x8000;
+
+ pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width < 512)
+ xx = m_offset_x;
+ else
+ xx = m_offset_x * 2;
+ while (xx--) *ln++ = pen_bg;
+
+ for (x=0;x<128;x++)
+ {
+ colour = *nametbl++;
+ pen = pens[m_pal_ind16[colour>>4]];
+ *ln++ = pen;
+ if (_Width > 512)
+ *ln++ = pen;
+ pen = pens[m_pal_ind16[colour&15]];
+ *ln++ = pen;
+ if (_Width > 512)
+ *ln++ = pen;
+ }
+
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen_bg;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic5(const pen_t *pens, _PixelType *ln, int line)
+{
+ UINT8 *nametbl, colour;
+ int line2, linemask, x, xx;
+ _PixelType pen_bg0[4];
+ _PixelType pen_bg1[4];
+
+ linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7;
+
+ line2 = ((line + m_cont_reg[23]) & linemask) & 255;
+
+ nametbl = m_vram + ((m_cont_reg[2] & 0x40) << 10) + line2 * 128;
+ if ( (m_cont_reg[2] & 0x20) && (V9938_SECOND_FIELD) )
+ nametbl += 0x8000;
+
+ if (_Width > 512)
+ {
+ pen_bg1[0] = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]];
+ pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+
+ xx = m_offset_x;
+ while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; }
+
+ x = (m_cont_reg[8] & 0x20) ? 0 : 1;
+
+ for (;x<4;x++)
+ {
+ pen_bg0[x] = pens[m_pal_ind16[x]];
+ pen_bg1[x] = pens[m_pal_ind16[x]];
+ }
+
+ for (x=0;x<128;x++)
+ {
+ colour = *nametbl++;
+
+ *ln++ = pen_bg0[colour>>6];
+ *ln++ = pen_bg1[(colour>>4)&3];
+ *ln++ = pen_bg0[(colour>>2)&3];
+ *ln++ = pen_bg1[(colour&3)];
+ }
+
+ pen_bg1[0] = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]];
+ pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+ xx = 16 - m_offset_x;
+ while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; }
+ }
+ else
+ {
+ pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+
+ x = (m_cont_reg[8] & 0x20) ? 0 : 1;
+
+ for (;x<4;x++)
+ pen_bg0[x] = pens[m_pal_ind16[x]];
+
+ xx = m_offset_x;
+ while (xx--) *ln++ = pen_bg0[0];
+
+ for (x=0;x<128;x++)
+ {
+ colour = *nametbl++;
+ *ln++ = pen_bg0[colour>>6];
+ *ln++ = pen_bg0[(colour>>2)&3];
+ }
+
+ pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]];
+ xx = 16 - m_offset_x;
+ while (xx--) *ln++ = pen_bg0[0];
+ }
+ m_size_now = RENDER_HIGH;
+}
+
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic6(const pen_t *pens, _PixelType *ln, int line)
+{
+ UINT8 colour;
+ int line2, linemask, x, xx, nametbl;
+ _PixelType pen_bg, fg0;
+ _PixelType fg1;
+
+ linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7;
+
+ line2 = ((line + m_cont_reg[23]) & linemask) & 255;
+
+ nametbl = line2 << 8 ;
+ if ( (m_cont_reg[2] & 0x20) && (V9938_SECOND_FIELD) )
+ nametbl += 0x10000;
+
+ pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]];
+ if (_Width < 512)
+ xx = m_offset_x;
+ else
+ xx = m_offset_x * 2;
+ while (xx--) *ln++ = pen_bg;
+
+ if (m_cont_reg[2] & 0x40)
+ {
+ for (x=0;x<32;x++)
+ {
+ nametbl++;
+ colour = m_vram[((nametbl&1) << 16) | (nametbl>>1)];
+ fg0 = pens[m_pal_ind16[colour>>4]];
+ if (_Width < 512)
+ {
+ *ln++ = fg0; *ln++ = fg0;
+ *ln++ = fg0; *ln++ = fg0;
+ *ln++ = fg0; *ln++ = fg0;
+ *ln++ = fg0; *ln++ = fg0;
}
else
- ret = vdp->statReg[5];
- break;
- case 7:
- ret = vdp->statReg[7];
- vdp->statReg[7] = vdp->contReg[44] = v9938_vdp_to_cpu () ;
- break;
- default:
- ret = vdp->statReg[reg];
- break;
+ {
+ fg1 = pens[m_pal_ind16[colour&15]];
+ *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
+ *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
+ *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
+ *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
+ }
+ nametbl += 7;
}
+ }
+ else
+ {
+ for (x=0;x<256;x++)
+ {
+ colour = m_vram[((nametbl&1) << 16) | (nametbl>>1)];
+ *ln++ = pens[m_pal_ind16[colour>>4]];
+ if (_Width > 512)
+ *ln++ = pens[m_pal_ind16[colour&15]];
+ nametbl++;
+ }
+ }
- LOG(("V9938: Read %02x from S#%d\n", ret, reg));
- v9938_check_int (machine);
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen_bg;
+ m_size_now = RENDER_HIGH;
+}
- return ret;
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_graphic7(const pen_t *pens, _PixelType *ln, int line)
+{
+ UINT8 colour;
+ int line2, linemask, x, xx, nametbl;
+ _PixelType pen, pen_bg;
+
+ linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7;
+
+ line2 = ((line + m_cont_reg[23]) & linemask) & 255;
+
+ nametbl = line2 << 8;
+ if ( (m_cont_reg[2] & 0x20) && (V9938_SECOND_FIELD) )
+ nametbl += 0x10000;
+
+ pen_bg = pens[m_pal_ind256[m_cont_reg[7]]];
+ if (_Width < 512)
+ xx = m_offset_x;
+ else
+ xx = m_offset_x * 2;
+ while (xx--) *ln++ = pen_bg;
+
+ if (m_cont_reg[2] & 0x40)
+ {
+ for (x=0;x<32;x++)
+ {
+ nametbl++;
+ colour = m_vram[((nametbl&1) << 16) | (nametbl>>1)];
+ pen = pens[m_pal_ind256[colour]];
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ if (_Width > 512)
+ {
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ *ln++ = pen; *ln++ = pen;
+ }
+ nametbl++;
+ }
+ }
+ else
+ {
+ for (x=0;x<256;x++)
+ {
+ colour = m_vram[((nametbl&1) << 16) | (nametbl>>1)];
+ pen = pens[m_pal_ind256[colour]];
+ *ln++ = pen;
+ if (_Width > 512)
+ *ln++ = pen;
+ nametbl++;
+ }
}
-READ8_HANDLER( v9938_0_status_r )
-{
- vdp = &vdps[0];
- return v9938_status_r(space->machine());
+ xx = 16 - m_offset_x;
+ if (_Width > 512)
+ xx *= 2;
+ while (xx--) *ln++ = pen_bg;
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
}
-READ8_HANDLER( v9938_1_status_r )
+template<typename _PixelType, int _Width>
+void v99x8_device::mode_unknown(const pen_t *pens, _PixelType *ln, int line)
{
- vdp = &vdps[1];
- return v9938_status_r(space->machine());
+ _PixelType fg, bg;
+ int x;
+
+ fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]];
+ bg = pens[m_pal_ind16[m_cont_reg[7] & 15]];
+
+ if (_Width < 512)
+ {
+ x = m_offset_x;
+ while (x--) *ln++ = bg;
+
+ x = 256;
+ while (x--) *ln++ = fg;
+
+ x = 16 - m_offset_x;
+ while (x--) *ln++ = bg;
+ }
+ else
+ {
+ x = m_offset_x * 2;
+ while (x--) *ln++ = bg;
+
+ x = 512;
+ while (x--) *ln++ = fg;
+
+ x = (16 - m_offset_x) * 2;
+ while (x--) *ln++ = bg;
+ }
+ if (m_size_now != RENDER_HIGH) m_size_now = RENDER_LOW;
}
-/***************************************************************************
+template<typename _PixelType, int _Width>
+void v99x8_device::default_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col)
+{
+ int i;
+ if (_Width > 512)
+ ln += m_offset_x * 2;
+ else
+ ln += m_offset_x;
- Refresh / render function
+ for (i=0;i<256;i++)
+ {
+ if (col[i] & 0x80)
+ {
+ *ln++ = pens[m_pal_ind16[col[i]&0x0f]];
+ if (_Width > 512)
+ *ln++ = pens[m_pal_ind16[col[i]&0x0f]];
+ }
+ else
+ {
+ if (_Width > 512)
+ ln += 2;
+ else
+ ln++;
+ }
+ }
+}
+template<typename _PixelType, int _Width>
+void v99x8_device::graphic5_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col)
+{
+ int i;
+ if (_Width > 512)
+ ln += m_offset_x * 2;
+ else
+ ln += m_offset_x;
+
+ for (i=0;i<256;i++)
+ {
+ if (col[i] & 0x80)
+ {
+ *ln++ = pens[m_pal_ind16[(col[i]>>2)&0x03]];
+ if (_Width > 512)
+ *ln++ = pens[m_pal_ind16[col[i]&0x03]];
+ }
+ else
+ {
+ if (_Width > 512)
+ ln += 2;
+ else
+ ln++;
+ }
+ }
+}
-***************************************************************************/
-#define V9938_SECOND_FIELD ( !(((vdp->contReg[9] & 0x04) && !(vdp->statReg[2] & 2)) || vdp->blink))
+template<typename _PixelType, int _Width>
+void v99x8_device::graphic7_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col)
+{
+ static const UINT16 g7_ind16[16] = {
+ 0, 2, 192, 194, 48, 50, 240, 242,
+ 482, 7, 448, 455, 56, 63, 504, 511 };
+ int i;
-#define V9938_BPP (16)
-#define V9938_WIDTH (512 + 32)
-#include "v9938mod.c"
-#undef V9938_WIDTH
-#define V9938_WIDTH (256 + 16)
-#include "v9938mod.c"
-#undef V9938_WIDTH
-#undef V9938_BPP
+ if (_Width > 512)
+ ln += m_offset_x * 2;
+ else
+ ln += m_offset_x;
-static void v9938_sprite_mode1 (int line, UINT8 *col)
+ for (i=0;i<256;i++)
{
+ if (col[i] & 0x80)
+ {
+ *ln++ = pens[g7_ind16[col[i]&0x0f]];
+ if (_Width > 512)
+ *ln++ = pens[g7_ind16[col[i]&0x0f]];
+ }
+ else
+ {
+ if (_Width > 512)
+ ln += 2;
+ else
+ ln++;
+ }
+ }
+}
+
+
+void v99x8_device::sprite_mode1 (int line, UINT8 *col)
+{
UINT8 *attrtbl, *patterntbl, *patternptr;
int x, y, p, height, c, p2, i, n, pattern;
memset (col, 0, 256);
- /* are sprites disabled? */
- if (vdp->contReg[8] & 0x02) return;
+ // are sprites disabled?
+ if (m_cont_reg[8] & 0x02) return;
- attrtbl = vdp->vram + (vdp->contReg[5] << 7) + (vdp->contReg[11] << 15);
- patterntbl = vdp->vram + (vdp->contReg[6] << 11);
+ attrtbl = m_vram + (m_cont_reg[5] << 7) + (m_cont_reg[11] << 15);
+ patterntbl = m_vram + (m_cont_reg[6] << 11);
- /* 16x16 or 8x8 sprites */
- height = (vdp->contReg[1] & 2) ? 16 : 8;
- /* magnified sprites (zoomed) */
- if (vdp->contReg[1] & 1) height *= 2;
+ // 16x16 or 8x8 sprites
+ height = (m_cont_reg[1] & 2) ? 16 : 8;
+ // magnified sprites (zoomed)
+ if (m_cont_reg[1] & 1) height *= 2;
p2 = p = 0;
while (1)
- {
+ {
y = attrtbl[0];
if (y == 208) break;
- y = (y - vdp->contReg[23]) & 255;
+ y = (y - m_cont_reg[23]) & 255;
if (y > 208)
y = -(~y&255);
else
y++;
- /* if sprite in range, has to be drawn */
+ // if sprite in range, has to be drawn
if ( (line >= y) && (line < (y + height) ) )
- {
+ {
if (p2 == 4)
- {
- /* max maximum sprites per line! */
- if ( !(vdp->statReg[0] & 0x40) )
- vdp->statReg[0] = (vdp->statReg[0] & 0xa0) | 0x40 | p;
+ {
+ // max maximum sprites per line!
+ if ( !(m_stat_reg[0] & 0x40) )
+ m_stat_reg[0] = (m_stat_reg[0] & 0xa0) | 0x40 | p;
- if (vdp->sprite_limit) break;
- }
- /* get x */
+ if (m_sprite_limit) break;
+ }
+ // get x
x = attrtbl[1];
if (attrtbl[3] & 0x80) x -= 32;
- /* get pattern */
+ // get pattern
pattern = attrtbl[2];
- if (vdp->contReg[1] & 2)
+ if (m_cont_reg[1] & 2)
pattern &= 0xfc;
n = line - y;
patternptr = patterntbl + pattern * 8 +
- ((vdp->contReg[1] & 1) ? n/2 : n);
+ ((m_cont_reg[1] & 1) ? n/2 : n);
pattern = patternptr[0] << 8 | patternptr[16];
- /* get colour */
+ // get colour
c = attrtbl[3] & 0x0f;
- /* draw left part */
+ // draw left part
n = 0;
while (1)
- {
+ {
if (n == 0) pattern = patternptr[0];
- else if ( (n == 1) && (vdp->contReg[1] & 2) ) pattern = patternptr[16];
+ else if ( (n == 1) && (m_cont_reg[1] & 2) ) pattern = patternptr[16];
else break;
n++;
for (i=0;i<8;i++)
- {
+ {
if (pattern & 0x80)
- {
+ {
if ( (x >= 0) && (x < 256) )
- {
+ {
if (col[x] & 0x40)
- {
- /* we have a collision! */
+ {
+ // we have a collision!
if (p2 < 4)
- vdp->statReg[0] |= 0x20;
- }
+ m_stat_reg[0] |= 0x20;
+ }
if ( !(col[x] & 0x80) )
- {
- if (c || (vdp->contReg[8] & 0x20) )
+ {
+ if (c || (m_cont_reg[8] & 0x20) )
col[x] |= 0xc0 | c;
else
col[x] |= 0x40;
- }
+ }
- /* if zoomed, draw another pixel */
- if (vdp->contReg[1] & 1)
- {
+ // if zoomed, draw another pixel
+ if (m_cont_reg[1] & 1)
+ {
if (col[x+1] & 0x40)
- {
- /* we have a collision! */
+ {
+ // we have a collision!
if (p2 < 4)
- vdp->statReg[0] |= 0x20;
- }
+ m_stat_reg[0] |= 0x20;
+ }
if ( !(col[x+1] & 0x80) )
- {
- if (c || (vdp->contReg[8] & 0x20) )
+ {
+ if (c || (m_cont_reg[8] & 0x20) )
col[x+1] |= 0xc0 | c;
else
col[x+1] |= 0x80;
- }
- }
+ }
}
}
- if (vdp->contReg[1] & 1) x += 2; else x++;
- pattern <<= 1;
}
+ if (m_cont_reg[1] & 1) x += 2; else x++;
+ pattern <<= 1;
}
+ }
p2++;
- }
+ }
if (p >= 31) break;
p++;
attrtbl += 4;
- }
-
- if ( !(vdp->statReg[0] & 0x40) )
- vdp->statReg[0] = (vdp->statReg[0] & 0xa0) | p;
}
-static void v9938_sprite_mode2 (int line, UINT8 *col)
- {
+ if ( !(m_stat_reg[0] & 0x40) )
+ m_stat_reg[0] = (m_stat_reg[0] & 0xa0) | p;
+}
+
+void v99x8_device::sprite_mode2 (int line, UINT8 *col)
+{
int attrtbl, patterntbl, patternptr, colourtbl;
int x, i, y, p, height, c, p2, n, pattern, colourmask, first_cc_seen;
memset (col, 0, 256);
- /* are sprites disabled? */
- if (vdp->contReg[8] & 0x02) return;
+ // are sprites disabled?
+ if (m_cont_reg[8] & 0x02) return;
- attrtbl = ( (vdp->contReg[5] & 0xfc) << 7) + (vdp->contReg[11] << 15);
- colourtbl = ( (vdp->contReg[5] & 0xf8) << 7) + (vdp->contReg[11] << 15);
- patterntbl = (vdp->contReg[6] << 11);
- colourmask = ( (vdp->contReg[5] & 3) << 3) | 0x7; /* check this! */
+ attrtbl = ( (m_cont_reg[5] & 0xfc) << 7) + (m_cont_reg[11] << 15);
+ colourtbl = ( (m_cont_reg[5] & 0xf8) << 7) + (m_cont_reg[11] << 15);
+ patterntbl = (m_cont_reg[6] << 11);
+ colourmask = ( (m_cont_reg[5] & 3) << 3) | 0x7; // check this!
- /* 16x16 or 8x8 sprites */
- height = (vdp->contReg[1] & 2) ? 16 : 8;
- /* magnified sprites (zoomed) */
- if (vdp->contReg[1] & 1) height *= 2;
+ // 16x16 or 8x8 sprites
+ height = (m_cont_reg[1] & 2) ? 16 : 8;
+ // magnified sprites (zoomed)
+ if (m_cont_reg[1] & 1) height *= 2;
p2 = p = first_cc_seen = 0;
while (1)
- {
- y = v9938_vram_read (attrtbl);
+ {
+ y = vram_read (attrtbl);
if (y == 216) break;
- y = (y - vdp->contReg[23]) & 255;
+ y = (y - m_cont_reg[23]) & 255;
if (y > 216)
y = -(~y&255);
else
y++;
- /* if sprite in range, has to be drawn */
+ // if sprite in range, has to be drawn
if ( (line >= y) && (line < (y + height) ) )
- {
+ {
if (p2 == 8)
- {
- /* max maximum sprites per line! */
- if ( !(vdp->statReg[0] & 0x40) )
- vdp->statReg[0] = (vdp->statReg[0] & 0xa0) | 0x40 | p;
+ {
+ // max maximum sprites per line!
+ if ( !(m_stat_reg[0] & 0x40) )
+ m_stat_reg[0] = (m_stat_reg[0] & 0xa0) | 0x40 | p;
- if (vdp->sprite_limit) break;
- }
+ if (m_sprite_limit) break;
+ }
- n = line - y; if (vdp->contReg[1] & 1) n /= 2;
- /* get colour */
- c = v9938_vram_read (colourtbl + (((p&colourmask)*16) + n));
+ n = line - y; if (m_cont_reg[1] & 1) n /= 2;
+ // get colour
+ c = vram_read (colourtbl + (((p&colourmask)*16) + n));
- /* don't draw all sprite with CC set before any sprites
- with CC = 0 are seen on this line */
+ // don't draw all sprite with CC set before any sprites
+ // with CC = 0 are seen on this line
if (c & 0x40)
- {
+ {
if (!first_cc_seen)
goto skip_first_cc_set;
- }
+ }
else
first_cc_seen = 1;
- /* get pattern */
- pattern = v9938_vram_read (attrtbl + 2);
- if (vdp->contReg[1] & 2)
+ // get pattern
+ pattern = vram_read (attrtbl + 2);
+ if (m_cont_reg[1] & 2)
pattern &= 0xfc;
patternptr = patterntbl + pattern * 8 + n;
- pattern = (v9938_vram_read (patternptr) << 8) |
- v9938_vram_read (patternptr + 16);
+ pattern = (vram_read (patternptr) << 8) |
+ vram_read (patternptr + 16);
- /* get x */
- x = v9938_vram_read (attrtbl + 1);
+ // get x
+ x = vram_read (attrtbl + 1);
if (c & 0x80) x -= 32;
- n = (vdp->contReg[1] & 2) ? 16 : 8;
+ n = (m_cont_reg[1] & 2) ? 16 : 8;
while (n--)
+ {
+ for (i=0;i<=(m_cont_reg[1] & 1);i++)
{
- for (i=0;i<=(vdp->contReg[1] & 1);i++)
- {
if ( (x >= 0) && (x < 256) )
- {
+ {
if ( (pattern & 0x8000) && !(col[x] & 0x10) )
+ {
+ if ( (c & 15) || (m_cont_reg[8] & 0x20) )
{
- if ( (c & 15) || (vdp->contReg[8] & 0x20) )
- {
if ( !(c & 0x40) )
- {
+ {
if (col[x] & 0x20) col[x] |= 0x10;
else
col[x] |= 0x20 | (c & 15);
- }
+ }
else
col[x] |= c & 15;
col[x] |= 0x80;
- }
}
+ }
else
- {
+ {
if ( !(c & 0x40) && (col[x] & 0x20) )
col[x] |= 0x10;
- }
+ }
if ( !(c & 0x60) && (pattern & 0x8000) )
- {
+ {
if (col[x] & 0x40)
- {
- /* sprite collision! */
+ {
+ // sprite collision!
if (p2 < 8)
- vdp->statReg[0] |= 0x20;
- }
+ m_stat_reg[0] |= 0x20;
+ }
else
col[x] |= 0x40;
- }
+ }
x++;
- }
}
+ }
pattern <<= 1;
- }
+ }
skip_first_cc_set:
p2++;
- }
+ }
if (p >= 31) break;
p++;
attrtbl += 4;
- }
-
- if ( !(vdp->statReg[0] & 0x40) )
- vdp->statReg[0] = (vdp->statReg[0] & 0xa0) | p;
}
-typedef struct {
- UINT8 m;
- void (*visible_16)(const pen_t *, UINT16*, int);
- void (*visible_16s)(const pen_t *, UINT16*, int);
- void (*border_16)(const pen_t *, UINT16*);
- void (*border_16s)(const pen_t *, UINT16*);
- void (*sprites)(int, UINT8*);
- void (*draw_sprite_16)(const pen_t *, UINT16*, UINT8*);
- void (*draw_sprite_16s)(const pen_t *, UINT16*, UINT8*);
-} V9938_MODE;
-
-static const V9938_MODE modes[] = {
+ if ( !(m_stat_reg[0] & 0x40) )
+ m_stat_reg[0] = (m_stat_reg[0] & 0xa0) | p;
+}
+
+#define SHORT_WIDTH (256 + 16)
+#define LONG_WIDTH (512 + 32)
+
+const v99x8_device::v99x8_mode v99x8_device::s_modes[] = {
{ 0x02,
- v9938_mode_text1_16,
- v9938_mode_text1_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
+ &v99x8_device::mode_text1<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_text1<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
NULL,
NULL,
NULL },
{ 0x01,
- v9938_mode_multi_16,
- v9938_mode_multi_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode1,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_multi<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_multi<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode1,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x00,
- v9938_mode_graphic1_16,
- v9938_mode_graphic1_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode1,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_graphic1<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic1<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode1,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x04,
- v9938_mode_graphic23_16,
- v9938_mode_graphic23_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode1,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_graphic23<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic23<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode1,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x08,
- v9938_mode_graphic23_16,
- v9938_mode_graphic23_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode2,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_graphic23<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic23<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode2,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x0c,
- v9938_mode_graphic4_16,
- v9938_mode_graphic4_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode2,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_graphic4<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic4<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode2,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x10,
- v9938_mode_graphic5_16,
- v9938_mode_graphic5_16s,
- v9938_graphic5_border_16,
- v9938_graphic5_border_16s,
- v9938_sprite_mode2,
- v9938_graphic5_draw_sprite_16,
- v9938_graphic5_draw_sprite_16s },
+ &v99x8_device::mode_graphic5<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic5<UINT16, SHORT_WIDTH>,
+ &v99x8_device::graphic5_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::graphic5_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode2,
+ &v99x8_device::graphic5_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::graphic5_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x14,
- v9938_mode_graphic6_16,
- v9938_mode_graphic6_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
- v9938_sprite_mode2,
- v9938_default_draw_sprite_16,
- v9938_default_draw_sprite_16s },
+ &v99x8_device::mode_graphic6<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic6<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode2,
+ &v99x8_device::default_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x1c,
- v9938_mode_graphic7_16,
- v9938_mode_graphic7_16s,
- v9938_graphic7_border_16,
- v9938_graphic7_border_16s,
- v9938_sprite_mode2,
- v9938_graphic7_draw_sprite_16,
- v9938_graphic7_draw_sprite_16s },
+ &v99x8_device::mode_graphic7<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_graphic7<UINT16, SHORT_WIDTH>,
+ &v99x8_device::graphic7_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::graphic7_border<UINT16, SHORT_WIDTH>,
+ &v99x8_device::sprite_mode2,
+ &v99x8_device::graphic7_draw_sprite<UINT16, LONG_WIDTH>,
+ &v99x8_device::graphic7_draw_sprite<UINT16, SHORT_WIDTH> },
{ 0x0a,
- v9938_mode_text2_16,
- v9938_mode_text2_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
+ &v99x8_device::mode_text2<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_text2<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
NULL,
NULL,
NULL },
{ 0xff,
- v9938_mode_unknown_16,
- v9938_mode_unknown_16s,
- v9938_default_border_16,
- v9938_default_border_16s,
+ &v99x8_device::mode_unknown<UINT16, LONG_WIDTH>,
+ &v99x8_device::mode_unknown<UINT16, SHORT_WIDTH>,
+ &v99x8_device::default_border<UINT16, LONG_WIDTH>,
+ &v99x8_device::default_border<UINT16, SHORT_WIDTH>,
NULL,
NULL,
NULL },
};
-static void v9938_set_mode (void)
- {
+void v99x8_device::set_mode ()
+{
int n,i;
- n = (((vdp->contReg[0] & 0x0e) << 1) | ((vdp->contReg[1] & 0x18) >> 3));
+ n = (((m_cont_reg[0] & 0x0e) << 1) | ((m_cont_reg[1] & 0x18) >> 3));
for (i=0;;i++)
- {
- if ( (modes[i].m == n) || (modes[i].m == 0xff) ) break;
- }
- vdp->mode = i;
+ {
+ if ( (s_modes[i].m == n) || (s_modes[i].m == 0xff) ) break;
}
+ m_mode = i;
+}
-static void v9938_refresh_16 (running_machine &machine, bitmap_t &bmp, int line)
- {
- const pen_t *pens = machine.pens;
+void v99x8_device::refresh_16 (int line)
+{
+ const pen_t *pens = machine().pens;
int i, double_lines;
UINT8 col[256];
UINT16 *ln, *ln2 = NULL;
double_lines = 0;
- if (vdp->size == RENDER_HIGH)
+ if (m_size == RENDER_HIGH)
+ {
+ if (m_cont_reg[9] & 0x08)
{
- if (vdp->contReg[9] & 0x08)
- {
- vdp->size_now = RENDER_HIGH;
- ln = &bmp.pix16(line*2+((vdp->statReg[2]>>1)&1));
- }
+ m_size_now = RENDER_HIGH;
+ ln = &m_bitmap.pix16(line*2+((m_stat_reg[2]>>1)&1));
+ }
else
- {
- ln = &bmp.pix16(line*2);
- ln2 = &bmp.pix16(line*2+1);
+ {
+ ln = &m_bitmap.pix16(line*2);
+ ln2 = &m_bitmap.pix16(line*2+1);
double_lines = 1;
- }
}
+ }
else
- ln = &bmp.pix16(line);
+ ln = &m_bitmap.pix16(line);
- if ( !(vdp->contReg[1] & 0x40) || (vdp->statReg[2] & 0x40) )
- {
- if (vdp->size == RENDER_HIGH)
- modes[vdp->mode].border_16 (pens, ln);
+ if ( !(m_cont_reg[1] & 0x40) || (m_stat_reg[2] & 0x40) )
+ {
+ if (m_size == RENDER_HIGH)
+ (this->*s_modes[m_mode].border_16) (pens, ln);
else
- modes[vdp->mode].border_16s (pens, ln);
- }
+ (this->*s_modes[m_mode].border_16s) (pens, ln);
+ }
else
+ {
+ i = (line - m_offset_y) & 255;
+ if (m_size == RENDER_HIGH)
{
- i = (line - vdp->offset_y) & 255;
- if (vdp->size == RENDER_HIGH)
+ (this->*s_modes[m_mode].visible_16) (pens, ln, i);
+ if (s_modes[m_mode].sprites)
{
- modes[vdp->mode].visible_16 (pens, ln, i);
- if (modes[vdp->mode].sprites)
- {
- modes[vdp->mode].sprites (i, col);
- modes[vdp->mode].draw_sprite_16 (pens, ln, col);
- }
+ (this->*s_modes[m_mode].sprites) (i, col);
+ (this->*s_modes[m_mode].draw_sprite_16) (pens, ln, col);
}
+ }
else
+ {
+ (this->*s_modes[m_mode].visible_16s) (pens, ln, i);
+ if (s_modes[m_mode].sprites)
{
- modes[vdp->mode].visible_16s (pens, ln, i);
- if (modes[vdp->mode].sprites)
- {
- modes[vdp->mode].sprites (i, col);
- modes[vdp->mode].draw_sprite_16s (pens, ln, col);
- }
+ (this->*s_modes[m_mode].sprites) (i, col);
+ (this->*s_modes[m_mode].draw_sprite_16s) (pens, ln, col);
}
}
+ }
if (double_lines)
memcpy (ln2, ln, (512 + 32) * 2);
- }
+}
-static void v9938_refresh_line (running_machine &machine, bitmap_t &bmp, int line)
- {
+void v99x8_device::refresh_line (int line)
+{
int ind16, ind256;
- ind16 = vdp->pal_ind16[0];
- ind256 = vdp->pal_ind256[0];
+ ind16 = m_pal_ind16[0];
+ ind256 = m_pal_ind256[0];
- if ( !(vdp->contReg[8] & 0x20) && (vdp->mode != V9938_MODE_GRAPHIC5) )
- {
- vdp->pal_ind16[0] = vdp->pal_ind16[(vdp->contReg[7] & 0x0f)];
- vdp->pal_ind256[0] = vdp->pal_ind256[vdp->contReg[7]];
- }
+ if ( !(m_cont_reg[8] & 0x20) && (m_mode != V9938_MODE_GRAPHIC5) )
+ {
+ m_pal_ind16[0] = m_pal_ind16[(m_cont_reg[7] & 0x0f)];
+ m_pal_ind256[0] = m_pal_ind256[m_cont_reg[7]];
+ }
- v9938_refresh_16 (machine, bmp, line);
+ refresh_16 (line);
- if ( !(vdp->contReg[8] & 0x20) && (vdp->mode != V9938_MODE_GRAPHIC5) )
- {
- vdp->pal_ind16[0] = ind16;
- vdp->pal_ind256[0] = ind256;
- }
+ if ( !(m_cont_reg[8] & 0x20) && (m_mode != V9938_MODE_GRAPHIC5) )
+ {
+ m_pal_ind16[0] = ind16;
+ m_pal_ind256[0] = ind256;
}
+}
/*
@@ -1409,153 +2158,65 @@ I do not know the behaviour of FV when IE0=0. That is the part that I still
have to test.
*/
-static void v9938_interrupt_start_vblank (running_machine &machine)
- {
+void v99x8_device::interrupt_start_vblank ()
+{
#if 0
if (machine.input().code_pressed (KEYCODE_D) )
- {
+ {
FILE *fp;
int i;
fp = fopen ("vram.dmp", "wb");
if (fp)
- {
- fwrite (vdp->vram, 0x10000, 1, fp);
+ {
+ fwrite (m_vram, 0x10000, 1, fp);
fclose (fp);
popmessage("saved");
- }
-
- for (i=0;i<24;i++) mame_printf_debug ("R#%d = %02x\n", i, vdp->contReg[i]);
}
+
+ for (i=0;i<24;i++) mame_printf_debug ("R#%d = %02x\n", i, m_cont_reg[i]);
+ }
#endif
- /* at every frame, vdp switches fields */
- vdp->statReg[2] = (vdp->statReg[2] & 0xfd) | (~vdp->statReg[2] & 2);
+ // at every frame, vdp switches fields
+ m_stat_reg[2] = (m_stat_reg[2] & 0xfd) | (~m_stat_reg[2] & 2);
- /* color blinking */
- if (!(vdp->contReg[13] & 0xf0))
- vdp->blink = 0;
- else if (!(vdp->contReg[13] & 0x0f))
- vdp->blink = 1;
+ // color blinking
+ if (!(m_cont_reg[13] & 0xf0))
+ m_blink = 0;
+ else if (!(m_cont_reg[13] & 0x0f))
+ m_blink = 1;
else
+ {
+ // both on and off counter are non-zero: timed blinking
+ if (m_blink_count)
+ m_blink_count--;
+ if (!m_blink_count)
{
- /* both on and off counter are non-zero: timed blinking */
- if (vdp->blink_count)
- vdp->blink_count--;
- if (!vdp->blink_count)
- {
- vdp->blink = !vdp->blink;
- if (vdp->blink)
- vdp->blink_count = (vdp->contReg[13] >> 4) * 10;
+ m_blink = !m_blink;
+ if (m_blink)
+ m_blink_count = (m_cont_reg[13] >> 4) * 10;
else
- vdp->blink_count = (vdp->contReg[13] & 0x0f) * 10;
- }
- }
-
- /* check screen rendering size */
- if (vdp->size_auto && (vdp->size_now >= 0) && (vdp->size != vdp->size_now) )
- vdp->size = vdp->size_now;
-
- if (vdp->size != vdp->size_old)
- {
- if (vdp->size == RENDER_HIGH)
- vdp->screen->set_visible_area (0, 512 + 32 - 1, 0, 424 + 56 - 1);
- else
- vdp->screen->set_visible_area (0, 256 + 16 - 1, 0, 212 + 28 - 1);
-
- vdp->size_old = vdp->size;
+ m_blink_count = (m_cont_reg[13] & 0x0f) * 10;
}
-
- vdp->size_now = -1;
}
-int v9938_interrupt (running_machine &machine, int which)
-{
- int scanline, max, pal, scanline_start;
-
- vdp = &vdps[which];
-
- v9938_update_command ();
+ // check screen rendering size
+ if (m_size_auto && (m_size_now >= 0) && (m_size != m_size_now) )
+ m_size = m_size_now;
- pal = vdp->contReg[9] & 2;
- if (pal) scanline_start = 53; else scanline_start = 22;
-
- /* set flags */
- if (vdp->scanline == (vdp->offset_y + scanline_start) )
- {
- vdp->statReg[2] &= ~0x40;
- }
- else if (vdp->scanline == (vdp->offset_y + vdp->visible_y + scanline_start) )
- {
- vdp->statReg[2] |= 0x40;
- vdp->statReg[0] |= 0x80;
- }
-
- max = (pal) ? 255 : (vdp->contReg[9] & 0x80) ? 234 : 244;
- scanline = (vdp->scanline - scanline_start - vdp->offset_y);
- if ( (scanline >= 0) && (scanline <= max) &&
- ( ( (scanline + vdp->contReg[23]) & 255) == vdp->contReg[19]) )
- {
- vdp->statReg[1] |= 1;
- LOG(("V9938: scanline interrupt (%d)\n", scanline));
- }
- else
- if ( !(vdp->contReg[0] & 0x10) ) vdp->statReg[1] &= 0xfe;
-
- v9938_check_int (machine);
-
- /* check for start of vblank */
- if ((pal && (vdp->scanline == 310)) ||
- (!pal && (vdp->scanline == 259)))
- v9938_interrupt_start_vblank (machine);
-
- /* render the current line */
- if ((vdp->scanline >= scanline_start) && (vdp->scanline < (212 + 28 + scanline_start)))
+ if (m_size != m_size_old)
{
- scanline = (vdp->scanline - scanline_start) & 255;
+ if (m_size == RENDER_HIGH)
+ m_screen->set_visible_area (0, 512 + 32 - 1, 0, 424 + 56 - 1);
+ else
+ m_screen->set_visible_area (0, 256 + 16 - 1, 0, 212 + 28 - 1);
- v9938_refresh_line (machine, *vdp->bitmap, scanline);
+ m_bitmap.allocate(m_screen->width(), m_screen->height());
+ m_size_old = m_size;
}
- max = (vdp->contReg[9] & 2) ? 313 : 262;
- if (++vdp->scanline == max)
- vdp->scanline = 0;
-
- return vdp->INT;
-}
-
-/*
- Not really right... won't work with sprites in graphics 7
- and with palette updated mid-screen
-*/
-int v9938_get_transpen(int which)
-{
- vdp = &vdps[which];
- if (vdp->mode == V9938_MODE_GRAPHIC7)
- {
- return vdp->pal_ind256[0];
- }
- else
- {
- return vdp->pal_ind16[0];
- }
-}
-
-/*
- Driver-specific function: update the vdp mouse state
-*/
-void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_state)
-{
- vdp = &vdps[which];
-
- /* save button state */
- vdp->button_state = (button_state << 6) & 0xc0;
-
- if ((vdp->contReg[8] & 0xc0) == 0x80)
- { /* vdp will process mouse deltas only if it is in mouse mode */
- vdp->mx_delta += mx_delta;
- vdp->my_delta += my_delta;
- }
+ m_size_now = -1;
}
/***************************************************************************
@@ -1564,11 +2225,11 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
***************************************************************************/
-#define VDP vdp->contReg
-#define VDPStatus vdp->statReg
-#define VRAM vdp->vram
-#define VRAM_EXP vdp->vram_exp
-#define ScrMode vdp->mode
+#define VDP m_cont_reg
+#define VDPStatus m_stat_reg
+#define VRAM m_vram
+#define VRAM_EXP m_vram_exp
+#define ScrMode m_mode
/*************************************************************/
/** Completely rewritten by Alex Wulms: **/
@@ -1614,10 +2275,10 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
#define CM_HMMC 0xF
/*************************************************************/
-/* Many VDP commands are executed in some kind of loop but */
-/* essentially, there are only a few basic loop structures */
-/* that are re-used. We define the loop structures that are */
-/* re-used here so that they have to be entered only once */
+// Many VDP commands are executed in some kind of loop but
+// essentially, there are only a few basic loop structures
+// that are re-used. We define the loop structures that are
+// re-used here so that they have to be entered only once
/*************************************************************/
#define pre_loop \
while ((cnt-=delta) > 0) {
@@ -1625,7 +2286,7 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
#define post_loop \
}
-/* Loop over DX, DY */
+// Loop over DX, DY
#define post__x_y(MX) \
if (!--ANX || ((ADX+=TX)&MX)) { \
if (!(--NY&1023) || (DY+=TY)==-1) \
@@ -1637,7 +2298,7 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
} \
post_loop
-/* Loop over DX, SY, DY */
+// Loop over DX, SY, DY
#define post__xyy(MX) \
if ((ADX+=TX)&MX) { \
if (!(--NY&1023) || (SY+=TY)==-1 || (DY+=TY)==-1) \
@@ -1647,7 +2308,7 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
} \
post_loop
-/* Loop over SX, DX, SY, DY */
+// Loop over SX, DX, SY, DY
#define post_xxyy(MX) \
if (!--ANX || ((ASX+=TX)&MX) || ((ADX+=TX)&MX)) { \
if (!(--NY&1023) || (SY+=TY)==-1 || (DY+=TY)==-1) \
@@ -1661,61 +2322,17 @@ void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_
post_loop
/*************************************************************/
-/** Function prototypes **/
-/*************************************************************/
-static UINT8 *VDPVRMP(register UINT8 M, register int MX, register int X, register int Y);
-
-static UINT8 VDPpoint5(register int MXS, register int SX, register int SY);
-static UINT8 VDPpoint6(register int MXS, register int SX, register int SY);
-static UINT8 VDPpoint7(register int MXS, register int SX, register int SY);
-static UINT8 VDPpoint8(register int MXS, register int SX, register int SY);
-
-static UINT8 VDPpoint(register UINT8 SM, register int MXS,
- register int SX, register int SY);
-
-static void VDPpsetlowlevel(register UINT8 *P, register UINT8 CL,
- register UINT8 M, register UINT8 OP);
-
-static void VDPpset5(register int MXD, register int DX, register int DY,
- register UINT8 CL, register UINT8 OP);
-static void VDPpset6(register int MXD, register int DX, register int DY,
- register UINT8 CL, register UINT8 OP);
-static void VDPpset7(register int MXD, register int DX, register int DY,
- register UINT8 CL, register UINT8 OP);
-static void VDPpset8(register int MXD, register int DX, register int DY,
- register UINT8 CL, register UINT8 OP);
-
-static void VDPpset(register UINT8 SM, register int MXD,
- register int DX, register int DY,
- register UINT8 CL, register UINT8 OP);
-
-static int GetVdpTimingValue(register const int *);
-
-static void SrchEngine(void);
-static void LineEngine(void);
-static void LmmvEngine(void);
-static void LmmmEngine(void);
-static void LmcmEngine(void);
-static void LmmcEngine(void);
-static void HmmvEngine(void);
-static void HmmmEngine(void);
-static void YmmmEngine(void);
-static void HmmcEngine(void);
-
-static void ReportVdpCommand(register UINT8 Op);
-
-/*************************************************************/
/** Variables visible only in this module **/
/*************************************************************/
static const UINT8 Mask[4] = { 0x0F,0x03,0x0F,0xFF };
static const int PPB[4] = { 2,4,2,1 };
static const int PPL[4] = { 256,512,512,256 };
-/* SprOn SprOn SprOf SprOf */
-/* ScrOf ScrOn ScrOf ScrOn */
+// SprOn SprOn SprOf SprOf
+// ScrOf ScrOn ScrOf ScrOn
static const int srch_timing[8]={
- 818, 1025, 818, 830, /* ntsc */
- 696, 854, 696, 684 /* pal */
+ 818, 1025, 818, 830, // ntsc
+ 696, 854, 696, 684 // pal
};
static const int line_timing[8]={
1063, 1259, 1063, 1161,
@@ -1745,7 +2362,7 @@ static const int lmmm_timing[8]={
/** VDPVRMP() **********************************************/
/** Calculate addr of a pixel in vram **/
/*************************************************************/
-INLINE UINT8 *VDPVRMP(UINT8 M,int MX,int X,int Y)
+inline UINT8 *v99x8_device::VDPVRMP(UINT8 M,int MX,int X,int Y)
{
switch(M)
{
@@ -1761,7 +2378,7 @@ INLINE UINT8 *VDPVRMP(UINT8 M,int MX,int X,int Y)
/** VDPpoint5() ***********************************************/
/** Get a pixel on screen 5 **/
/*************************************************************/
-INLINE UINT8 VDPpoint5(int MXS, int SX, int SY)
+inline UINT8 v99x8_device::VDPpoint5(int MXS, int SX, int SY)
{
return (*VDP_VRMP5(MXS, SX, SY) >>
(((~SX)&1)<<2)
@@ -1771,7 +2388,7 @@ INLINE UINT8 VDPpoint5(int MXS, int SX, int SY)
/** VDPpoint6() ***********************************************/
/** Get a pixel on screen 6 **/
/*************************************************************/
-INLINE UINT8 VDPpoint6(int MXS, int SX, int SY)
+inline UINT8 v99x8_device::VDPpoint6(int MXS, int SX, int SY)
{
return (*VDP_VRMP6(MXS, SX, SY) >>
(((~SX)&3)<<1)
@@ -1781,7 +2398,7 @@ INLINE UINT8 VDPpoint6(int MXS, int SX, int SY)
/** VDPpoint7() ***********************************************/
/** Get a pixel on screen 7 **/
/*************************************************************/
-INLINE UINT8 VDPpoint7(int MXS, int SX, int SY)
+inline UINT8 v99x8_device::VDPpoint7(int MXS, int SX, int SY)
{
return (*VDP_VRMP7(MXS, SX, SY) >>
(((~SX)&1)<<2)
@@ -1791,7 +2408,7 @@ INLINE UINT8 VDPpoint7(int MXS, int SX, int SY)
/** VDPpoint8() ***********************************************/
/** Get a pixel on screen 8 **/
/*************************************************************/
-INLINE UINT8 VDPpoint8(int MXS, int SX, int SY)
+inline UINT8 v99x8_device::VDPpoint8(int MXS, int SX, int SY)
{
return *VDP_VRMP8(MXS, SX, SY);
}
@@ -1799,7 +2416,7 @@ INLINE UINT8 VDPpoint8(int MXS, int SX, int SY)
/** VDPpoint() ************************************************/
/** Get a pixel on a screen **/
/*************************************************************/
-INLINE UINT8 VDPpoint(UINT8 SM, int MXS, int SX, int SY)
+inline UINT8 v99x8_device::VDPpoint(UINT8 SM, int MXS, int SX, int SY)
{
switch(SM)
{
@@ -1816,7 +2433,7 @@ INLINE UINT8 VDPpoint(UINT8 SM, int MXS, int SX, int SY)
/** Low level function to set a pixel on a screen **/
/** Make it inline to make it fast **/
/*************************************************************/
-INLINE void VDPpsetlowlevel(UINT8 *P, UINT8 CL, UINT8 M, UINT8 OP)
+inline void v99x8_device::VDPpsetlowlevel(UINT8 *P, UINT8 CL, UINT8 M, UINT8 OP)
{
switch (OP)
{
@@ -1836,9 +2453,9 @@ INLINE void VDPpsetlowlevel(UINT8 *P, UINT8 CL, UINT8 M, UINT8 OP)
/** VDPpset5() ***********************************************/
/** Set a pixel on screen 5 **/
/*************************************************************/
-INLINE void VDPpset5(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
+inline void v99x8_device::VDPpset5(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
{
- register UINT8 SH = ((~DX)&1)<<2;
+ UINT8 SH = ((~DX)&1)<<2;
VDPpsetlowlevel(VDP_VRMP5(MXD, DX, DY),
CL << SH, ~(15<<SH), OP);
@@ -1847,9 +2464,9 @@ INLINE void VDPpset5(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
/** VDPpset6() ***********************************************/
/** Set a pixel on screen 6 **/
/*************************************************************/
-INLINE void VDPpset6(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
+inline void v99x8_device::VDPpset6(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
{
- register UINT8 SH = ((~DX)&3)<<1;
+ UINT8 SH = ((~DX)&3)<<1;
VDPpsetlowlevel(VDP_VRMP6(MXD, DX, DY),
CL << SH, ~(3<<SH), OP);
@@ -1858,9 +2475,9 @@ INLINE void VDPpset6(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
/** VDPpset7() ***********************************************/
/** Set a pixel on screen 7 **/
/*************************************************************/
-INLINE void VDPpset7(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
+inline void v99x8_device::VDPpset7(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
{
- register UINT8 SH = ((~DX)&1)<<2;
+ UINT8 SH = ((~DX)&1)<<2;
VDPpsetlowlevel(VDP_VRMP7(MXD, DX, DY),
CL << SH, ~(15<<SH), OP);
@@ -1869,7 +2486,7 @@ INLINE void VDPpset7(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
/** VDPpset8() ***********************************************/
/** Set a pixel on screen 8 **/
/*************************************************************/
-INLINE void VDPpset8(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
+inline void v99x8_device::VDPpset8(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
{
VDPpsetlowlevel(VDP_VRMP8(MXD, DX, DY),
CL, 0, OP);
@@ -1878,7 +2495,7 @@ INLINE void VDPpset8(int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
/** VDPpset() ************************************************/
/** Set a pixel on a screen **/
/*************************************************************/
-INLINE void VDPpset(UINT8 SM, int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
+inline void v99x8_device::VDPpset(UINT8 SM, int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
{
switch (SM) {
case 0: VDPpset5(MXD, DX, DY, CL, OP); break;
@@ -1891,7 +2508,7 @@ INLINE void VDPpset(UINT8 SM, int MXD, int DX, int DY, UINT8 CL, UINT8 OP)
/** GetVdpTimingValue() **************************************/
/** Get timing value for a certain VDP command **/
/*************************************************************/
-static int GetVdpTimingValue(register const int *timing_values)
+int v99x8_device::GetVdpTimingValue(const int *timing_values)
{
return(timing_values[((VDP[1]>>6)&1)|(VDP[8]&2)|((VDP[9]<<1)&4)]);
}
@@ -1899,30 +2516,30 @@ static int GetVdpTimingValue(register const int *timing_values)
/** SrchEgine()** ********************************************/
/** Search a dot **/
/*************************************************************/
-void SrchEngine(void)
+void v99x8_device::SrchEngine()
{
- register int SX=vdp->MMC.SX;
- register int SY=vdp->MMC.SY;
- register int TX=vdp->MMC.TX;
- register int ANX=vdp->MMC.ANX;
- register UINT8 CL=vdp->MMC.CL;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+ int SX=m_mmc.SX;
+ int SY=m_mmc.SY;
+ int TX=m_mmc.TX;
+ int ANX=m_mmc.ANX;
+ UINT8 CL=m_mmc.CL;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(srch_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
#define pre_srch \
pre_loop \
if ((
#define post_srch(MX) \
==CL) ^ANX) { \
- VDPStatus[2]|=0x10; /* Border detected */ \
+ VDPStatus[2]|=0x10; /* Border detected */\
break; \
} \
if ((SX+=TX) & MX) { \
- VDPStatus[2]&=0xEF; /* Border not detected */ \
+ VDPStatus[2]&=0xEF; /* Border not detected */\
break; \
} \
post_loop
@@ -1939,40 +2556,40 @@ void SrchEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
- /* Update SX in VDP registers */
+ m_vdp_engine=0;
+ // Update SX in VDP registers
VDPStatus[8]=SX&0xFF;
VDPStatus[9]=(SX>>8)|0xFE;
}
else {
- vdp->MMC.SX=SX;
+ m_mmc.SX=SX;
}
}
/** LineEgine()** ********************************************/
/** Draw a line **/
/*************************************************************/
-void LineEngine(void)
-{
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NX=vdp->MMC.NX;
- register int NY=vdp->MMC.NY;
- register int ASX=vdp->MMC.ASX;
- register int ADX=vdp->MMC.ADX;
- register UINT8 CL=vdp->MMC.CL;
- register UINT8 LO=vdp->MMC.LO;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::LineEngine()
+{
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NX=m_mmc.NX;
+ int NY=m_mmc.NY;
+ int ASX=m_mmc.ASX;
+ int ADX=m_mmc.ADX;
+ UINT8 CL=m_mmc.CL;
+ UINT8 LO=m_mmc.LO;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(line_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
#define post_linexmaj(MX) \
DX+=TX; \
@@ -1980,7 +2597,7 @@ void LineEngine(void)
ASX+=NX; \
DY+=TY; \
} \
- ASX&=1023; /* Mask to 10 bits range */ \
+ ASX&=1023; /* Mask to 10 bits range */\
if (ADX++==NX || (DX&MX)) \
break; \
post_loop
@@ -1991,13 +2608,13 @@ void LineEngine(void)
ASX+=NX; \
DX+=TX; \
} \
- ASX&=1023; /* Mask to 10 bits range */ \
+ ASX&=1023; /* Mask to 10 bits range */\
if (ADX++==NX || (DX&MX)) \
break; \
post_loop
if ((VDP[45]&0x01)==0)
- /* X-Axis is major direction */
+ // X-Axis is major direction
switch (ScrMode) {
default:
case 5: pre_loop VDPpset5(MXD, DX, DY, CL, LO); post_linexmaj(256)
@@ -2010,7 +2627,7 @@ void LineEngine(void)
break;
}
else
- /* Y-Axis is major direction */
+ // Y-Axis is major direction
switch (ScrMode) {
default:
case 5: pre_loop VDPpset5(MXD, DX, DY, CL, LO); post_lineymaj(256)
@@ -2023,42 +2640,42 @@ void LineEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
VDP[38]=DY & 0xFF;
VDP[39]=(DY>>8) & 0x03;
}
else {
- vdp->MMC.DX=DX;
- vdp->MMC.DY=DY;
- vdp->MMC.ASX=ASX;
- vdp->MMC.ADX=ADX;
+ m_mmc.DX=DX;
+ m_mmc.DY=DY;
+ m_mmc.ASX=ASX;
+ m_mmc.ADX=ADX;
}
}
/** LmmvEngine() *********************************************/
/** VDP -> Vram **/
/*************************************************************/
-void LmmvEngine(void)
-{
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NX=vdp->MMC.NX;
- register int NY=vdp->MMC.NY;
- register int ADX=vdp->MMC.ADX;
- register int ANX=vdp->MMC.ANX;
- register UINT8 CL=vdp->MMC.CL;
- register UINT8 LO=vdp->MMC.LO;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::LmmvEngine()
+{
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NX=m_mmc.NX;
+ int NY=m_mmc.NY;
+ int ADX=m_mmc.ADX;
+ int ANX=m_mmc.ANX;
+ UINT8 CL=m_mmc.CL;
+ UINT8 LO=m_mmc.LO;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(lmmv_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
switch (ScrMode) {
default:
@@ -2072,10 +2689,10 @@ void LmmvEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
if (!NY)
DY+=TY;
VDP[38]=DY & 0xFF;
@@ -2084,37 +2701,37 @@ void LmmvEngine(void)
VDP[43]=(NY>>8) & 0x03;
}
else {
- vdp->MMC.DY=DY;
- vdp->MMC.NY=NY;
- vdp->MMC.ANX=ANX;
- vdp->MMC.ADX=ADX;
+ m_mmc.DY=DY;
+ m_mmc.NY=NY;
+ m_mmc.ANX=ANX;
+ m_mmc.ADX=ADX;
}
}
/** LmmmEngine() *********************************************/
/** Vram -> Vram **/
/*************************************************************/
-void LmmmEngine(void)
-{
- register int SX=vdp->MMC.SX;
- register int SY=vdp->MMC.SY;
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NX=vdp->MMC.NX;
- register int NY=vdp->MMC.NY;
- register int ASX=vdp->MMC.ASX;
- register int ADX=vdp->MMC.ADX;
- register int ANX=vdp->MMC.ANX;
- register UINT8 LO=vdp->MMC.LO;
- register int MXS = vdp->MMC.MXS;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::LmmmEngine()
+{
+ int SX=m_mmc.SX;
+ int SY=m_mmc.SY;
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NX=m_mmc.NX;
+ int NY=m_mmc.NY;
+ int ASX=m_mmc.ASX;
+ int ADX=m_mmc.ADX;
+ int ANX=m_mmc.ANX;
+ UINT8 LO=m_mmc.LO;
+ int MXS = m_mmc.MXS;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(lmmm_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
switch (ScrMode) {
default:
@@ -2128,10 +2745,10 @@ void LmmmEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
if (!NY) {
SY+=TY;
DY+=TY;
@@ -2147,40 +2764,40 @@ void LmmmEngine(void)
VDP[39]=(DY>>8) & 0x03;
}
else {
- vdp->MMC.SY=SY;
- vdp->MMC.DY=DY;
- vdp->MMC.NY=NY;
- vdp->MMC.ANX=ANX;
- vdp->MMC.ASX=ASX;
- vdp->MMC.ADX=ADX;
+ m_mmc.SY=SY;
+ m_mmc.DY=DY;
+ m_mmc.NY=NY;
+ m_mmc.ANX=ANX;
+ m_mmc.ASX=ASX;
+ m_mmc.ADX=ADX;
}
}
/** LmcmEngine() *********************************************/
/** Vram -> CPU **/
/*************************************************************/
-void LmcmEngine(void)
+void v99x8_device::LmcmEngine()
{
if ((VDPStatus[2]&0x80)!=0x80) {
- VDPStatus[7]=VDP[44]=VDP_POINT(((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0, vdp->MMC.MXS, vdp->MMC.ASX, vdp->MMC.SY);
- vdp->VdpOpsCnt-=GetVdpTimingValue(lmmv_timing);
+ VDPStatus[7]=VDP[44]=VDP_POINT(((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0, m_mmc.MXS, m_mmc.ASX, m_mmc.SY);
+ m_vdp_ops_count-=GetVdpTimingValue(lmmv_timing);
VDPStatus[2]|=0x80;
- if (!--vdp->MMC.ANX || ((vdp->MMC.ASX+=vdp->MMC.TX)&vdp->MMC.MX)) {
- if (!(--vdp->MMC.NY & 1023) || (vdp->MMC.SY+=vdp->MMC.TY)==-1) {
+ if (!--m_mmc.ANX || ((m_mmc.ASX+=m_mmc.TX)&m_mmc.MX)) {
+ if (!(--m_mmc.NY & 1023) || (m_mmc.SY+=m_mmc.TY)==-1) {
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
- if (!vdp->MMC.NY)
- vdp->MMC.DY+=vdp->MMC.TY;
- VDP[42]=vdp->MMC.NY & 0xFF;
- VDP[43]=(vdp->MMC.NY>>8) & 0x03;
- VDP[34]=vdp->MMC.SY & 0xFF;
- VDP[35]=(vdp->MMC.SY>>8) & 0x03;
+ m_vdp_engine=0;
+ if (!m_mmc.NY)
+ m_mmc.DY+=m_mmc.TY;
+ VDP[42]=m_mmc.NY & 0xFF;
+ VDP[43]=(m_mmc.NY>>8) & 0x03;
+ VDP[34]=m_mmc.SY & 0xFF;
+ VDP[35]=(m_mmc.SY>>8) & 0x03;
}
else {
- vdp->MMC.ASX=vdp->MMC.SX;
- vdp->MMC.ANX=vdp->MMC.NX;
+ m_mmc.ASX=m_mmc.SX;
+ m_mmc.ANX=m_mmc.NX;
}
}
}
@@ -2189,30 +2806,30 @@ void LmcmEngine(void)
/** LmmcEngine() *********************************************/
/** CPU -> Vram **/
/*************************************************************/
-void LmmcEngine(void)
+void v99x8_device::LmmcEngine()
{
if ((VDPStatus[2]&0x80)!=0x80) {
- register UINT8 SM=((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0;
+ UINT8 SM=((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0;
VDPStatus[7]=VDP[44]&=Mask[SM];
- VDP_PSET(SM, vdp->MMC.MXD, vdp->MMC.ADX, vdp->MMC.DY, VDP[44], vdp->MMC.LO);
- vdp->VdpOpsCnt-=GetVdpTimingValue(lmmv_timing);
+ VDP_PSET(SM, m_mmc.MXD, m_mmc.ADX, m_mmc.DY, VDP[44], m_mmc.LO);
+ m_vdp_ops_count-=GetVdpTimingValue(lmmv_timing);
VDPStatus[2]|=0x80;
- if (!--vdp->MMC.ANX || ((vdp->MMC.ADX+=vdp->MMC.TX)&vdp->MMC.MX)) {
- if (!(--vdp->MMC.NY&1023) || (vdp->MMC.DY+=vdp->MMC.TY)==-1) {
+ if (!--m_mmc.ANX || ((m_mmc.ADX+=m_mmc.TX)&m_mmc.MX)) {
+ if (!(--m_mmc.NY&1023) || (m_mmc.DY+=m_mmc.TY)==-1) {
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
- if (!vdp->MMC.NY)
- vdp->MMC.DY+=vdp->MMC.TY;
- VDP[42]=vdp->MMC.NY & 0xFF;
- VDP[43]=(vdp->MMC.NY>>8) & 0x03;
- VDP[38]=vdp->MMC.DY & 0xFF;
- VDP[39]=(vdp->MMC.DY>>8) & 0x03;
+ m_vdp_engine=0;
+ if (!m_mmc.NY)
+ m_mmc.DY+=m_mmc.TY;
+ VDP[42]=m_mmc.NY & 0xFF;
+ VDP[43]=(m_mmc.NY>>8) & 0x03;
+ VDP[38]=m_mmc.DY & 0xFF;
+ VDP[39]=(m_mmc.DY>>8) & 0x03;
}
else {
- vdp->MMC.ADX=vdp->MMC.DX;
- vdp->MMC.ANX=vdp->MMC.NX;
+ m_mmc.ADX=m_mmc.DX;
+ m_mmc.ANX=m_mmc.NX;
}
}
}
@@ -2221,23 +2838,23 @@ void LmmcEngine(void)
/** HmmvEngine() *********************************************/
/** VDP --> Vram **/
/*************************************************************/
-void HmmvEngine(void)
-{
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NX=vdp->MMC.NX;
- register int NY=vdp->MMC.NY;
- register int ADX=vdp->MMC.ADX;
- register int ANX=vdp->MMC.ANX;
- register UINT8 CL=vdp->MMC.CL;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::HmmvEngine()
+{
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NX=m_mmc.NX;
+ int NY=m_mmc.NY;
+ int ADX=m_mmc.ADX;
+ int ANX=m_mmc.ANX;
+ UINT8 CL=m_mmc.CL;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(hmmv_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
switch (ScrMode) {
default:
@@ -2251,10 +2868,10 @@ void HmmvEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
if (!NY)
DY+=TY;
VDP[42]=NY & 0xFF;
@@ -2263,36 +2880,36 @@ void HmmvEngine(void)
VDP[39]=(DY>>8) & 0x03;
}
else {
- vdp->MMC.DY=DY;
- vdp->MMC.NY=NY;
- vdp->MMC.ANX=ANX;
- vdp->MMC.ADX=ADX;
+ m_mmc.DY=DY;
+ m_mmc.NY=NY;
+ m_mmc.ANX=ANX;
+ m_mmc.ADX=ADX;
}
}
/** HmmmEngine() *********************************************/
/** Vram -> Vram **/
/*************************************************************/
-void HmmmEngine(void)
-{
- register int SX=vdp->MMC.SX;
- register int SY=vdp->MMC.SY;
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NX=vdp->MMC.NX;
- register int NY=vdp->MMC.NY;
- register int ASX=vdp->MMC.ASX;
- register int ADX=vdp->MMC.ADX;
- register int ANX=vdp->MMC.ANX;
- register int MXS = vdp->MMC.MXS;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::HmmmEngine()
+{
+ int SX=m_mmc.SX;
+ int SY=m_mmc.SY;
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NX=m_mmc.NX;
+ int NY=m_mmc.NY;
+ int ASX=m_mmc.ASX;
+ int ADX=m_mmc.ADX;
+ int ANX=m_mmc.ANX;
+ int MXS = m_mmc.MXS;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(hmmm_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
switch (ScrMode) {
default:
@@ -2306,10 +2923,10 @@ void HmmmEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
if (!NY) {
SY+=TY;
DY+=TY;
@@ -2325,33 +2942,33 @@ void HmmmEngine(void)
VDP[39]=(DY>>8) & 0x03;
}
else {
- vdp->MMC.SY=SY;
- vdp->MMC.DY=DY;
- vdp->MMC.NY=NY;
- vdp->MMC.ANX=ANX;
- vdp->MMC.ASX=ASX;
- vdp->MMC.ADX=ADX;
+ m_mmc.SY=SY;
+ m_mmc.DY=DY;
+ m_mmc.NY=NY;
+ m_mmc.ANX=ANX;
+ m_mmc.ASX=ASX;
+ m_mmc.ADX=ADX;
}
}
/** YmmmEngine() *********************************************/
/** Vram -> Vram **/
/*************************************************************/
-void YmmmEngine(void)
-{
- register int SY=vdp->MMC.SY;
- register int DX=vdp->MMC.DX;
- register int DY=vdp->MMC.DY;
- register int TX=vdp->MMC.TX;
- register int TY=vdp->MMC.TY;
- register int NY=vdp->MMC.NY;
- register int ADX=vdp->MMC.ADX;
- register int MXD = vdp->MMC.MXD;
- register int cnt;
- register int delta;
+void v99x8_device::YmmmEngine()
+{
+ int SY=m_mmc.SY;
+ int DX=m_mmc.DX;
+ int DY=m_mmc.DY;
+ int TX=m_mmc.TX;
+ int TY=m_mmc.TY;
+ int NY=m_mmc.NY;
+ int ADX=m_mmc.ADX;
+ int MXD = m_mmc.MXD;
+ int cnt;
+ int delta;
delta = GetVdpTimingValue(ymmm_timing);
- cnt = vdp->VdpOpsCnt;
+ cnt = m_vdp_ops_count;
switch (ScrMode) {
default:
@@ -2365,10 +2982,10 @@ void YmmmEngine(void)
break;
}
- if ((vdp->VdpOpsCnt=cnt)>0) {
- /* Command execution done */
+ if ((m_vdp_ops_count=cnt)>0) {
+ // Command execution done
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
if (!NY) {
SY+=TY;
DY+=TY;
@@ -2384,67 +3001,67 @@ void YmmmEngine(void)
VDP[39]=(DY>>8) & 0x03;
}
else {
- vdp->MMC.SY=SY;
- vdp->MMC.DY=DY;
- vdp->MMC.NY=NY;
- vdp->MMC.ADX=ADX;
+ m_mmc.SY=SY;
+ m_mmc.DY=DY;
+ m_mmc.NY=NY;
+ m_mmc.ADX=ADX;
}
}
/** HmmcEngine() *********************************************/
/** CPU -> Vram **/
/*************************************************************/
-void HmmcEngine(void)
+void v99x8_device::HmmcEngine()
{
if ((VDPStatus[2]&0x80)!=0x80) {
- *VDP_VRMP(((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0, vdp->MMC.MXD, vdp->MMC.ADX, vdp->MMC.DY)=VDP[44];
- vdp->VdpOpsCnt-=GetVdpTimingValue(hmmv_timing);
+ *VDP_VRMP(((ScrMode >= 5) && (ScrMode <= 8)) ? (ScrMode-5) : 0, m_mmc.MXD, m_mmc.ADX, m_mmc.DY)=VDP[44];
+ m_vdp_ops_count-=GetVdpTimingValue(hmmv_timing);
VDPStatus[2]|=0x80;
- if (!--vdp->MMC.ANX || ((vdp->MMC.ADX+=vdp->MMC.TX)&vdp->MMC.MX)) {
- if (!(--vdp->MMC.NY&1023) || (vdp->MMC.DY+=vdp->MMC.TY)==-1) {
+ if (!--m_mmc.ANX || ((m_mmc.ADX+=m_mmc.TX)&m_mmc.MX)) {
+ if (!(--m_mmc.NY&1023) || (m_mmc.DY+=m_mmc.TY)==-1) {
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
- if (!vdp->MMC.NY)
- vdp->MMC.DY+=vdp->MMC.TY;
- VDP[42]=vdp->MMC.NY & 0xFF;
- VDP[43]=(vdp->MMC.NY>>8) & 0x03;
- VDP[38]=vdp->MMC.DY & 0xFF;
- VDP[39]=(vdp->MMC.DY>>8) & 0x03;
+ m_vdp_engine=0;
+ if (!m_mmc.NY)
+ m_mmc.DY+=m_mmc.TY;
+ VDP[42]=m_mmc.NY & 0xFF;
+ VDP[43]=(m_mmc.NY>>8) & 0x03;
+ VDP[38]=m_mmc.DY & 0xFF;
+ VDP[39]=(m_mmc.DY>>8) & 0x03;
}
else {
- vdp->MMC.ADX=vdp->MMC.DX;
- vdp->MMC.ANX=vdp->MMC.NX;
+ m_mmc.ADX=m_mmc.DX;
+ m_mmc.ANX=m_mmc.NX;
}
}
}
}
/** VDPWrite() ***********************************************/
-/** Use this function to transfer pixel(s) from CPU to vdp-> **/
+/** Use this function to transfer pixel(s) from CPU to m_ **/
/*************************************************************/
-static void v9938_cpu_to_vdp (UINT8 V)
+void v99x8_device::cpu_to_vdp (UINT8 V)
{
VDPStatus[2]&=0x7F;
VDPStatus[7]=VDP[44]=V;
- if(vdp->VdpEngine&&(vdp->VdpOpsCnt>0)) vdp->VdpEngine();
+ if(m_vdp_engine&&(m_vdp_ops_count>0)) (this->*m_vdp_engine)();
}
/** VDPRead() ************************************************/
/** Use this function to transfer pixel(s) from VDP to CPU. **/
/*************************************************************/
-static UINT8 v9938_vdp_to_cpu (void)
+UINT8 v99x8_device::vdp_to_cpu ()
{
VDPStatus[2]&=0x7F;
- if(vdp->VdpEngine&&(vdp->VdpOpsCnt>0)) vdp->VdpEngine();
+ if(m_vdp_engine&&(m_vdp_ops_count>0)) (this->*m_vdp_engine)();
return(VDP[44]);
}
/** ReportVdpCommand() ***************************************/
/** Report VDP Command to be executed **/
/*************************************************************/
-static void ReportVdpCommand(register UINT8 Op)
+void v99x8_device::ReportVdpCommand(UINT8 Op)
{
static const char *const Ops[16] =
{
@@ -2457,10 +3074,10 @@ static void ReportVdpCommand(register UINT8 Op)
" LMMV"," LMMM"," LMCM"," LMMC"," HMMV"," HMMM"," YMMM"," HMMC"
};
- register UINT8 CL, CM, LO;
- register int SX,SY, DX,DY, NX,NY;
+ UINT8 CL, CM, LO;
+ int SX,SY, DX,DY, NX,NY;
- /* Fetch arguments */
+ // Fetch arguments
CL = VDP[44];
SX = (VDP[32]+((int)VDP[33]<<8)) & 511;
SY = (VDP[34]+((int)VDP[35]<<8)) & 1023;
@@ -2482,32 +3099,32 @@ static void ReportVdpCommand(register UINT8 Op)
/** VDPDraw() ************************************************/
/** Perform a given V9938 operation Op. **/
/*************************************************************/
-static UINT8 v9938_command_unit_w (UINT8 Op)
+UINT8 v99x8_device::command_unit_w (UINT8 Op)
{
- register int SM;
+ int SM;
- /* V9938 ops only work in SCREENs 5-8 */
+ // V9938 ops only work in SCREENs 5-8
if (ScrMode<5)
return(0);
- SM = ScrMode-5; /* Screen mode index 0..3 */
+ SM = ScrMode-5; // Screen mode index 0..3
- vdp->MMC.CM = Op>>4;
- if ((vdp->MMC.CM & 0x0C) != 0x0C && vdp->MMC.CM != 0)
- /* Dot operation: use only relevant bits of color */
+ m_mmc.CM = Op>>4;
+ if ((m_mmc.CM & 0x0C) != 0x0C && m_mmc.CM != 0)
+ // Dot operation: use only relevant bits of color
VDPStatus[7]=(VDP[44]&=Mask[SM]);
-/* if(Verbose&0x02) */
+// if(Verbose&0x02)
ReportVdpCommand(Op);
switch(Op>>4) {
case CM_ABRT:
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
return 1;
case CM_POINT:
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
VDPStatus[7]=VDP[44]=
VDP_POINT(SM, (VDP[45] & 0x10) != 0,
VDP[32]+((int)VDP[33]<<8),
@@ -2515,7 +3132,7 @@ static UINT8 v9938_command_unit_w (UINT8 Op)
return 1;
case CM_PSET:
VDPStatus[2]&=0xFE;
- vdp->VdpEngine=0;
+ m_vdp_engine=0;
VDP_PSET(SM, (VDP[45] & 0x20) != 0,
VDP[36]+((int)VDP[37]<<8),
VDP[38]+((int)VDP[39]<<8),
@@ -2523,103 +3140,103 @@ static UINT8 v9938_command_unit_w (UINT8 Op)
Op&0x0F);
return 1;
case CM_SRCH:
- vdp->VdpEngine=SrchEngine;
+ m_vdp_engine=&v99x8_device::SrchEngine;
break;
case CM_LINE:
- vdp->VdpEngine=LineEngine;
+ m_vdp_engine=&v99x8_device::LineEngine;
break;
case CM_LMMV:
- vdp->VdpEngine=LmmvEngine;
+ m_vdp_engine=&v99x8_device::LmmvEngine;
break;
case CM_LMMM:
- vdp->VdpEngine=LmmmEngine;
+ m_vdp_engine=&v99x8_device::LmmmEngine;
break;
case CM_LMCM:
- vdp->VdpEngine=LmcmEngine;
+ m_vdp_engine=&v99x8_device::LmcmEngine;
break;
case CM_LMMC:
- vdp->VdpEngine=LmmcEngine;
+ m_vdp_engine=&v99x8_device::LmmcEngine;
break;
case CM_HMMV:
- vdp->VdpEngine=HmmvEngine;
+ m_vdp_engine=&v99x8_device::HmmvEngine;
break;
case CM_HMMM:
- vdp->VdpEngine=HmmmEngine;
+ m_vdp_engine=&v99x8_device::HmmmEngine;
break;
case CM_YMMM:
- vdp->VdpEngine=YmmmEngine;
+ m_vdp_engine=&v99x8_device::YmmmEngine;
break;
case CM_HMMC:
- vdp->VdpEngine=HmmcEngine;
+ m_vdp_engine=&v99x8_device::HmmcEngine;
break;
default:
LOG(("V9938: Unrecognized opcode %02Xh\n",Op));
return(0);
}
- /* Fetch unconditional arguments */
- vdp->MMC.SX = (VDP[32]+((int)VDP[33]<<8)) & 511;
- vdp->MMC.SY = (VDP[34]+((int)VDP[35]<<8)) & 1023;
- vdp->MMC.DX = (VDP[36]+((int)VDP[37]<<8)) & 511;
- vdp->MMC.DY = (VDP[38]+((int)VDP[39]<<8)) & 1023;
- vdp->MMC.NY = (VDP[42]+((int)VDP[43]<<8)) & 1023;
- vdp->MMC.TY = VDP[45]&0x08? -1:1;
- vdp->MMC.MX = PPL[SM];
- vdp->MMC.CL = VDP[44];
- vdp->MMC.LO = Op&0x0F;
- vdp->MMC.MXS = (VDP[45] & 0x10) != 0;
- vdp->MMC.MXD = (VDP[45] & 0x20) != 0;
-
- /* Argument depends on UINT8 or dot operation */
- if ((vdp->MMC.CM & 0x0C) == 0x0C) {
- vdp->MMC.TX = VDP[45]&0x04? -PPB[SM]:PPB[SM];
- vdp->MMC.NX = ((VDP[40]+((int)VDP[41]<<8)) & 1023)/PPB[SM];
+ // Fetch unconditional arguments
+ m_mmc.SX = (VDP[32]+((int)VDP[33]<<8)) & 511;
+ m_mmc.SY = (VDP[34]+((int)VDP[35]<<8)) & 1023;
+ m_mmc.DX = (VDP[36]+((int)VDP[37]<<8)) & 511;
+ m_mmc.DY = (VDP[38]+((int)VDP[39]<<8)) & 1023;
+ m_mmc.NY = (VDP[42]+((int)VDP[43]<<8)) & 1023;
+ m_mmc.TY = VDP[45]&0x08? -1:1;
+ m_mmc.MX = PPL[SM];
+ m_mmc.CL = VDP[44];
+ m_mmc.LO = Op&0x0F;
+ m_mmc.MXS = (VDP[45] & 0x10) != 0;
+ m_mmc.MXD = (VDP[45] & 0x20) != 0;
+
+ // Argument depends on UINT8 or dot operation
+ if ((m_mmc.CM & 0x0C) == 0x0C) {
+ m_mmc.TX = VDP[45]&0x04? -PPB[SM]:PPB[SM];
+ m_mmc.NX = ((VDP[40]+((int)VDP[41]<<8)) & 1023)/PPB[SM];
}
else {
- vdp->MMC.TX = VDP[45]&0x04? -1:1;
- vdp->MMC.NX = (VDP[40]+((int)VDP[41]<<8)) & 1023;
+ m_mmc.TX = VDP[45]&0x04? -1:1;
+ m_mmc.NX = (VDP[40]+((int)VDP[41]<<8)) & 1023;
}
- /* X loop variables are treated specially for LINE command */
- if (vdp->MMC.CM == CM_LINE) {
- vdp->MMC.ASX=((vdp->MMC.NX-1)>>1);
- vdp->MMC.ADX=0;
+ // X loop variables are treated specially for LINE command
+ if (m_mmc.CM == CM_LINE) {
+ m_mmc.ASX=((m_mmc.NX-1)>>1);
+ m_mmc.ADX=0;
}
else {
- vdp->MMC.ASX = vdp->MMC.SX;
- vdp->MMC.ADX = vdp->MMC.DX;
+ m_mmc.ASX = m_mmc.SX;
+ m_mmc.ADX = m_mmc.DX;
}
- /* NX loop variable is treated specially for SRCH command */
- if (vdp->MMC.CM == CM_SRCH)
- vdp->MMC.ANX=(VDP[45]&0x02)!=0; /* Do we look for "==" or "!="? */
+ // NX loop variable is treated specially for SRCH command
+ if (m_mmc.CM == CM_SRCH)
+ m_mmc.ANX=(VDP[45]&0x02)!=0; // Do we look for "==" or "!="?
else
- vdp->MMC.ANX = vdp->MMC.NX;
+ m_mmc.ANX = m_mmc.NX;
- /* Command execution started */
+ // Command execution started
VDPStatus[2]|=0x01;
- /* Start execution if we still have time slices */
- if(vdp->VdpEngine&&(vdp->VdpOpsCnt>0)) vdp->VdpEngine();
+ // Start execution if we still have time slices
+ if(m_vdp_engine&&(m_vdp_ops_count>0)) (this->*m_vdp_engine)();
- /* Operation successfull initiated */
+ // Operation successfull initiated
return(1);
}
/** LoopVDP() ************************************************/
/** Run X steps of active VDP command **/
/*************************************************************/
-static void v9938_update_command (void)
+void v99x8_device::update_command ()
{
- if(vdp->VdpOpsCnt<=0)
+ if(m_vdp_ops_count<=0)
{
- vdp->VdpOpsCnt+=13662;
- if(vdp->VdpEngine&&(vdp->VdpOpsCnt>0)) vdp->VdpEngine();
+ m_vdp_ops_count+=13662;
+ if(m_vdp_engine&&(m_vdp_ops_count>0)) (this->*m_vdp_engine)();
}
else
{
- vdp->VdpOpsCnt=13662;
- if(vdp->VdpEngine) vdp->VdpEngine();
+ m_vdp_ops_count=13662;
+ if(m_vdp_engine) (this->*m_vdp_engine)();
}
}
diff --git a/src/emu/video/v9938.h b/src/emu/video/v9938.h
index 660d12c7a5a..3b0805197c8 100644
--- a/src/emu/video/v9938.h
+++ b/src/emu/video/v9938.h
@@ -4,36 +4,257 @@
***************************************************************************/
-/* init functions */
+#pragma once
+
+#ifndef __V9938_H__
+#define __V9938_H__
+
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_V9938_ADD(_tag, _screen, _vramsize) \
+ MCFG_DEVICE_ADD(_tag, V9938, 0) \
+ v9938_device::static_set_screen(*device, _screen); \
+ v9938_device::static_set_vram_size(*device, _vramsize); \
+
+#define MCFG_V9958_ADD(_tag, _screen, _vramsize) \
+ MCFG_DEVICE_ADD(_tag, V9958, 0) \
+ v9938_device::static_set_screen(*device, _screen); \
+ v9938_device::static_set_vram_size(*device, _vramsize); \
+
+#define MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(_func) \
+ v9938_device::static_set_interrupt_callback(*device, v99x8_interrupt_delegate(_func, #_func, (device_t *)0), device->tag());
+
+#define MCFG_V99X8_INTERRUPT_CALLBACK_DEVICE(_devname, _class, _func) \
+ v9938_device::static_set_interrupt_callback(*device, v99x8_interrupt_delegate(&_class::_func, #_class "::" #_func, (_class *)0), _devname);
+
+
+// init functions
#define MODEL_V9938 (0)
#define MODEL_V9958 (1)
-/* resolutions */
+// resolutions
#define RENDER_HIGH (0)
#define RENDER_LOW (1)
#define RENDER_AUTO (2)
-void v9938_init (running_machine &machine, int which, screen_device &screen, bitmap_t &bitmap, int model, int vram_size, void (*callback)(running_machine &, int) );
-void v9938_reset (int which);
-int v9938_interrupt (running_machine &machine, int which);
-void v9938_set_sprite_limit (int which, int);
-void v9938_set_resolution (int which, int);
-int v9938_get_transpen(int which);
-
-extern PALETTE_INIT( v9938 );
-extern PALETTE_INIT( v9958 );
-extern WRITE8_HANDLER( v9938_0_palette_w );
-extern WRITE8_HANDLER( v9938_1_palette_w );
-extern WRITE8_HANDLER( v9938_0_vram_w );
-extern WRITE8_HANDLER( v9938_1_vram_w );
-extern READ8_HANDLER( v9938_0_vram_r );
-extern READ8_HANDLER( v9938_1_vram_r );
-extern WRITE8_HANDLER( v9938_0_command_w );
-extern WRITE8_HANDLER( v9938_1_command_w );
-extern READ8_HANDLER( v9938_0_status_r );
-extern READ8_HANDLER( v9938_1_status_r );
-extern WRITE8_HANDLER( v9938_0_register_w );
-extern WRITE8_HANDLER( v9938_1_register_w );
-
-void v9938_update_mouse_state(int which, int mx_delta, int my_delta, int button_state);
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+extern const device_type V9938;
+extern const device_type V9958;
+
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class v99x8_device;
+typedef delegate<void (v99x8_device &, int)> v99x8_interrupt_delegate;
+
+
+// ======================> v99x8_device
+
+class v99x8_device : public device_t
+{
+ friend PALETTE_INIT( v9958 );
+
+protected:
+ // construction/destruction
+ v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock);
+
+public:
+ int interrupt ();
+ void set_sprite_limit (int i) { m_sprite_limit = i; }
+ void set_resolution (int);
+ int get_transpen();
+ bitmap_ind16 &get_bitmap() { return m_bitmap; }
+ void update_mouse_state(int mx_delta, int my_delta, int button_state);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ DECLARE_READ8_MEMBER( read );
+ DECLARE_WRITE8_MEMBER( write );
+
+ UINT8 vram_r();
+ UINT8 status_r();
+ void palette_w(UINT8 data);
+ void vram_w(UINT8 data);
+ void command_w(UINT8 data);
+ void register_w(UINT8 data);
+
+ static void static_set_screen(device_t &device, const char *screen_name);
+ static void static_set_vram_size(device_t &device, UINT32 vram_size);
+ static void static_set_interrupt_callback(device_t &device, v99x8_interrupt_delegate callback, const char *device_name);
+
+protected:
+ int m_model;
+
+ // device overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ // internal helpers
+ void reset_palette ();
+ void vram_write (int offset, int data);
+ int vram_read (int offset);
+ void check_int ();
+ void register_write (int reg, int data);
+
+ template<typename _PixelType, int _Width> void default_border(const pen_t *pens, _PixelType *ln);
+ template<typename _PixelType, int _Width> void graphic7_border(const pen_t *pens, _PixelType *ln);
+ template<typename _PixelType, int _Width> void graphic5_border(const pen_t *pens, _PixelType *ln);
+ template<typename _PixelType, int _Width> void mode_text1(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_text2(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_multi(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic1(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic23(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic4(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic5(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic6(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_graphic7(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void mode_unknown(const pen_t *pens, _PixelType *ln, int line);
+ template<typename _PixelType, int _Width> void default_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col);
+ template<typename _PixelType, int _Width> void graphic5_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col);
+ template<typename _PixelType, int _Width> void graphic7_draw_sprite(const pen_t *pens, _PixelType *ln, UINT8 *col);
+
+ void sprite_mode1 (int line, UINT8 *col);
+ void sprite_mode2 (int line, UINT8 *col);
+ void set_mode ();
+ void refresh_16 (int line);
+ void refresh_line (int line);
+
+ void interrupt_start_vblank ();
+
+ UINT8 *VDPVRMP(UINT8 M, int MX, int X, int Y);
+
+ UINT8 VDPpoint5(int MXS, int SX, int SY);
+ UINT8 VDPpoint6(int MXS, int SX, int SY);
+ UINT8 VDPpoint7(int MXS, int SX, int SY);
+ UINT8 VDPpoint8(int MXS, int SX, int SY);
+
+ UINT8 VDPpoint(UINT8 SM, int MXS, int SX, int SY);
+
+ void VDPpsetlowlevel(UINT8 *P, UINT8 CL, UINT8 M, UINT8 OP);
+
+ void VDPpset5(int MXD, int DX, int DY, UINT8 CL, UINT8 OP);
+ void VDPpset6(int MXD, int DX, int DY, UINT8 CL, UINT8 OP);
+ void VDPpset7(int MXD, int DX, int DY, UINT8 CL, UINT8 OP);
+ void VDPpset8(int MXD, int DX, int DY, UINT8 CL, UINT8 OP);
+
+ void VDPpset(UINT8 SM, int MXD, int DX, int DY, UINT8 CL, UINT8 OP);
+
+ int GetVdpTimingValue(const int *);
+
+ void SrchEngine();
+ void LineEngine();
+ void LmmvEngine();
+ void LmmmEngine();
+ void LmcmEngine();
+ void LmmcEngine();
+ void HmmvEngine();
+ void HmmmEngine();
+ void YmmmEngine();
+ void HmmcEngine();
+
+ void cpu_to_vdp (UINT8 V);
+ UINT8 vdp_to_cpu ();
+ void ReportVdpCommand(UINT8 Op);
+ UINT8 command_unit_w (UINT8 Op);
+ void update_command ();
+
+ // general
+ int m_offset_x, m_offset_y, m_visible_y, m_mode;
+ // palette
+ int m_pal_write_first, m_cmd_write_first;
+ UINT8 m_pal_write, m_cmd_write;
+ UINT8 m_pal_reg[32], m_stat_reg[10], m_cont_reg[48], m_read_ahead;
+ // memory
+ UINT16 m_address_latch;
+ UINT8 *m_vram_exp;
+ int m_vram_size;
+ // interrupt
+ UINT8 m_int_state;
+ v99x8_interrupt_delegate m_int_callback;
+ const char *m_int_callback_device_name;
+ int m_scanline;
+ // blinking
+ int m_blink, m_blink_count;
+ // sprites
+ int m_sprite_limit;
+ // size
+ int m_size, m_size_old, m_size_auto, m_size_now;
+ // mouse
+ UINT8 m_mx_delta, m_my_delta;
+ // mouse & lightpen
+ UINT8 m_button_state;
+ // palette
+ UINT16 m_pal_ind16[16];
+ UINT16 m_pal_ind256[256];
+ // render screen
+ screen_device *m_screen;
+ const char *m_screen_name;
+ // render bitmap
+ bitmap_ind16 m_bitmap;
+ // Command unit
+ struct {
+ int SX,SY;
+ int DX,DY;
+ int TX,TY;
+ int NX,NY;
+ int MX;
+ int ASX,ADX,ANX;
+ UINT8 CL;
+ UINT8 LO;
+ UINT8 CM;
+ UINT8 MXS, MXD;
+ } m_mmc;
+ int m_vdp_ops_count;
+ void (v99x8_device::*m_vdp_engine)();
+
+ UINT8 m_vram[0x20000];
+
+ struct v99x8_mode
+ {
+ UINT8 m;
+ void (v99x8_device::*visible_16)(const pen_t *, UINT16*, int);
+ void (v99x8_device::*visible_16s)(const pen_t *, UINT16*, int);
+ void (v99x8_device::*border_16)(const pen_t *, UINT16*);
+ void (v99x8_device::*border_16s)(const pen_t *, UINT16*);
+ void (v99x8_device::*sprites)(int, UINT8*);
+ void (v99x8_device::*draw_sprite_16)(const pen_t *, UINT16*, UINT8*);
+ void (v99x8_device::*draw_sprite_16s)(const pen_t *, UINT16*, UINT8*);
+ } ;
+ static const v99x8_mode s_modes[];
+
+ static UINT16 *s_pal_indYJK;
+};
+
+
+class v9938_device : public v99x8_device
+{
+public:
+ v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class v9958_device : public v99x8_device
+{
+public:
+ v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+PALETTE_INIT( v9938 );
+PALETTE_INIT( v9958 );
+
+
+#endif
diff --git a/src/emu/video/v9938mod.c b/src/emu/video/v9938mod.c
deleted file mode 100644
index 68c71437200..00000000000
--- a/src/emu/video/v9938mod.c
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- * This file is included for a number of different situations:
- * V9938_WIDTH : can be 512 + 32 or 256 + 16
- * V9938_BPP : can be 8 or 16
- */
-
-#if (V9938_WIDTH < 512)
- #if (V9938_BPP == 8)
- #define PEN_TYPE UINT8
- #define FNAME(name) v9938_##name##_8s
- #else
- #define PEN_TYPE UINT16
- #define FNAME(name) v9938_##name##_16s
- #endif
-#else
- #if (V9938_BPP == 8)
- #define PEN_TYPE UINT8
- #define FNAME(name) v9938_##name##_8
- #else
- #define PEN_TYPE UINT16
- #define FNAME(name) v9938_##name##_16
- #endif
-#endif
-
-
-#define V9938_BORDER_FUNC(name) \
- static void FNAME (name) (const pen_t *pens, PEN_TYPE *ln)
-
-#define V9938_MODE_FUNC(name) \
- static void FNAME (name) (const pen_t *pens, PEN_TYPE *ln, int line)
-
-#define V9938_SPRITE_FUNC(name) \
- static void FNAME (name) (const pen_t *pens, PEN_TYPE *ln, UINT8 *col)
-
-V9938_BORDER_FUNC (default_border)
- {
- PEN_TYPE pen;
- int i;
-
- pen = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
- i = V9938_WIDTH;
- while (i--) *ln++ = pen;
-
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_BORDER_FUNC (graphic7_border)
- {
- PEN_TYPE pen;
- int i;
-
- pen = pens[vdp->pal_ind256[vdp->contReg[7]]];
- i = V9938_WIDTH;
- while (i--) *ln++ = pen;
-
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_BORDER_FUNC (graphic5_border)
- {
- int i;
- PEN_TYPE pen0;
-#if (V9938_WIDTH > 512)
- PEN_TYPE pen1;
-
- pen1 = pens[vdp->pal_ind16[(vdp->contReg[7]&0x03)]];
- pen0 = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
- i = (V9938_WIDTH) / 2;
- while (i--) { *ln++ = pen0; *ln++ = pen1; }
-#else
- pen0 = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
- i = V9938_WIDTH;
- while (i--) *ln++ = pen0;
-#endif
- vdp->size_now = RENDER_HIGH;
- }
-
-V9938_MODE_FUNC (mode_text1)
- {
- int pattern, x, xx, name, xxx;
- PEN_TYPE fg, bg, pen;
- UINT8 *nametbl, *patterntbl;
-
- patterntbl = vdp->vram + (vdp->contReg[4] << 11);
- nametbl = vdp->vram + (vdp->contReg[2] << 10);
-
- fg = pens[vdp->pal_ind16[vdp->contReg[7] >> 4]];
- bg = pens[vdp->pal_ind16[vdp->contReg[7] & 15]];
-
- name = (line/8)*40;
-
- pen = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-
- xxx = vdp->offset_x + 8;
-#if (V9938_WIDTH > 512)
- xxx *= 2;
-#endif
- while (xxx--) *ln++ = pen;
-
- for (x=0;x<40;x++)
- {
- pattern = patterntbl[(nametbl[name] * 8) +
- ((line + vdp->contReg[23]) & 7)];
- for (xx=0;xx<6;xx++)
- {
- *ln++ = (pattern & 0x80) ? fg : bg;
-#if (V9938_WIDTH > 512)
- *ln++ = (pattern & 0x80) ? fg : bg;
-#endif
- pattern <<= 1;
- }
- /* width height 212, characters start repeating at the bottom */
- name = (name + 1) & 0x3ff;
- }
-
- xxx = (16 - vdp->offset_x) + 8;
-#if (V9938_WIDTH > 512)
- xxx *= 2;
-#endif
- while (xxx--) *ln++ = pen;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_text2)
- {
- int pattern, x, charcode, name, xxx, patternmask, colourmask;
- PEN_TYPE fg, bg, fg0, bg0, pen;
- UINT8 *nametbl, *patterntbl, *colourtbl;
-
- patterntbl = vdp->vram + (vdp->contReg[4] << 11);
- colourtbl = vdp->vram + ((vdp->contReg[3] & 0xf8) << 6) + (vdp->contReg[10] << 14);
-#if 0
- colourmask = ((vdp->contReg[3] & 7) << 5) | 0x1f; /* cause a bug in Forth+ v1.0 on Geneve */
-#else
- colourmask = ((vdp->contReg[3] & 7) << 6) | 0x3f; /* verify! */
-#endif
- nametbl = vdp->vram + ((vdp->contReg[2] & 0xfc) << 10);
- patternmask = ((vdp->contReg[2] & 3) << 10) | 0x3ff; /* seems correct */
-
- fg = pens[vdp->pal_ind16[vdp->contReg[7] >> 4]];
- bg = pens[vdp->pal_ind16[vdp->contReg[7] & 15]];
- fg0 = pens[vdp->pal_ind16[vdp->contReg[12] >> 4]];
- bg0 = pens[vdp->pal_ind16[vdp->contReg[12] & 15]];
-
- name = (line/8)*80;
-
- xxx = vdp->offset_x + 8;
- pen = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH > 512)
- xxx *= 2;
-#endif
- while (xxx--) *ln++ = pen;
-
- for (x=0;x<80;x++)
- {
- charcode = nametbl[name&patternmask];
- if (vdp->blink)
- {
- pattern = colourtbl[(name/8)&colourmask];
- if (pattern & (0x80 >> (name & 7) ) )
- {
- pattern = patterntbl[(charcode * 8) +
- ((line + vdp->contReg[23]) & 7)];
-
-#if (V9938_WIDTH > 512)
- *ln++ = (pattern & 0x80) ? fg0 : bg0;
- *ln++ = (pattern & 0x40) ? fg0 : bg0;
- *ln++ = (pattern & 0x20) ? fg0 : bg0;
- *ln++ = (pattern & 0x10) ? fg0 : bg0;
- *ln++ = (pattern & 0x08) ? fg0 : bg0;
- *ln++ = (pattern & 0x04) ? fg0 : bg0;
-#else
- *ln++ = (pattern & 0x80) ? fg0 : bg0;
- *ln++ = (pattern & 0x20) ? fg0 : bg0;
- *ln++ = (pattern & 0x08) ? fg0 : bg0;
-#endif
-
- name++;
- continue;
- }
- }
-
- pattern = patterntbl[(charcode * 8) +
- ((line + vdp->contReg[23]) & 7)];
-
-#if (V9938_WIDTH > 512)
- *ln++ = (pattern & 0x80) ? fg : bg;
- *ln++ = (pattern & 0x40) ? fg : bg;
- *ln++ = (pattern & 0x20) ? fg : bg;
- *ln++ = (pattern & 0x10) ? fg : bg;
- *ln++ = (pattern & 0x08) ? fg : bg;
- *ln++ = (pattern & 0x04) ? fg : bg;
-#else
- *ln++ = (pattern & 0x80) ? fg : bg;
- *ln++ = (pattern & 0x20) ? fg : bg;
- *ln++ = (pattern & 0x08) ? fg : bg;
-#endif
-
- name++;
- }
-
- xxx = 16 - vdp->offset_x + 8;
-#if (V9938_WIDTH > 512)
- xxx *= 2;
-#endif
- while (xxx--) *ln++ = pen;
- vdp->size_now = RENDER_HIGH;
- }
-
-V9938_MODE_FUNC (mode_multi)
- {
- UINT8 *nametbl, *patterntbl, colour;
- int name, line2, x, xx;
- PEN_TYPE pen, pen_bg;
-
- nametbl = vdp->vram + (vdp->contReg[2] << 10);
- patterntbl = vdp->vram + (vdp->contReg[4] << 11);
-
- line2 = (line - vdp->contReg[23]) & 255;
- name = (line2/8)*32;
-
- pen_bg = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH < 512)
- xx = vdp->offset_x;
-#else
- xx = vdp->offset_x * 2;
-#endif
- while (xx--) *ln++ = pen_bg;
-
- for (x=0;x<32;x++)
- {
- colour = patterntbl[(nametbl[name] * 8) + ((line2/4)&7)];
- pen = pens[vdp->pal_ind16[colour>>4]];
- /* eight pixels */
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
-#endif
- pen = pens[vdp->pal_ind16[colour&15]];
- /* eight pixels */
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
- *ln++ = pen;
-#endif
- name++;
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen_bg;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_graphic1)
- {
- PEN_TYPE fg, bg, pen;
- UINT8 *nametbl, *patterntbl, *colourtbl;
- int pattern, x, xx, line2, name, charcode, colour, xxx;
-
- nametbl = vdp->vram + (vdp->contReg[2] << 10);
- colourtbl = vdp->vram + (vdp->contReg[3] << 6) + (vdp->contReg[10] << 14);
- patterntbl = vdp->vram + (vdp->contReg[4] << 11);
-
- line2 = (line - vdp->contReg[23]) & 255;
-
- name = (line2/8)*32;
-
- pen = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH < 512)
- xxx = vdp->offset_x;
-#else
- xxx = vdp->offset_x * 2;
-#endif
- while (xxx--) *ln++ = pen;
-
- for (x=0;x<32;x++)
- {
- charcode = nametbl[name];
- colour = colourtbl[charcode/8];
- fg = pens[vdp->pal_ind16[colour>>4]];
- bg = pens[vdp->pal_ind16[colour&15]];
- pattern = patterntbl[charcode * 8 + (line2 & 7)];
-
- for (xx=0;xx<8;xx++)
- {
- *ln++ = (pattern & 0x80) ? fg : bg;
-#if (V9938_WIDTH > 512)
- *ln++ = (pattern & 0x80) ? fg : bg;
-#endif
- pattern <<= 1;
- }
- name++;
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_graphic23)
- {
- PEN_TYPE fg, bg, pen;
- UINT8 *nametbl, *patterntbl, *colourtbl;
- int pattern, x, xx, line2, name, charcode,
- colour, colourmask, patternmask, xxx;
-
- colourmask = (vdp->contReg[3] & 0x7f) * 8 | 7;
- patternmask = (vdp->contReg[4] & 0x03) * 256 | (colourmask & 255);
-
- nametbl = vdp->vram + (vdp->contReg[2] << 10);
- colourtbl = vdp->vram + ((vdp->contReg[3] & 0x80) << 6) + (vdp->contReg[10] << 14);
- patterntbl = vdp->vram + ((vdp->contReg[4] & 0x3c) << 11);
-
- line2 = (line + vdp->contReg[23]) & 255;
- name = (line2/8)*32;
-
- pen = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH < 512)
- xxx = vdp->offset_x;
-#else
- xxx = vdp->offset_x * 2;
-#endif
- while (xxx--) *ln++ = pen;
-
- for (x=0;x<32;x++)
- {
- charcode = nametbl[name] + (line2&0xc0)*4;
- colour = colourtbl[(charcode&colourmask)*8+(line2&7)];
- pattern = patterntbl[(charcode&patternmask)*8+(line2&7)];
- fg = pens[vdp->pal_ind16[colour>>4]];
- bg = pens[vdp->pal_ind16[colour&15]];
- for (xx=0;xx<8;xx++)
- {
- *ln++ = (pattern & 0x80) ? fg : bg;
-#if (V9938_WIDTH > 512)
- *ln++ = (pattern & 0x80) ? fg : bg;
-#endif
- pattern <<= 1;
- }
- name++;
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_graphic4)
- {
- UINT8 *nametbl, colour;
- int line2, linemask, x, xx;
- PEN_TYPE pen, pen_bg;
-
- linemask = ((vdp->contReg[2] & 0x1f) << 3) | 7;
-
- line2 = ((line + vdp->contReg[23]) & linemask) & 255;
-
- nametbl = vdp->vram + ((vdp->contReg[2] & 0x40) << 10) + line2 * 128;
- if ( (vdp->contReg[2] & 0x20) && (V9938_SECOND_FIELD) )
- nametbl += 0x8000;
-
- pen_bg = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH < 512)
- xx = vdp->offset_x;
-#else
- xx = vdp->offset_x * 2;
-#endif
- while (xx--) *ln++ = pen_bg;
-
- for (x=0;x<128;x++)
- {
- colour = *nametbl++;
- pen = pens[vdp->pal_ind16[colour>>4]];
- *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen;
-#endif
- pen = pens[vdp->pal_ind16[colour&15]];
- *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen;
-#endif
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen_bg;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_graphic5)
- {
- UINT8 *nametbl, colour;
- int line2, linemask, x, xx;
- PEN_TYPE pen_bg0[4];
-#if (V9938_WIDTH > 512)
- PEN_TYPE pen_bg1[4];
-#endif
-
- linemask = ((vdp->contReg[2] & 0x1f) << 3) | 7;
-
- line2 = ((line + vdp->contReg[23]) & linemask) & 255;
-
- nametbl = vdp->vram + ((vdp->contReg[2] & 0x40) << 10) + line2 * 128;
- if ( (vdp->contReg[2] & 0x20) && (V9938_SECOND_FIELD) )
- nametbl += 0x8000;
-
-#if (V9938_WIDTH > 512)
- pen_bg1[0] = pens[vdp->pal_ind16[(vdp->contReg[7]&0x03)]];
- pen_bg0[0] = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
-
- xx = vdp->offset_x;
- while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; }
-
- x = (vdp->contReg[8] & 0x20) ? 0 : 1;
-
- for (;x<4;x++)
- {
- pen_bg0[x] = pens[vdp->pal_ind16[x]];
- pen_bg1[x] = pens[vdp->pal_ind16[x]];
- }
-
- for (x=0;x<128;x++)
- {
- colour = *nametbl++;
-
- *ln++ = pen_bg0[colour>>6];
- *ln++ = pen_bg1[(colour>>4)&3];
- *ln++ = pen_bg0[(colour>>2)&3];
- *ln++ = pen_bg1[(colour&3)];
- }
-
- pen_bg1[0] = pens[vdp->pal_ind16[(vdp->contReg[7]&0x03)]];
- pen_bg0[0] = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
- xx = 16 - vdp->offset_x;
- while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; }
-#else
- pen_bg0[0] = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
-
- x = (vdp->contReg[8] & 0x20) ? 0 : 1;
-
- for (;x<4;x++)
- pen_bg0[x] = pens[vdp->pal_ind16[x]];
-
- xx = vdp->offset_x;
- while (xx--) *ln++ = pen_bg0[0];
-
- for (x=0;x<128;x++)
- {
- colour = *nametbl++;
- *ln++ = pen_bg0[colour>>6];
- *ln++ = pen_bg0[(colour>>2)&3];
- }
-
- pen_bg0[0] = pens[vdp->pal_ind16[((vdp->contReg[7]>>2)&0x03)]];
- xx = 16 - vdp->offset_x;
- while (xx--) *ln++ = pen_bg0[0];
-#endif
- vdp->size_now = RENDER_HIGH;
- }
-
-V9938_MODE_FUNC (mode_graphic6)
- {
- UINT8 colour;
- int line2, linemask, x, xx, nametbl;
- PEN_TYPE pen_bg, fg0;
-#if (V9938_WIDTH > 512)
- PEN_TYPE fg1;
-#endif
-
- linemask = ((vdp->contReg[2] & 0x1f) << 3) | 7;
-
- line2 = ((line + vdp->contReg[23]) & linemask) & 255;
-
- nametbl = line2 << 8 ;
- if ( (vdp->contReg[2] & 0x20) && (V9938_SECOND_FIELD) )
- nametbl += 0x10000;
-
- pen_bg = pens[vdp->pal_ind16[(vdp->contReg[7]&0x0f)]];
-#if (V9938_WIDTH < 512)
- xx = vdp->offset_x;
-#else
- xx = vdp->offset_x * 2;
-#endif
- while (xx--) *ln++ = pen_bg;
-
- if (vdp->contReg[2] & 0x40)
- {
- for (x=0;x<32;x++)
- {
- nametbl++;
- colour = vdp->vram[((nametbl&1) << 16) | (nametbl>>1)];
- fg0 = pens[vdp->pal_ind16[colour>>4]];
-#if (V9938_WIDTH < 512)
- *ln++ = fg0; *ln++ = fg0;
- *ln++ = fg0; *ln++ = fg0;
- *ln++ = fg0; *ln++ = fg0;
- *ln++ = fg0; *ln++ = fg0;
-#else
- fg1 = pens[vdp->pal_ind16[colour&15]];
- *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
- *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
- *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
- *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1;
-#endif
- nametbl += 7;
- }
- }
- else
- {
- for (x=0;x<256;x++)
- {
- colour = vdp->vram[((nametbl&1) << 16) | (nametbl>>1)];
- *ln++ = pens[vdp->pal_ind16[colour>>4]];
-#if (V9938_WIDTH > 512)
- *ln++ = pens[vdp->pal_ind16[colour&15]];
-#endif
- nametbl++;
- }
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen_bg;
- vdp->size_now = RENDER_HIGH;
- }
-
-V9938_MODE_FUNC (mode_graphic7)
- {
- UINT8 colour;
- int line2, linemask, x, xx, nametbl;
- PEN_TYPE pen, pen_bg;
-
- linemask = ((vdp->contReg[2] & 0x1f) << 3) | 7;
-
- line2 = ((line + vdp->contReg[23]) & linemask) & 255;
-
- nametbl = line2 << 8;
- if ( (vdp->contReg[2] & 0x20) && (V9938_SECOND_FIELD) )
- nametbl += 0x10000;
-
- pen_bg = pens[vdp->pal_ind256[vdp->contReg[7]]];
-#if (V9938_WIDTH < 512)
- xx = vdp->offset_x;
-#else
- xx = vdp->offset_x * 2;
-#endif
- while (xx--) *ln++ = pen_bg;
-
- if (vdp->contReg[2] & 0x40)
- {
- for (x=0;x<32;x++)
- {
- nametbl++;
- colour = vdp->vram[((nametbl&1) << 16) | (nametbl>>1)];
- pen = pens[vdp->pal_ind256[colour]];
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
- *ln++ = pen; *ln++ = pen;
-#endif
- nametbl++;
- }
- }
- else
- {
- for (x=0;x<256;x++)
- {
- colour = vdp->vram[((nametbl&1) << 16) | (nametbl>>1)];
- pen = pens[vdp->pal_ind256[colour]];
- *ln++ = pen;
-#if (V9938_WIDTH > 512)
- *ln++ = pen;
-#endif
- nametbl++;
- }
- }
-
- xx = 16 - vdp->offset_x;
-#if (V9938_WIDTH > 512)
- xx *= 2;
-#endif
- while (xx--) *ln++ = pen_bg;
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_MODE_FUNC (mode_unknown)
- {
- PEN_TYPE fg, bg;
- int x;
-
- fg = pens[vdp->pal_ind16[vdp->contReg[7] >> 4]];
- bg = pens[vdp->pal_ind16[vdp->contReg[7] & 15]];
-
-#if (V9938_WIDTH < 512)
- x = vdp->offset_x;
- while (x--) *ln++ = bg;
-
- x = 256;
- while (x--) *ln++ = fg;
-
- x = 16 - vdp->offset_x;
- while (x--) *ln++ = bg;
-#else
- x = vdp->offset_x * 2;
- while (x--) *ln++ = bg;
-
- x = 512;
- while (x--) *ln++ = fg;
-
- x = (16 - vdp->offset_x) * 2;
- while (x--) *ln++ = bg;
-#endif
- if (vdp->size_now != RENDER_HIGH) vdp->size_now = RENDER_LOW;
- }
-
-V9938_SPRITE_FUNC (default_draw_sprite)
- {
- int i;
-#if (V9938_WIDTH > 512)
- ln += vdp->offset_x * 2;
-#else
- ln += vdp->offset_x;
-#endif
-
- for (i=0;i<256;i++)
- {
- if (col[i] & 0x80)
- {
- *ln++ = pens[vdp->pal_ind16[col[i]&0x0f]];
-#if (V9938_WIDTH > 512)
- *ln++ = pens[vdp->pal_ind16[col[i]&0x0f]];
-#endif
- }
- else
-#if (V9938_WIDTH > 512)
- ln += 2;
-#else
- ln++;
-#endif
- }
- }
-V9938_SPRITE_FUNC (graphic5_draw_sprite)
- {
- int i;
-#if (V9938_WIDTH > 512)
- ln += vdp->offset_x * 2;
-#else
- ln += vdp->offset_x;
-#endif
-
- for (i=0;i<256;i++)
- {
- if (col[i] & 0x80)
- {
- *ln++ = pens[vdp->pal_ind16[(col[i]>>2)&0x03]];
-#if (V9938_WIDTH > 512)
- *ln++ = pens[vdp->pal_ind16[col[i]&0x03]];
-#endif
- }
- else
-#if (V9938_WIDTH > 512)
- ln += 2;
-#else
- ln++;
-#endif
- }
- }
-
-
-V9938_SPRITE_FUNC (graphic7_draw_sprite)
- {
- static const UINT16 g7_ind16[16] = {
- 0, 2, 192, 194, 48, 50, 240, 242,
- 482, 7, 448, 455, 56, 63, 504, 511 };
- int i;
-
-#if (V9938_WIDTH > 512)
- ln += vdp->offset_x * 2;
-#else
- ln += vdp->offset_x;
-#endif
-
- for (i=0;i<256;i++)
- {
- if (col[i] & 0x80)
- {
- *ln++ = pens[g7_ind16[col[i]&0x0f]];
-#if (V9938_WIDTH > 512)
- *ln++ = pens[g7_ind16[col[i]&0x0f]];
-#endif
- }
- else
-#if (V9938_WIDTH > 512)
- ln += 2;
-#else
- ln++;
-#endif
- }
- }
-
-
-#undef PEN_TYPE
-#undef FNAME
-#undef V9938_BORDER_FUNC
-#undef V9938_MODE_FUNC
-#undef V9938_SPRITE_FUNC
diff --git a/src/emu/video/vector.c b/src/emu/video/vector.c
index 7b5759af3eb..e6ff14eb463 100644
--- a/src/emu/video/vector.c
+++ b/src/emu/video/vector.c
@@ -70,7 +70,7 @@ typedef struct _vector_texture vector_texture;
struct _vector_texture
{
render_texture * texture;
- bitmap_t * bitmap;
+ bitmap_argb32 * bitmap;
};
static vector_texture *vectortex[TEXTURE_INTENSITY_BUCKETS][TEXTURE_LENGTH_BUCKETS];
@@ -95,7 +95,7 @@ static render_texture *get_vector_texture(float dx, float dy, float intensity)
return tex->texture;
height = lbucket * VECTOR_WIDTH_DENOM / TEXTURE_LENGTH_BUCKETS;
- tex->bitmap = global_alloc(bitmap_t(TEXTURE_WIDTH, height, BITMAP_FORMAT_ARGB32));
+ tex->bitmap = global_alloc(bitmap_argb32(TEXTURE_WIDTH, height));
tex->bitmap.fill(MAKE_ARGB(0xff,0xff,0xff,0xff));
totalint = 1.0f;
@@ -254,7 +254,7 @@ void vector_clear_list (void)
}
-SCREEN_UPDATE( vector )
+SCREEN_UPDATE_RGB32( vector )
{
UINT32 flags = PRIMFLAG_ANTIALIAS(screen.machine().options().antialias() ? 1 : 0) | PRIMFLAG_BLENDMODE(BLENDMODE_ADD);
const rectangle &visarea = screen.visible_area();
diff --git a/src/emu/video/vector.h b/src/emu/video/vector.h
index 9fe90bba9d6..d91727edc4d 100644
--- a/src/emu/video/vector.h
+++ b/src/emu/video/vector.h
@@ -11,7 +11,7 @@
MAKE_RGB(pal4bit((c) >> 8), pal4bit((c) >> 4), pal4bit((c) >> 0))
VIDEO_START( vector );
-SCREEN_UPDATE( vector );
+SCREEN_UPDATE_RGB32( vector );
void vector_clear_list(void);
void vector_add_point(running_machine &machine, int x, int y, rgb_t color, int intensity);
diff --git a/src/emu/video/voodoo.c b/src/emu/video/voodoo.c
index 958df96c8ad..a2fd149dcb3 100644
--- a/src/emu/video/voodoo.c
+++ b/src/emu/video/voodoo.c
@@ -329,7 +329,7 @@ INLINE voodoo_state *get_safe_token(device_t *device)
*
*************************************/
-int voodoo_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
voodoo_state *v = get_safe_token(device);
int changed = v->fbi.video_changed;
diff --git a/src/emu/video/voodoo.h b/src/emu/video/voodoo.h
index 59cf11ec76a..28f33455ebf 100644
--- a/src/emu/video/voodoo.h
+++ b/src/emu/video/voodoo.h
@@ -132,7 +132,7 @@ struct _voodoo_config
FUNCTION PROTOTYPES
***************************************************************************/
-int voodoo_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
int voodoo_get_type(device_t *device);
int voodoo_is_stalled(device_t *device);
void voodoo_set_init_enable(device_t *device, UINT32 newval);
diff --git a/src/ldplayer/ldplayer.c b/src/ldplayer/ldplayer.c
index 21d6bd5058d..9a344d58aba 100644
--- a/src/ldplayer/ldplayer.c
+++ b/src/ldplayer/ldplayer.c
@@ -13,7 +13,8 @@
#include "emuopts.h"
#include "uimenu.h"
#include "cpu/mcs48/mcs48.h"
-#include "machine/laserdsc.h"
+#include "machine/pr8210.h"
+#include "machine/ldv1000.h"
#include <ctype.h>
#include "pr8210.lh"
@@ -617,30 +618,24 @@ INPUT_PORTS_END
*
*************************************/
-static MACHINE_CONFIG_START( ldplayer_core, ldplayer_state )
-
- // audio hardware
+static MACHINE_CONFIG_START( ldplayer_ntsc, ldplayer_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
-
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
-MACHINE_CONFIG_END
-
-
-static MACHINE_CONFIG_DERIVED( ldplayer_ntsc, ldplayer_core )
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( ldv1000, ldplayer_ntsc, ldv1000_state )
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_LASERDISC_GET_DISC(ldplayer_state::get_disc_static)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( pr8210, ldplayer_ntsc, pr8210_state )
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound")
+ MCFG_LASERDISC_PR8210_ADD("laserdisc")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_LASERDISC_GET_DISC(ldplayer_state::get_disc_static)
MACHINE_CONFIG_END
diff --git a/src/lib/util/avcomp.c b/src/lib/util/avcomp.c
index 7f63ff57b1f..91fa483d16c 100644
--- a/src/lib/util/avcomp.c
+++ b/src/lib/util/avcomp.c
@@ -92,6 +92,7 @@
#include <math.h>
#include <stdlib.h>
+#include <new>
/***************************************************************************
@@ -106,8 +107,19 @@
TYPE DEFINITIONS
***************************************************************************/
-struct _avcomp_state
+struct avcomp_state
{
+ avcomp_state()
+ : maxwidth(0),
+ maxheight(0),
+ maxchannels(0),
+ audiodata(NULL),
+ ycontext(NULL),
+ cbcontext(NULL),
+ crcontext(NULL),
+ audiohicontext(NULL),
+ audiolocontext(NULL) { }
+
/* video parameters */
UINT32 maxwidth, maxheight;
@@ -167,20 +179,17 @@ avcomp_state *avcomp_init(UINT32 maxwidth, UINT32 maxheight, UINT32 maxchannels)
return NULL;
/* allocate memory for state block */
- state = (avcomp_state *)malloc(sizeof(*state));
+ state = new(std::nothrow) avcomp_state;
if (state == NULL)
return NULL;
- /* clear the buffers */
- memset(state, 0, sizeof(*state));
-
/* compute the core info */
state->maxwidth = maxwidth;
state->maxheight = maxheight;
state->maxchannels = maxchannels;
/* now allocate data buffers */
- state->audiodata = (UINT8 *)malloc(65536 * state->maxchannels * 2);
+ state->audiodata = new(std::nothrow) UINT8[65536 * state->maxchannels * 2];
if (state->audiodata == NULL)
goto cleanup;
@@ -216,8 +225,7 @@ cleanup:
void avcomp_free(avcomp_state *state)
{
/* free the data buffers */
- if (state->audiodata != NULL)
- free(state->audiodata);
+ delete[] state->audiodata;
/* free the contexts */
if (state->ycontext != NULL)
@@ -231,7 +239,7 @@ void avcomp_free(avcomp_state *state)
if (state->audiolocontext != NULL)
huffman_free_context(state->audiolocontext);
- free(state);
+ delete state;
}
@@ -240,9 +248,14 @@ void avcomp_free(avcomp_state *state)
parameters
-------------------------------------------------*/
-void avcomp_config_compress(avcomp_state *state, const av_codec_compress_config *config)
+void avcomp_config_compress(avcomp_state *state, av_codec_compress_config *config)
{
- state->compress = *config;
+ state->compress.video.wrap(config->video, config->video.cliprect());
+ state->compress.channels = config->channels;
+ state->compress.samples = config->samples;
+ memcpy(state->compress.audio, config->audio, sizeof(state->compress.audio));
+ state->compress.metalength = config->metalength;
+ state->compress.metadata = config->metadata;
}
@@ -251,9 +264,15 @@ void avcomp_config_compress(avcomp_state *state, const av_codec_compress_config
decompression parameters
-------------------------------------------------*/
-void avcomp_config_decompress(avcomp_state *state, const av_codec_decompress_config *config)
+void avcomp_config_decompress(avcomp_state *state, av_codec_decompress_config *config)
{
- state->decompress = *config;
+ state->decompress.video.wrap(config->video, config->video.cliprect());
+ state->decompress.maxsamples = config->maxsamples;
+ state->decompress.actsamples = config->actsamples;
+ memcpy(state->decompress.audio, config->audio, sizeof(state->decompress.audio));
+ state->decompress.maxmetalength = config->maxmetalength;
+ state->decompress.actmetalength = config->actmetalength;
+ state->decompress.metadata = config->metadata;
}
@@ -326,12 +345,12 @@ avcomp_error avcomp_encode_data(avcomp_state *state, const UINT8 *source, UINT8
/* extract video information */
videostart = NULL;
videostride = width = height = 0;
- if (state->compress.video != NULL)
+ if (state->compress.video.valid())
{
- videostart = &state->compress.video->pix8(0);
- videostride = state->compress.video->rowpixels() * 2;
- width = state->compress.video->width();
- height = state->compress.video->height();
+ videostart = reinterpret_cast<const UINT8 *>(&state->compress.video.pix(0));
+ videostride = state->compress.video.rowpixels() * 2;
+ width = state->compress.video.width();
+ height = state->compress.video.height();
}
/* data is assumed to be native-endian */
@@ -483,15 +502,15 @@ avcomp_error avcomp_decode_data(avcomp_state *state, const UINT8 *source, UINT32
metastart = state->decompress.metadata;
for (chnum = 0; chnum < channels; chnum++)
audiostart[chnum] = (UINT8 *)state->decompress.audio[chnum];
- videostart = (state->decompress.video != NULL) ? &state->decompress.video->pix8(0) : NULL;
- videostride = (state->decompress.video != NULL) ? state->decompress.video->rowpixels() * 2 : 0;
+ videostart = (state->decompress.video.valid()) ? reinterpret_cast<UINT8 *>(&state->decompress.video.pix(0)) : NULL;
+ videostride = (state->decompress.video.valid()) ? state->decompress.video.rowpixels() * 2 : 0;
/* data is assumed to be native-endian */
*(UINT8 *)&betest = 1;
audioxor = videoxor = (betest == 1) ? 1 : 0;
/* verify against sizes */
- if (state->decompress.video != NULL && (state->decompress.video->width() < width || state->decompress.video->height() < height))
+ if (state->decompress.video.valid() && (state->decompress.video.width() < width || state->decompress.video.height() < height))
return AVCERR_VIDEO_TOO_LARGE;
for (chnum = 0; chnum < channels; chnum++)
if (state->decompress.audio[chnum] != NULL && state->decompress.maxsamples < samples)
diff --git a/src/lib/util/avcomp.h b/src/lib/util/avcomp.h
index f1f1ab76ceb..ee9bba8a192 100644
--- a/src/lib/util/avcomp.h
+++ b/src/lib/util/avcomp.h
@@ -76,10 +76,18 @@ typedef enum _avcomp_error avcomp_error;
***************************************************************************/
/* compression configuration */
-typedef struct _av_codec_compress_config av_codec_compress_config;
-struct _av_codec_compress_config
+struct av_codec_compress_config
{
- bitmap_t * video; /* pointer to video bitmap */
+ av_codec_compress_config()
+ : channels(0),
+ samples(0),
+ metalength(0),
+ metadata(NULL)
+ {
+ memset(audio, 0, sizeof(audio));
+ }
+
+ bitmap_yuy16 video; /* pointer to video bitmap */
UINT32 channels; /* number of channels */
UINT32 samples; /* number of samples per channel */
INT16 * audio[16]; /* pointer to individual audio channels */
@@ -89,10 +97,19 @@ struct _av_codec_compress_config
/* decompression configuration */
-typedef struct _av_codec_decompress_config av_codec_decompress_config;
-struct _av_codec_decompress_config
+struct av_codec_decompress_config
{
- bitmap_t * video; /* pointer to video bitmap */
+ av_codec_decompress_config()
+ : maxsamples(0),
+ actsamples(0),
+ maxmetalength(0),
+ actmetalength(0),
+ metadata(NULL)
+ {
+ memset(audio, 0, sizeof(audio));
+ }
+
+ bitmap_yuy16 video; /* pointer to video bitmap */
UINT32 maxsamples; /* maximum number of samples per channel */
UINT32 * actsamples; /* actual number of samples per channel */
INT16 * audio[16]; /* pointer to individual audio channels */
@@ -103,7 +120,7 @@ struct _av_codec_decompress_config
/* opaque state */
-typedef struct _avcomp_state avcomp_state;
+struct avcomp_state;
@@ -114,8 +131,8 @@ typedef struct _avcomp_state avcomp_state;
avcomp_state *avcomp_init(UINT32 maxwidth, UINT32 maxheight, UINT32 maxchannels);
void avcomp_free(avcomp_state *state);
-void avcomp_config_compress(avcomp_state *state, const av_codec_compress_config *config);
-void avcomp_config_decompress(avcomp_state *state, const av_codec_decompress_config *config);
+void avcomp_config_compress(avcomp_state *state, av_codec_compress_config *config);
+void avcomp_config_decompress(avcomp_state *state, av_codec_decompress_config *config);
avcomp_error avcomp_encode_data(avcomp_state *state, const UINT8 *source, UINT8 *dest, UINT32 *complength);
avcomp_error avcomp_decode_data(avcomp_state *state, const UINT8 *source, UINT32 complength, UINT8 *dest);
diff --git a/src/lib/util/aviio.c b/src/lib/util/aviio.c
index 0fd2997c1bc..33dd799fcf7 100644
--- a/src/lib/util/aviio.c
+++ b/src/lib/util/aviio.c
@@ -250,15 +250,15 @@ static avi_error soundbuf_write_chunk(avi_file *file, UINT32 framenum);
static avi_error soundbuf_flush(avi_file *file, int only_flush_full);
/* RGB helpers */
-static avi_error rgb32_compress_to_rgb(avi_stream *stream, const bitmap_t &bitmap, UINT8 *data, UINT32 numbytes);
+static avi_error rgb32_compress_to_rgb(avi_stream *stream, const bitmap_rgb32 &bitmap, UINT8 *data, UINT32 numbytes);
/* YUY helpers */
-static avi_error yuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_t &bitmap);
-static avi_error yuy16_compress_to_yuy(avi_stream *stream, const bitmap_t &bitmap, UINT8 *data, UINT32 numbytes);
+static avi_error yuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_yuy16 &bitmap);
+static avi_error yuy16_compress_to_yuy(avi_stream *stream, const bitmap_yuy16 &bitmap, UINT8 *data, UINT32 numbytes);
/* HuffYUV helpers */
static avi_error huffyuv_extract_tables(avi_stream *stream, const UINT8 *chunkdata, UINT32 size);
-static avi_error huffyuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_t &bitmap);
+static avi_error huffyuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_yuy16 &bitmap);
/* debugging */
static void printf_chunk_recursive(avi_file *file, avi_chunk *chunk, int indent);
@@ -788,12 +788,12 @@ UINT32 avi_first_sample_in_frame(avi_file *file, UINT32 framenum)
/*-------------------------------------------------
- avi_read_video_frame_yuy16 - read video data
+ avi_read_video_frame - read video data
for a particular frame from the AVI file,
converting to YUY16 format
-------------------------------------------------*/
-avi_error avi_read_video_frame_yuy16(avi_file *file, UINT32 framenum, bitmap_t &bitmap)
+avi_error avi_read_video_frame(avi_file *file, UINT32 framenum, bitmap_yuy16 &bitmap)
{
avi_error avierr = AVIERR_NONE;
UINT32 bytes_read, chunkid;
@@ -814,7 +814,7 @@ avi_error avi_read_video_frame_yuy16(avi_file *file, UINT32 framenum, bitmap_t &
return AVIERR_INVALID_FRAME;
/* we only support YUY-style bitmaps (16bpp) */
- if (bitmap.format() != BITMAP_FORMAT_YUY16 || bitmap.width() < stream->width || bitmap.height() < stream->height)
+ if (bitmap.width() < stream->width || bitmap.height() < stream->height)
return AVIERR_INVALID_BITMAP;
/* expand the tempbuffer to hold the data if necessary */
@@ -957,7 +957,7 @@ avi_error avi_read_sound_samples(avi_file *file, int channel, UINT32 firstsample
of video in YUY16 format
-------------------------------------------------*/
-avi_error avi_append_video_frame_yuy16(avi_file *file, const bitmap_t &bitmap)
+avi_error avi_append_video_frame(avi_file *file, bitmap_yuy16 &bitmap)
{
avi_stream *stream = get_video_stream(file);
avi_error avierr;
@@ -967,10 +967,6 @@ avi_error avi_append_video_frame_yuy16(avi_file *file, const bitmap_t &bitmap)
if (stream->format != FORMAT_UYVY && stream->format != FORMAT_VYUY && stream->format != FORMAT_YUY2 && stream->format != FORMAT_HFYU)
return AVIERR_UNSUPPORTED_VIDEO_FORMAT;
- /* double check bitmap format */
- if (bitmap.format() != BITMAP_FORMAT_YUY16)
- return AVIERR_INVALID_BITMAP;
-
/* write out any sound data first */
avierr = soundbuf_write_chunk(file, stream->chunks);
if (avierr != AVIERR_NONE)
@@ -1003,7 +999,7 @@ avi_error avi_append_video_frame_yuy16(avi_file *file, const bitmap_t &bitmap)
of video in RGB32 format
-------------------------------------------------*/
-avi_error avi_append_video_frame_rgb32(avi_file *file, const bitmap_t &bitmap)
+avi_error avi_append_video_frame(avi_file *file, bitmap_rgb32 &bitmap)
{
avi_stream *stream = get_video_stream(file);
avi_error avierr;
@@ -1017,10 +1013,6 @@ avi_error avi_append_video_frame_rgb32(avi_file *file, const bitmap_t &bitmap)
if (stream->depth != 24)
return AVIERR_UNSUPPORTED_VIDEO_FORMAT;
- /* double check bitmap format */
- if (bitmap.format() != BITMAP_FORMAT_RGB32)
- return AVIERR_INVALID_BITMAP;
-
/* write out any sound data first */
avierr = soundbuf_write_chunk(file, stream->chunks);
if (avierr != AVIERR_NONE)
@@ -2343,7 +2335,7 @@ static avi_error soundbuf_flush(avi_file *file, int only_flush_full)
bitmap to an RGB encoded frame
-------------------------------------------------*/
-static avi_error rgb32_compress_to_rgb(avi_stream *stream, const bitmap_t &bitmap, UINT8 *data, UINT32 numbytes)
+static avi_error rgb32_compress_to_rgb(avi_stream *stream, const bitmap_rgb32 &bitmap, UINT8 *data, UINT32 numbytes)
{
int height = MIN(stream->height, bitmap.height());
int width = MIN(stream->width, bitmap.width());
@@ -2394,7 +2386,7 @@ static avi_error rgb32_compress_to_rgb(avi_stream *stream, const bitmap_t &bitma
encoded frame to a YUY16 bitmap
-------------------------------------------------*/
-static avi_error yuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_t &bitmap)
+static avi_error yuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_yuy16 &bitmap)
{
const UINT16 *dataend = (const UINT16 *)(data + numbytes);
int x, y;
@@ -2433,7 +2425,7 @@ static avi_error yuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data,
bitmap to a YUV encoded frame
-------------------------------------------------*/
-static avi_error yuy16_compress_to_yuy(avi_stream *stream, const bitmap_t &bitmap, UINT8 *data, UINT32 numbytes)
+static avi_error yuy16_compress_to_yuy(avi_stream *stream, const bitmap_yuy16 &bitmap, UINT8 *data, UINT32 numbytes)
{
const UINT16 *dataend = (const UINT16 *)(data + numbytes);
int x, y;
@@ -2611,7 +2603,7 @@ error:
HuffYUV-encoded frame to a YUY16 bitmap
-------------------------------------------------*/
-static avi_error huffyuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_t &bitmap)
+static avi_error huffyuv_decompress_to_yuy16(avi_stream *stream, const UINT8 *data, UINT32 numbytes, bitmap_yuy16 &bitmap)
{
huffyuv_data *huffyuv = stream->huffyuv;
int prevlines = (stream->height > 288) ? 2 : 1;
diff --git a/src/lib/util/aviio.h b/src/lib/util/aviio.h
index c7bfe38afe9..94c91b4d2e8 100644
--- a/src/lib/util/aviio.h
+++ b/src/lib/util/aviio.h
@@ -143,11 +143,11 @@ const char *avi_error_string(avi_error err);
const avi_movie_info *avi_get_movie_info(avi_file *file);
UINT32 avi_first_sample_in_frame(avi_file *file, UINT32 framenum);
-avi_error avi_read_video_frame_yuy16(avi_file *file, UINT32 framenum, bitmap_t &bitmap);
+avi_error avi_read_video_frame(avi_file *file, UINT32 framenum, bitmap_yuy16 &bitmap);
avi_error avi_read_sound_samples(avi_file *file, int channel, UINT32 firstsample, UINT32 numsamples, INT16 *output);
-avi_error avi_append_video_frame_yuy16(avi_file *file, const bitmap_t &bitmap);
-avi_error avi_append_video_frame_rgb32(avi_file *file, const bitmap_t &bitmap);
+avi_error avi_append_video_frame(avi_file *file, bitmap_yuy16 &bitmap);
+avi_error avi_append_video_frame(avi_file *file, bitmap_rgb32 &bitmap);
avi_error avi_append_sound_samples(avi_file *file, int channel, const INT16 *samples, UINT32 numsamples, UINT32 sampleskip);
#endif
diff --git a/src/lib/util/bitmap.c b/src/lib/util/bitmap.c
index 42befb052cb..86784d43584 100644
--- a/src/lib/util/bitmap.c
+++ b/src/lib/util/bitmap.c
@@ -59,7 +59,7 @@ bitmap_t::bitmap_t()
m_palette(NULL)
{
// deallocate intializes all other fields
- deallocate();
+ reset();
}
@@ -89,6 +89,21 @@ bitmap_t::bitmap_t(void *base, int width, int height, int rowpixels, bitmap_form
}
+bitmap_t::bitmap_t(bitmap_t &source, const rectangle &subrect)
+ : m_alloc(NULL),
+ m_base(source.raw_pixptr(subrect.min_y, subrect.min_x)),
+ m_rowpixels(source.m_rowpixels),
+ m_width(subrect.width()),
+ m_height(subrect.height()),
+ m_format(source.m_format),
+ m_bpp(source.m_bpp),
+ m_palette(NULL),
+ m_cliprect(0, subrect.width() - 1, 0, subrect.height() - 1)
+{
+ assert(source.cliprect().contains(subrect));
+}
+
+
//-------------------------------------------------
// ~bitmap_t - basic destructor
//-------------------------------------------------
@@ -96,7 +111,7 @@ bitmap_t::bitmap_t(void *base, int width, int height, int rowpixels, bitmap_form
bitmap_t::~bitmap_t()
{
// delete any existing stuff
- deallocate();
+ reset();
}
@@ -109,7 +124,7 @@ bitmap_t::~bitmap_t()
void bitmap_t::allocate(int width, int height, bitmap_format format, int xslop, int yslop)
{
// delete any existing stuff
- deallocate();
+ reset();
// initialize fields
m_rowpixels = (width + 2 * xslop + 7) & ~7;
@@ -134,11 +149,11 @@ void bitmap_t::allocate(int width, int height, bitmap_format format, int xslop,
//-------------------------------------------------
-// deallocate -- reset to an invalid bitmap,
-// deleting all allocated stuff
+// reset -- reset to an invalid bitmap, deleting
+// all allocated stuff
//-------------------------------------------------
-void bitmap_t::deallocate()
+void bitmap_t::reset()
{
// delete any existing stuff
set_palette(NULL);
@@ -157,26 +172,47 @@ void bitmap_t::deallocate()
//-------------------------------------------------
-// clone_existing -- clone an existing bitmap by
-// copying its fields; the target bitmap does not
-// own the memory
+// wrap -- wrap an array of memory; the target
+// bitmap does not own the memory
//-------------------------------------------------
-void bitmap_t::clone_existing(const bitmap_t &srcbitmap)
+void bitmap_t::wrap(void *base, int width, int height, int rowpixels, bitmap_format format)
{
- // free any allocated storage
- delete[] m_alloc;
- m_alloc = NULL;
+ // delete any existing stuff
+ reset();
+
+ // initialize relevant fields
+ m_base = base;
+ m_rowpixels = rowpixels;
+ m_width = width;
+ m_height = height;
+ m_format = format;
+ m_bpp = format_to_bpp(format);
+ m_cliprect.set(0, m_width - 1, 0, m_height - 1);
+}
+
+//-------------------------------------------------
+// wrap -- wrap a subrectangle of an existing
+// bitmap by copying its fields; the target
+// bitmap does not own the memory
+//-------------------------------------------------
+
+void bitmap_t::wrap(bitmap_t &source, const rectangle &subrect)
+{
+ // delete any existing stuff
+ reset();
+
// copy relevant fields
- m_base = srcbitmap.m_base;
- m_rowpixels = srcbitmap.m_rowpixels;
- m_width = srcbitmap.m_width;
- m_height = srcbitmap.m_height;
- m_format = srcbitmap.m_format;
- m_bpp = srcbitmap.m_bpp;
- m_palette = srcbitmap.m_palette;
- m_cliprect = srcbitmap.m_cliprect;
+ assert(source.cliprect().contains(subrect));
+ m_base = source.raw_pixptr(subrect.min_y, subrect.min_x);
+ m_rowpixels = source.m_rowpixels;
+ m_width = subrect.width();
+ m_height = subrect.height();
+ m_format = source.m_format;
+ m_bpp = source.m_bpp;
+ set_palette(source.m_palette);
+ m_cliprect.set(0, m_width - 1, 0, m_height - 1);
}
@@ -221,7 +257,7 @@ void bitmap_t::fill(UINT32 color, const rectangle &cliprect)
case 8:
// 8bpp always uses memset
for (INT32 y = fill.min_y; y <= fill.max_y; y++)
- memset(&pix8(y, fill.min_x), (UINT8)color, fill.max_x + 1 - fill.min_x);
+ memset(raw_pixptr(y, fill.min_x), (UINT8)color, fill.max_x + 1 - fill.min_x);
break;
case 16:
@@ -229,20 +265,20 @@ void bitmap_t::fill(UINT32 color, const rectangle &cliprect)
if ((UINT8)(color >> 8) == (UINT8)color)
{
for (INT32 y = fill.min_y; y <= fill.max_y; y++)
- memset(&pix16(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 2);
+ memset(raw_pixptr(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 2);
}
else
{
// Fill the first line the hard way
- UINT16 *destrow = &pix16(fill.min_y);
+ UINT16 *destrow = &pixt<UINT16>(fill.min_y);
for (INT32 x = fill.min_x; x <= fill.max_x; x++)
destrow[x] = (UINT16)color;
// For the other lines, just copy the first one
- UINT16 *destrow0 = &pix16(fill.min_y, fill.min_x);
+ void *destrow0 = &pixt<UINT16>(fill.min_y, fill.min_x);
for (INT32 y = fill.min_y + 1; y <= fill.max_y; y++)
{
- destrow = &pix16(y, fill.min_x);
+ destrow = &pixt<UINT16>(y, fill.min_x);
memcpy(destrow, destrow0, (fill.max_x + 1 - fill.min_x) * 2);
}
}
@@ -253,20 +289,20 @@ void bitmap_t::fill(UINT32 color, const rectangle &cliprect)
if ((UINT8)(color >> 8) == (UINT8)color && (UINT16)(color >> 16) == (UINT16)color)
{
for (INT32 y = fill.min_y; y <= fill.max_y; y++)
- memset(&pix32(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 4);
+ memset(&pixt<UINT32>(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 4);
}
else
{
// Fill the first line the hard way
- UINT32 *destrow = &pix32(fill.min_y);
+ UINT32 *destrow = &pixt<UINT32>(fill.min_y);
for (INT32 x = fill.min_x; x <= fill.max_x; x++)
destrow[x] = (UINT32)color;
// For the other lines, just copy the first one
- UINT32 *destrow0 = &pix32(fill.min_y, fill.min_x);
+ UINT32 *destrow0 = &pixt<UINT32>(fill.min_y, fill.min_x);
for (INT32 y = fill.min_y + 1; y <= fill.max_y; y++)
{
- destrow = &pix32(y, fill.min_x);
+ destrow = &pixt<UINT32>(y, fill.min_x);
memcpy(destrow, destrow0, (fill.max_x + 1 - fill.min_x) * 4);
}
}
@@ -277,20 +313,20 @@ void bitmap_t::fill(UINT32 color, const rectangle &cliprect)
if ((UINT8)(color >> 8) == (UINT8)color && (UINT16)(color >> 16) == (UINT16)color)
{
for (INT32 y = fill.min_y; y <= fill.max_y; y++)
- memset(&pix64(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 8);
+ memset(&pixt<UINT64>(y, fill.min_x), (UINT8)color, (fill.max_x + 1 - fill.min_x) * 8);
}
else
{
// Fill the first line the hard way
- UINT64 *destrow = &pix64(fill.min_y);
+ UINT64 *destrow = &pixt<UINT64>(fill.min_y);
for (INT32 x = fill.min_x; x <= fill.max_x; x++)
destrow[x] = (UINT64)color;
// For the other lines, just copy the first one
- UINT64 *destrow0 = &pix64(fill.min_y, fill.min_x);
+ UINT64 *destrow0 = &pixt<UINT64>(fill.min_y, fill.min_x);
for (INT32 y = fill.min_y + 1; y <= fill.max_y; y++)
{
- destrow = &pix64(y, fill.min_x);
+ destrow = &pixt<UINT64>(y, fill.min_x);
memcpy(destrow, destrow0, (fill.max_x + 1 - fill.min_x) * 4);
}
}
@@ -308,20 +344,19 @@ UINT8 bitmap_t::format_to_bpp(bitmap_format format)
// choose a depth for the format
switch (format)
{
- case BITMAP_FORMAT_INDEXED8:
+ case BITMAP_FORMAT_IND8:
return 8;
- case BITMAP_FORMAT_INDEXED16:
- case BITMAP_FORMAT_RGB15:
+ case BITMAP_FORMAT_IND16:
case BITMAP_FORMAT_YUY16:
return 16;
- case BITMAP_FORMAT_INDEXED32:
+ case BITMAP_FORMAT_IND32:
case BITMAP_FORMAT_RGB32:
case BITMAP_FORMAT_ARGB32:
return 32;
- case BITMAP_FORMAT_INDEXED64:
+ case BITMAP_FORMAT_IND64:
return 64;
default:
diff --git a/src/lib/util/bitmap.h b/src/lib/util/bitmap.h
index 98ff5c6e133..d5824c958a1 100644
--- a/src/lib/util/bitmap.h
+++ b/src/lib/util/bitmap.h
@@ -44,6 +44,7 @@
#include "osdcore.h"
#include "palette.h"
+#include <assert.h>
//**************************************************************************
@@ -54,11 +55,10 @@
enum bitmap_format
{
BITMAP_FORMAT_INVALID = 0, // invalid forma
- BITMAP_FORMAT_INDEXED8, // 8bpp indexed
- BITMAP_FORMAT_INDEXED16, // 16bpp indexed
- BITMAP_FORMAT_INDEXED32, // 32bpp indexed
- BITMAP_FORMAT_INDEXED64, // 64bpp indexed
- BITMAP_FORMAT_RGB15, // 15bpp 5-5-5 RGB
+ BITMAP_FORMAT_IND8, // 8bpp indexed
+ BITMAP_FORMAT_IND16, // 16bpp indexed
+ BITMAP_FORMAT_IND32, // 32bpp indexed
+ BITMAP_FORMAT_IND64, // 64bpp indexed
BITMAP_FORMAT_RGB32, // 32bpp 8-8-8 RGB
BITMAP_FORMAT_ARGB32, // 32bpp 8-8-8-8 ARGB
BITMAP_FORMAT_YUY16, // 16bpp 8-8 Y/Cb, Y/Cr in sequence
@@ -66,6 +66,8 @@ enum bitmap_format
};
+// ======================> rectangle
+
// rectangles describe a bitmap portion
class rectangle
{
@@ -98,6 +100,7 @@ public:
// other helpers
bool empty() const { return (min_x > max_x || min_y > max_y); }
bool contains(INT32 x, INT32 y) const { return (x >= min_x && x <= max_x && y >= min_y && y <= max_y); }
+ bool contains(const rectangle &rect) const { return (min_x <= rect.min_x && max_x >= rect.max_x && min_y <= rect.min_y && max_y >= rect.max_y); }
INT32 width() const { return max_x + 1 - min_x; }
INT32 height() const { return max_y + 1 - min_y; }
@@ -115,6 +118,8 @@ public:
};
+// ======================> bitmap_t
+
// bitmaps describe a rectangular array of pixels
class bitmap_t
{
@@ -123,12 +128,17 @@ private:
bitmap_t(const bitmap_t &);
bitmap_t &operator=(const bitmap_t &);
-public:
- // construction/destruction
+protected:
+ // construction/destruction -- subclasses only
bitmap_t();
bitmap_t(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0);
bitmap_t(void *base, int width, int height, int rowpixels, bitmap_format format);
- ~bitmap_t();
+ bitmap_t(bitmap_t &source, const rectangle &subrect);
+ virtual ~bitmap_t();
+
+public:
+ // allocation/deallocation
+ void reset();
// getters
INT32 width() const { return m_width; }
@@ -137,14 +147,11 @@ public:
INT32 rowbytes() const { return m_rowpixels * m_bpp / 8; }
UINT8 bpp() const { return m_bpp; }
bitmap_format format() const { return m_format; }
- bool valid() const { return (m_format != BITMAP_FORMAT_INVALID); }
+ bool valid() const { return (m_base != NULL); }
palette_t *palette() const { return m_palette; }
const rectangle &cliprect() const { return m_cliprect; }
// operations
- void allocate(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0);
- void deallocate();
- void clone_existing(const bitmap_t &srcbitmap);
void set_palette(palette_t *palette);
void fill(rgb_t color) { fill(color, m_cliprect); }
void fill(rgb_t color, const rectangle &cliprect);
@@ -156,16 +163,18 @@ public:
// pixel access
template<typename _PixelType>
- _PixelType &pix(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<_PixelType *>(m_base) + y * m_rowpixels + x); }
- UINT8 &pix8(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<UINT8 *>(m_base) + y * m_rowpixels + x); }
- UINT16 &pix16(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<UINT16 *>(m_base) + y * m_rowpixels + x); }
- UINT32 &pix32(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<UINT32 *>(m_base) + y * m_rowpixels + x); }
- UINT64 &pix64(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<UINT64 *>(m_base) + y * m_rowpixels + x); }
+ _PixelType &pixt(INT32 y, INT32 x = 0) const { return *(reinterpret_cast<_PixelType *>(m_base) + y * m_rowpixels + x); }
void *raw_pixptr(INT32 y, INT32 x = 0) const { return reinterpret_cast<UINT8 *>(m_base) + (y * m_rowpixels + x) * m_bpp / 8; }
// static helpers
static UINT8 format_to_bpp(bitmap_format format);
+protected:
+ // for use by subclasses only
+ void allocate(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0);
+ void wrap(void *base, int width, int height, int rowpixels, bitmap_format format);
+ void wrap(bitmap_t &source, const rectangle &subrect);
+
private:
// internal state
UINT8 * m_alloc; // pointer to allocated pixel memory
@@ -180,4 +189,242 @@ private:
};
+// ======================> bitmap8_t, bitmap16_t, bitmap32_t, bitmap64_t
+
+// 8bpp bitmaps
+class bitmap8_t : public bitmap_t
+{
+private:
+ // private helpers
+ bool valid_format(bitmap_format format) const { return (format == BITMAP_FORMAT_IND8); }
+
+protected:
+ // construction/destruction -- subclasses only
+ bitmap8_t() : bitmap_t() { }
+ bitmap8_t(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0) : bitmap_t(width, height, format, xslop, yslop) { assert(valid_format(format)); }
+ bitmap8_t(void *base, int width, int height, int rowpixels, bitmap_format format): bitmap_t(base, width, height, rowpixels, format) { assert(valid_format(format)); }
+ bitmap8_t(bitmap8_t &source, const rectangle &subrect) : bitmap_t(source, subrect) { }
+
+public:
+ // getters
+ UINT8 bpp() const { return 8; }
+
+ // pixel accessors
+ typedef UINT8 pixel_t;
+ pixel_t &pix(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+ pixel_t &pix8(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+};
+
+// 16bpp bitmaps
+class bitmap16_t : public bitmap_t
+{
+private:
+ // private helpers
+ bool valid_format(bitmap_format format) const { return (format == BITMAP_FORMAT_IND16 || format == BITMAP_FORMAT_YUY16); }
+
+protected:
+ // construction/destruction -- subclasses only
+ bitmap16_t() : bitmap_t() { }
+ bitmap16_t(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0) : bitmap_t(width, height, format, xslop, yslop) { assert(valid_format(format)); }
+ bitmap16_t(void *base, int width, int height, int rowpixels, bitmap_format format): bitmap_t(base, width, height, rowpixels, format) { assert(valid_format(format)); }
+ bitmap16_t(bitmap16_t &source, const rectangle &subrect) : bitmap_t(source, subrect) { }
+
+public:
+ // getters
+ UINT8 bpp() const { return 16; }
+
+ // pixel accessors
+ typedef UINT16 pixel_t;
+ pixel_t &pix(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+ pixel_t &pix16(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+};
+
+// 32bpp bitmaps
+class bitmap32_t : public bitmap_t
+{
+private:
+ // private helpers
+ bool valid_format(bitmap_format format) const { return (format == BITMAP_FORMAT_IND32 || format == BITMAP_FORMAT_RGB32 || format == BITMAP_FORMAT_ARGB32); }
+
+protected:
+ // construction/destruction -- subclasses only
+ bitmap32_t() : bitmap_t() { }
+ bitmap32_t(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0) : bitmap_t(width, height, format, xslop, yslop) { assert(valid_format(format)); }
+ bitmap32_t(void *base, int width, int height, int rowpixels, bitmap_format format): bitmap_t(base, width, height, rowpixels, format) { assert(valid_format(format)); }
+ bitmap32_t(bitmap32_t &source, const rectangle &subrect) : bitmap_t(source, subrect) { }
+
+public:
+ // getters
+ UINT8 bpp() const { return 32; }
+
+ // pixel accessors
+ typedef UINT32 pixel_t;
+ pixel_t &pix(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+ pixel_t &pix32(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+};
+
+// 64bpp bitmaps
+class bitmap64_t : public bitmap_t
+{
+private:
+ // private helpers
+ bool valid_format(bitmap_format format) const { return (format == BITMAP_FORMAT_IND64); }
+
+protected:
+ // construction/destruction -- subclasses only
+ bitmap64_t() : bitmap_t() { }
+ bitmap64_t(int width, int height, bitmap_format format, int xslop = 0, int yslop = 0) : bitmap_t(width, height, format, xslop, yslop) { assert(valid_format(format)); }
+ bitmap64_t(void *base, int width, int height, int rowpixels, bitmap_format format): bitmap_t(base, width, height, rowpixels, format) { assert(valid_format(format)); }
+ bitmap64_t(bitmap64_t &source, const rectangle &subrect) : bitmap_t(source, subrect) { }
+
+public:
+ // getters
+ UINT8 bpp() const { return 64; }
+
+ // pixel accessors
+ typedef UINT64 pixel_t;
+ pixel_t &pix(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+ pixel_t &pix64(INT32 y, INT32 x = 0) const { return pixt<pixel_t>(y, x); }
+};
+
+
+// ======================> bitmap_ind8, bitmap_ind16, bitmap_ind32, bitmap_ind64
+
+// BITMAP_FORMAT_IND8 bitmaps
+class bitmap_ind8 : public bitmap8_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_IND8;
+
+public:
+ // construction/destruction
+ bitmap_ind8() : bitmap8_t() { }
+ bitmap_ind8(int width, int height, int xslop = 0, int yslop = 0) : bitmap8_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_ind8(void *base, int width, int height, int rowpixels) : bitmap8_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_ind8(bitmap_ind8 &source, const rectangle &subrect) : bitmap8_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT8 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_ind8 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+// BITMAP_FORMAT_IND16 bitmaps
+class bitmap_ind16 : public bitmap16_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_IND16;
+
+public:
+ // construction/destruction
+ bitmap_ind16() : bitmap16_t() { }
+ bitmap_ind16(int width, int height, int xslop = 0, int yslop = 0) : bitmap16_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_ind16(void *base, int width, int height, int rowpixels) : bitmap16_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_ind16(bitmap_ind16 &source, const rectangle &subrect) : bitmap16_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT16 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_ind16 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+// BITMAP_FORMAT_IND32 bitmaps
+class bitmap_ind32 : public bitmap32_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_IND32;
+
+public:
+ // construction/destruction
+ bitmap_ind32() : bitmap32_t() { }
+ bitmap_ind32(int width, int height, int xslop = 0, int yslop = 0) : bitmap32_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_ind32(void *base, int width, int height, int rowpixels) : bitmap32_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_ind32(bitmap_ind32 &source, const rectangle &subrect) : bitmap32_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT32 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_ind32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+// BITMAP_FORMAT_IND64 bitmaps
+class bitmap_ind64 : public bitmap64_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_IND64;
+
+public:
+ // construction/destruction
+ bitmap_ind64() : bitmap64_t() { }
+ bitmap_ind64(int width, int height, int xslop = 0, int yslop = 0) : bitmap64_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_ind64(void *base, int width, int height, int rowpixels) : bitmap64_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_ind64(bitmap_ind64 &source, const rectangle &subrect) : bitmap64_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT64 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_ind64 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+
+// ======================> bitmap_yuy16, bitmap_rgb32, bitmap_argb32
+
+// BITMAP_FORMAT_YUY16 bitmaps
+class bitmap_yuy16 : public bitmap16_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_YUY16;
+
+public:
+ // construction/destruction
+ bitmap_yuy16() : bitmap16_t() { }
+ bitmap_yuy16(int width, int height, int xslop = 0, int yslop = 0) : bitmap16_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_yuy16(void *base, int width, int height, int rowpixels) : bitmap16_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_yuy16(bitmap_yuy16 &source, const rectangle &subrect) : bitmap16_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT16 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_yuy16 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+// BITMAP_FORMAT_RGB32 bitmaps
+class bitmap_rgb32 : public bitmap32_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_RGB32;
+
+public:
+ // construction/destruction
+ bitmap_rgb32() : bitmap32_t() { }
+ bitmap_rgb32(int width, int height, int xslop = 0, int yslop = 0) : bitmap32_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_rgb32(void *base, int width, int height, int rowpixels) : bitmap32_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_rgb32(bitmap_rgb32 &source, const rectangle &subrect) : bitmap32_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT32 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_rgb32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+// BITMAP_FORMAT_ARGB32 bitmaps
+class bitmap_argb32 : public bitmap32_t
+{
+ static const bitmap_format k_bitmap_format = BITMAP_FORMAT_ARGB32;
+
+public:
+ // construction/destruction
+ bitmap_argb32() : bitmap32_t() { }
+ bitmap_argb32(int width, int height, int xslop = 0, int yslop = 0) : bitmap32_t(width, height, k_bitmap_format, xslop, yslop) { }
+ bitmap_argb32(void *base, int width, int height, int rowpixels) : bitmap32_t(base, width, height, rowpixels, k_bitmap_format) { }
+ bitmap_argb32(bitmap_argb32 &source, const rectangle &subrect) : bitmap32_t(source, subrect) { }
+ void allocate(int width, int height, int xslop = 0, int yslop = 0) { bitmap_t::allocate(width, height, k_bitmap_format, xslop, yslop); }
+ void wrap(UINT32 *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels, k_bitmap_format); }
+ void wrap(bitmap_argb32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast<bitmap_t &>(source), subrect); }
+
+ // getters
+ bitmap_format format() const { return k_bitmap_format; }
+};
+
+
#endif // __BITMAP_H__
diff --git a/src/lib/util/chd.c b/src/lib/util/chd.c
index 4cbe8b5c6d8..5fcde62293f 100644
--- a/src/lib/util/chd.c
+++ b/src/lib/util/chd.c
@@ -45,6 +45,7 @@
#include <time.h>
#include <stddef.h>
#include <stdlib.h>
+#include <new>
@@ -205,8 +206,7 @@ struct _zlib_codec_data
/* codec-private data for the A/V codec */
-typedef struct _av_codec_data av_codec_data;
-struct _av_codec_data
+struct av_codec_data
{
avcomp_state * compstate;
av_codec_compress_config compress;
@@ -2904,12 +2904,11 @@ static chd_error av_codec_init(chd_file *chd)
av_codec_data *data;
/* allocate memory for the 2 stream buffers */
- data = (av_codec_data *)malloc(sizeof(*data));
+ data = new(std::nothrow) av_codec_data;
if (data == NULL)
return CHDERR_OUT_OF_MEMORY;
/* clear the buffers */
- memset(data, 0, sizeof(*data));
chd->codecdata = data;
/* attempt to do a post-init now; if we're creating a new CHD, this won't work */
@@ -2933,7 +2932,7 @@ static void av_codec_free(chd_file *chd)
{
if (data->compstate != NULL)
avcomp_free(data->compstate);
- free(data);
+ delete data;
}
}
@@ -3025,7 +3024,13 @@ static chd_error av_codec_config(chd_file *chd, int param, void *config)
/* if we're getting the compression configuration, apply it now */
if (param == AV_CODEC_COMPRESS_CONFIG)
{
- data->compress = *(av_codec_compress_config *)config;
+ av_codec_compress_config *configsrc = reinterpret_cast<av_codec_compress_config *>(config);
+ data->compress.video.wrap(configsrc->video, configsrc->video.cliprect());
+ data->compress.channels = configsrc->channels;
+ data->compress.samples = configsrc->samples;
+ memcpy(data->compress.audio, configsrc->audio, sizeof(data->compress.audio));
+ data->compress.metalength = configsrc->metalength;
+ data->compress.metadata = configsrc->metadata;
if (data->compstate != NULL)
avcomp_config_compress(data->compstate, &data->compress);
return CHDERR_NONE;
@@ -3034,7 +3039,14 @@ static chd_error av_codec_config(chd_file *chd, int param, void *config)
/* if we're getting the decompression configuration, apply it now */
else if (param == AV_CODEC_DECOMPRESS_CONFIG)
{
- data->decompress = *(av_codec_decompress_config *)config;
+ av_codec_decompress_config *configsrc = reinterpret_cast<av_codec_decompress_config *>(config);
+ data->decompress.video.wrap(configsrc->video, configsrc->video.cliprect());
+ data->decompress.maxsamples = configsrc->maxsamples;
+ data->decompress.actsamples = configsrc->actsamples;
+ memcpy(data->decompress.audio, configsrc->audio, sizeof(data->decompress.audio));
+ data->decompress.maxmetalength = configsrc->maxmetalength;
+ data->decompress.actmetalength = configsrc->actmetalength;
+ data->decompress.metadata = configsrc->metadata;
if (data->compstate != NULL)
avcomp_config_decompress(data->compstate, &data->decompress);
return CHDERR_NONE;
diff --git a/src/lib/util/png.c b/src/lib/util/png.c
index 7b0f7021642..2268d6d88cb 100644
--- a/src/lib/util/png.c
+++ b/src/lib/util/png.c
@@ -606,10 +606,10 @@ handle_error:
/*-------------------------------------------------
png_read_bitmap - load a PNG file into a
- bitmap_t
+ bitmap
-------------------------------------------------*/
-png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
+png_error png_read_bitmap(core_file *fp, bitmap_argb32 &bitmap)
{
png_error result;
png_info png;
@@ -633,12 +633,7 @@ png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
png_expand_buffer_8bit(&png);
/* allocate a bitmap of the appropriate size and copy it */
- *bitmap = new(std::nothrow) bitmap_t(png.width, png.height, BITMAP_FORMAT_ARGB32);
- if (*bitmap == NULL)
- {
- png_free(&png);
- return PNGERR_OUT_OF_MEMORY;
- }
+ bitmap.allocate(png.width, png.height);
/* handle 8bpp palettized case */
src = png.image;
@@ -650,7 +645,7 @@ png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
{
/* determine alpha and expand to 32bpp */
UINT8 alpha = (*src < png.num_trans) ? png.trans[*src] : 0xff;
- (*bitmap)->pix32(y, x) = (alpha << 24) | (png.palette[*src * 3] << 16) | (png.palette[*src * 3 + 1] << 8) | png.palette[*src * 3 + 2];
+ bitmap.pix32(y, x) = (alpha << 24) | (png.palette[*src * 3] << 16) | (png.palette[*src * 3 + 1] << 8) | png.palette[*src * 3 + 2];
}
}
@@ -659,7 +654,7 @@ png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
{
for (y = 0; y < png.height; y++)
for (x = 0; x < png.width; x++, src++)
- (*bitmap)->pix32(y, x) = 0xff000000 | (*src << 16) | (*src << 8) | *src;
+ bitmap.pix32(y, x) = 0xff000000 | (*src << 16) | (*src << 8) | *src;
}
/* handle 32bpp non-alpha case */
@@ -667,7 +662,7 @@ png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
{
for (y = 0; y < png.height; y++)
for (x = 0; x < png.width; x++, src += 3)
- (*bitmap)->pix32(y, x) = 0xff000000 | (src[0] << 16) | (src[1] << 8) | src[2];
+ bitmap.pix32(y, x) = 0xff000000 | (src[0] << 16) | (src[1] << 8) | src[2];
}
/* handle 32bpp alpha case */
@@ -675,7 +670,7 @@ png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap)
{
for (y = 0; y < png.height; y++)
for (x = 0; x < png.width; x++, src += 4)
- (*bitmap)->pix32(y, x) = (src[3] << 24) | (src[0] << 16) | (src[1] << 8) | src[2];
+ bitmap.pix32(y, x) = (src[3] << 24) | (src[0] << 16) | (src[1] << 8) | src[2];
}
/* free our temporary data and return */
@@ -943,7 +938,7 @@ static png_error convert_bitmap_to_image_palette(png_info *pnginfo, const bitmap
/* copy in the pixels, specifying a NULL filter */
for (y = 0; y < pnginfo->height; y++)
{
- UINT16 *src = &bitmap.pix16(y);
+ UINT16 *src = reinterpret_cast<UINT16 *>(bitmap.raw_pixptr(y));
UINT8 *dst = pnginfo->image + y * (rowbytes + 1);
/* store the filter byte, then copy the data */
@@ -982,16 +977,15 @@ static png_error convert_bitmap_to_image_rgb(png_info *pnginfo, const bitmap_t &
/* copy in the pixels, specifying a NULL filter */
for (y = 0; y < pnginfo->height; y++)
{
- UINT32 *src32 = &bitmap.pix32(y);
- UINT16 *src16 = &bitmap.pix16(y);
UINT8 *dst = pnginfo->image + y * (rowbytes + 1);
/* store the filter byte, then copy the data */
*dst++ = 0;
/* 16bpp palettized format */
- if (bitmap.format() == BITMAP_FORMAT_INDEXED16)
+ if (bitmap.format() == BITMAP_FORMAT_IND16)
{
+ UINT16 *src16 = reinterpret_cast<UINT16 *>(bitmap.raw_pixptr(y));
for (x = 0; x < pnginfo->width; x++)
{
rgb_t color = palette[*src16++];
@@ -1001,21 +995,10 @@ static png_error convert_bitmap_to_image_rgb(png_info *pnginfo, const bitmap_t &
}
}
- /* RGB formats */
- else if (bitmap.format() == BITMAP_FORMAT_RGB15)
- {
- for (x = 0; x < pnginfo->width; x++)
- {
- UINT16 raw = *src16++;
- *dst++ = pal5bit(raw >> 10);
- *dst++ = pal5bit(raw >> 5);
- *dst++ = pal5bit(raw >> 0);
- }
- }
-
/* 32-bit RGB direct */
else if (bitmap.format() == BITMAP_FORMAT_RGB32)
{
+ UINT32 *src32 = reinterpret_cast<UINT32 *>(bitmap.raw_pixptr(y));
for (x = 0; x < pnginfo->width; x++)
{
UINT32 raw = *src32++;
@@ -1028,6 +1011,7 @@ static png_error convert_bitmap_to_image_rgb(png_info *pnginfo, const bitmap_t &
/* 32-bit ARGB direct */
else if (bitmap.format() == BITMAP_FORMAT_ARGB32)
{
+ UINT32 *src32 = reinterpret_cast<UINT32 *>(bitmap.raw_pixptr(y));
for (x = 0; x < pnginfo->width; x++)
{
UINT32 raw = *src32++;
@@ -1059,7 +1043,7 @@ static png_error write_png_stream(core_file *fp, png_info *pnginfo, const bitmap
png_error error;
/* create an unfiltered image in either palette or RGB form */
- if (bitmap.format() == BITMAP_FORMAT_INDEXED16 && palette_length <= 256)
+ if (bitmap.format() == BITMAP_FORMAT_IND16 && palette_length <= 256)
error = convert_bitmap_to_image_palette(pnginfo, bitmap, palette_length, palette);
else
error = convert_bitmap_to_image_rgb(pnginfo, bitmap, palette_length, palette);
@@ -1107,7 +1091,6 @@ handle_error:
}
-
png_error png_write_bitmap(core_file *fp, png_info *info, bitmap_t &bitmap, int palette_length, const UINT32 *palette)
{
png_info pnginfo;
diff --git a/src/lib/util/png.h b/src/lib/util/png.h
index 0b85d5f68aa..6d79014ee2c 100644
--- a/src/lib/util/png.h
+++ b/src/lib/util/png.h
@@ -152,7 +152,7 @@ struct _png_info
void png_free(png_info *pnginfo);
png_error png_read_file(core_file *fp, png_info *pnginfo);
-png_error png_read_bitmap(core_file *fp, bitmap_t **bitmap);
+png_error png_read_bitmap(core_file *fp, bitmap_argb32 &bitmap);
png_error png_expand_buffer_8bit(png_info *p);
png_error png_add_text(png_info *pnginfo, const char *keyword, const char *text);
diff --git a/src/mame/drivers/1942.c b/src/mame/drivers/1942.c
index dbeb5660039..0a033811344 100644
--- a/src/mame/drivers/1942.c
+++ b/src/mame/drivers/1942.c
@@ -274,12 +274,11 @@ static MACHINE_CONFIG_START( 1942, _1942_state )
MCFG_PALETTE_LENGTH(64*4+4*32*8+16*16)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(1942)
+ MCFG_SCREEN_UPDATE_STATIC(1942)
MCFG_PALETTE_INIT(1942)
MCFG_VIDEO_START(1942)
diff --git a/src/mame/drivers/1943.c b/src/mame/drivers/1943.c
index e4688db7d02..e3478d297aa 100644
--- a/src/mame/drivers/1943.c
+++ b/src/mame/drivers/1943.c
@@ -270,10 +270,9 @@ static MACHINE_CONFIG_START( 1943, _1943_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(1943)
+ MCFG_SCREEN_UPDATE_STATIC(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 7f7968e3c8a..b8a97f1ab0d 100644
--- a/src/mame/drivers/1945kiii.c
+++ b/src/mame/drivers/1945kiii.c
@@ -90,7 +90,7 @@ static VIDEO_START(k3)
state->m_bg_tilemap = tilemap_create(machine, get_k3_bg_tile_info, tilemap_scan_rows, 16, 16, 32, 64);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
k3_state *state = machine.driver_data<k3_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -116,7 +116,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE(k3)
+static SCREEN_UPDATE_IND16(k3)
{
k3_state *state = screen.machine().driver_data<k3_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -262,10 +262,9 @@ static MACHINE_CONFIG_START( k3, k3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(k3)
+ MCFG_SCREEN_UPDATE_STATIC(k3)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index f7c20e54634..f78718cea40 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -448,10 +448,9 @@ static MACHINE_CONFIG_START( drill, _2mindril_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* inaccurate, same as Taito F3? (needs screen raw params anyway) */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(f3)
+ MCFG_SCREEN_UPDATE_STATIC(f3)
MCFG_SCREEN_EOF(f3)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/30test.c b/src/mame/drivers/30test.c
index 44654350ee6..fa558e839e0 100644
--- a/src/mame/drivers/30test.c
+++ b/src/mame/drivers/30test.c
@@ -65,7 +65,7 @@ static VIDEO_START( 30test )
}
-static SCREEN_UPDATE( 30test )
+static SCREEN_UPDATE_IND16( 30test )
{
return 0;
}
@@ -277,10 +277,9 @@ static MACHINE_CONFIG_START( 30test, namco_30test_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(30test)
+ MCFG_SCREEN_UPDATE_STATIC(30test)
// MCFG_PALETTE_INIT(30test)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/39in1.c b/src/mame/drivers/39in1.c
index 4ee9f0e3a9c..dcc698c5b73 100644
--- a/src/mame/drivers/39in1.c
+++ b/src/mame/drivers/39in1.c
@@ -1512,7 +1512,7 @@ static INPUT_PORTS_START( 39in1 )
PORT_SERVICE_NO_TOGGLE( 0x80000000, IP_ACTIVE_LOW )
INPUT_PORTS_END
-static SCREEN_UPDATE( 39in1 )
+static SCREEN_UPDATE_RGB32( 39in1 )
{
_39in1_state *state = screen.machine().driver_data<_39in1_state>();
int x = 0;
@@ -1593,10 +1593,9 @@ static MACHINE_CONFIG_START( 39in1, _39in1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 295, 0, 479)
- MCFG_SCREEN_UPDATE(39in1)
+ MCFG_SCREEN_UPDATE_STATIC(39in1)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/3do.c b/src/mame/drivers/3do.c
index d5105b444f1..ef16201bad9 100644
--- a/src/mame/drivers/3do.c
+++ b/src/mame/drivers/3do.c
@@ -166,9 +166,8 @@ static MACHINE_CONFIG_START( 3do, _3do_state )
MCFG_VIDEO_START( _3do )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT( BITMAP_FORMAT_RGB32 )
MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262 )
- MCFG_SCREEN_UPDATE( _3do )
+ MCFG_SCREEN_UPDATE_STATIC( _3do )
MCFG_CDROM_ADD( "cdrom", _3do_cdrom)
MACHINE_CONFIG_END
@@ -183,7 +182,7 @@ static MACHINE_CONFIG_START( 3do_pal, _3do_state )
MCFG_MACHINE_RESET( 3do )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT( BITMAP_FORMAT_RGB32 )
+ MCFG_SCREEN_UPDATE_STATIC( _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 b4fbc725dbe..b607e3d9965 100644
--- a/src/mame/drivers/40love.c
+++ b/src/mame/drivers/40love.c
@@ -1091,10 +1091,9 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fortyl)
+ MCFG_SCREEN_UPDATE_STATIC(fortyl)
MCFG_GFXDECODE(40love)
MCFG_PALETTE_LENGTH(1024)
@@ -1149,10 +1148,9 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fortyl)
+ MCFG_SCREEN_UPDATE_STATIC(fortyl)
MCFG_GFXDECODE(40love)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c
index 62837306d90..b72d4b47739 100644
--- a/src/mame/drivers/4enraya.c
+++ b/src/mame/drivers/4enraya.c
@@ -336,10 +336,9 @@ static MACHINE_CONFIG_START( 4enraya, _4enraya_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(4enraya)
+ MCFG_SCREEN_UPDATE_STATIC(4enraya)
MCFG_GFXDECODE(4enraya)
diff --git a/src/mame/drivers/4roses.c b/src/mame/drivers/4roses.c
index 1798ff4a9e9..d602a679f5c 100644
--- a/src/mame/drivers/4roses.c
+++ b/src/mame/drivers/4roses.c
@@ -393,10 +393,9 @@ static MACHINE_CONFIG_START( 4roses, _4roses_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(funworld)
+ MCFG_SCREEN_UPDATE_STATIC(funworld)
MCFG_GFXDECODE(4roses)
diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c
index 165af4c66f8..2db07ef5d93 100644
--- a/src/mame/drivers/5clown.c
+++ b/src/mame/drivers/5clown.c
@@ -521,7 +521,7 @@ static VIDEO_START(fclown)
}
-static SCREEN_UPDATE( fclown )
+static SCREEN_UPDATE_IND16( fclown )
{
_5clown_state *state = screen.machine().driver_data<_5clown_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -1068,10 +1068,9 @@ static MACHINE_CONFIG_START( fclown, _5clown_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fclown)
+ MCFG_SCREEN_UPDATE_STATIC(fclown)
MCFG_GFXDECODE(fclown)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c
index 2a9f1335dff..c06b5521f63 100644
--- a/src/mame/drivers/8080bw.c
+++ b/src/mame/drivers/8080bw.c
@@ -395,7 +395,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( invadpt2, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(invadpt2)
+ MCFG_SCREEN_UPDATE_STATIC(invadpt2)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -571,7 +571,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cosmo, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(cosmo)
+ MCFG_SCREEN_UPDATE_STATIC(cosmo)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -801,7 +801,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(invadpt2)
+ MCFG_SCREEN_UPDATE_STATIC(invadpt2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -950,7 +950,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( rollingc, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(rollingc)
+ MCFG_SCREEN_UPDATE_STATIC(rollingc)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1068,7 +1068,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(schaser)
+ MCFG_SCREEN_UPDATE_STATIC(schaser)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1137,7 +1137,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( schasercv, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(schasercv)
+ MCFG_SCREEN_UPDATE_STATIC(schasercv)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1218,7 +1218,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( sflush, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(sflush)
+ MCFG_SCREEN_UPDATE_STATIC(sflush)
MACHINE_CONFIG_END
@@ -1325,7 +1325,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(indianbt)
+ MCFG_SCREEN_UPDATE_STATIC(indianbt)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1345,7 +1345,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3a, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(lupin3)
+ MCFG_SCREEN_UPDATE_STATIC(lupin3)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1466,7 +1466,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( polaris, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(polaris)
+ MCFG_SCREEN_UPDATE_STATIC(polaris)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1589,7 +1589,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ballbomb)
+ MCFG_SCREEN_UPDATE_STATIC(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(indianbt)
+ MCFG_SCREEN_UPDATE_STATIC(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(invadpt2)
+ MCFG_SCREEN_UPDATE_STATIC(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(shuttlei)
+ MCFG_SCREEN_UPDATE_STATIC(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(invaders)
+ MCFG_SCREEN_UPDATE_STATIC(invaders)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c
index 875f47d898f..ed8adc2b717 100644
--- a/src/mame/drivers/88games.c
+++ b/src/mame/drivers/88games.c
@@ -396,10 +396,9 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(88games)
+ MCFG_SCREEN_UPDATE_STATIC(88games)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ace.c b/src/mame/drivers/ace.c
index 8cfcf1b5776..8a38cdfd8a4 100644
--- a/src/mame/drivers/ace.c
+++ b/src/mame/drivers/ace.c
@@ -82,7 +82,7 @@ static VIDEO_START( ace )
gfx_element_set_source(machine.gfx[4], state->m_scoreram);
}
-static SCREEN_UPDATE( ace )
+static SCREEN_UPDATE_IND16( ace )
{
ace_state *state = screen.machine().driver_data<ace_state>();
int offs;
@@ -354,10 +354,9 @@ static MACHINE_CONFIG_START( ace, ace_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(ace)
+ MCFG_SCREEN_UPDATE_STATIC(ace)
MCFG_GFXDECODE(ace)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c
index 2609a4dc120..24cadd96fc3 100644
--- a/src/mame/drivers/acefruit.c
+++ b/src/mame/drivers/acefruit.c
@@ -76,7 +76,7 @@ static INTERRUPT_GEN( acefruit_vblank )
state->m_refresh_timer->adjust( attotime::zero );
}
-static SCREEN_UPDATE( acefruit )
+static SCREEN_UPDATE_IND16( acefruit )
{
acefruit_state *state = screen.machine().driver_data<acefruit_state>();
int startrow = cliprect.min_y / 8;
@@ -578,10 +578,9 @@ static MACHINE_CONFIG_START( acefruit, acefruit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
- MCFG_SCREEN_UPDATE(acefruit)
+ MCFG_SCREEN_UPDATE_STATIC(acefruit)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/acommand.c b/src/mame/drivers/acommand.c
index 92e74ca98f8..e2d2560e89a 100644
--- a/src/mame/drivers/acommand.c
+++ b/src/mame/drivers/acommand.c
@@ -110,7 +110,7 @@ static TILE_GET_INFO( ac_get_tx_tile_info )
0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority, int pri_mask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int pri_mask)
{
acommand_state *state = machine.driver_data<acommand_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -203,7 +203,7 @@ g & 40
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f*/
static const UINT8 led_fill[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00,0x00,0x00,0x00,0x00};
-static void draw_led(bitmap_t &bitmap, int x, int y,UINT8 value)
+static void draw_led(bitmap_ind16 &bitmap, int x, int y,UINT8 value)
{
bitmap.plot_box(x, y, 6, 10, 0x00000000);
@@ -238,7 +238,7 @@ static void draw_led(bitmap_t &bitmap, int x, int y,UINT8 value)
}
-static SCREEN_UPDATE( acommand )
+static SCREEN_UPDATE_IND16( acommand )
{
acommand_state *state = screen.machine().driver_data<acommand_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
@@ -602,10 +602,9 @@ static MACHINE_CONFIG_START( acommand, acommand_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(acommand)
+ MCFG_SCREEN_UPDATE_STATIC(acommand)
MCFG_GFXDECODE(acommand)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c
index 2f5d596cd9c..5c9dcb2d5d0 100644
--- a/src/mame/drivers/actfancr.c
+++ b/src/mame/drivers/actfancr.c
@@ -347,10 +347,9 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(actfancr)
+ MCFG_SCREEN_UPDATE_STATIC(actfancr)
MCFG_GFXDECODE(actfan)
MCFG_PALETTE_LENGTH(768)
@@ -401,10 +400,9 @@ static MACHINE_CONFIG_START( triothep, actfancr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(actfancr)
+ MCFG_SCREEN_UPDATE_STATIC(actfancr)
MCFG_GFXDECODE(triothep)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index e8b3da816f8..904fcd1e5f1 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -162,7 +162,7 @@ public:
required_device<h63484_device> m_h63484;
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
/* misc */
UINT8 m_mux_data;
@@ -180,19 +180,19 @@ static H63484_DISPLAY_PIXELS( acrtc_display_pixels )
bitmap.pix16(y, x) = data & 0xf;
}
-bool adp_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 adp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0, cliprect);
/* graphics */
- m_h63484->update_screen(bitmap, cliprect);
+ m_h63484->update_screen(screen, bitmap, cliprect);
return 0;
}
#if 0
-static SCREEN_UPDATE( adp )
+static SCREEN_UPDATE_IND16( adp )
{
adp_state *state = screen.machine().driver_data<adp_state>();
@@ -665,10 +665,9 @@ static MACHINE_CONFIG_START( quickjac, adp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
-// MCFG_SCREEN_UPDATE(adp)
+ MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
MCFG_PALETTE_LENGTH(0x10)
@@ -697,10 +696,9 @@ static MACHINE_CONFIG_START( skattv, adp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
-// MCFG_SCREEN_UPDATE(adp)
+ MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
MCFG_PALETTE_LENGTH(0x10)
@@ -728,10 +726,9 @@ static MACHINE_CONFIG_START( backgamn, adp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
-// MCFG_SCREEN_UPDATE(adp)
+ MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
MCFG_PALETTE_LENGTH(0x10)
diff --git a/src/mame/drivers/aeroboto.c b/src/mame/drivers/aeroboto.c
index 2138842b7c5..01af7ae0986 100644
--- a/src/mame/drivers/aeroboto.c
+++ b/src/mame/drivers/aeroboto.c
@@ -270,10 +270,9 @@ static MACHINE_CONFIG_START( formatz, aeroboto_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(aeroboto)
+ MCFG_SCREEN_UPDATE_STATIC(aeroboto)
MCFG_GFXDECODE(aeroboto)
diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c
index c8f0d4ee653..fb808b5d046 100644
--- a/src/mame/drivers/aerofgt.c
+++ b/src/mame/drivers/aerofgt.c
@@ -1346,10 +1346,9 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pspikes)
+ MCFG_SCREEN_UPDATE_STATIC(pspikes)
MCFG_GFXDECODE(pspikes)
MCFG_PALETTE_LENGTH(2048)
@@ -1383,10 +1382,9 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8+4, 224+4-1)
- MCFG_SCREEN_UPDATE(spikes91)
+ MCFG_SCREEN_UPDATE_STATIC(spikes91)
MCFG_GFXDECODE(spikes91)
MCFG_PALETTE_LENGTH(2048)
@@ -1416,10 +1414,9 @@ static MACHINE_CONFIG_START( pspikesb, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pspikesb)
+ MCFG_SCREEN_UPDATE_STATIC(pspikesb)
MCFG_GFXDECODE(pspikesb)
MCFG_PALETTE_LENGTH(2048)
@@ -1447,10 +1444,9 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pspikes)
+ MCFG_SCREEN_UPDATE_STATIC(pspikes)
MCFG_GFXDECODE(pspikes)
MCFG_PALETTE_LENGTH(2048)
@@ -1483,10 +1479,9 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 45*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(karatblz)
+ MCFG_SCREEN_UPDATE_STATIC(karatblz)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1523,10 +1518,9 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 45*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(spinlbrk)
+ MCFG_SCREEN_UPDATE_STATIC(spinlbrk)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1563,10 +1557,9 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(turbofrc)
+ MCFG_SCREEN_UPDATE_STATIC(turbofrc)
MCFG_GFXDECODE(turbofrc)
MCFG_PALETTE_LENGTH(1024)
@@ -1604,10 +1597,9 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500))
/* wrong but improves sprite-background synchronization */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(turbofrc)
+ MCFG_SCREEN_UPDATE_STATIC(turbofrc)
MCFG_GFXDECODE(aerofgtb)
MCFG_PALETTE_LENGTH(1024)
@@ -1645,10 +1637,9 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state )
MCFG_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400))
/* wrong but improves sprite-background synchronization */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(aerofgt)
+ MCFG_SCREEN_UPDATE_STATIC(aerofgt)
MCFG_GFXDECODE(aerofgt)
MCFG_PALETTE_LENGTH(1024)
@@ -1684,10 +1675,9 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500))
/* wrong but improves sprite-background synchronization */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(aerfboot)
+ MCFG_SCREEN_UPDATE_STATIC(aerfboot)
MCFG_GFXDECODE(aerfboot)
MCFG_PALETTE_LENGTH(1024)
@@ -1716,10 +1706,9 @@ static MACHINE_CONFIG_START( aerfboo2, aerofgt_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500))
/* wrong but improves sprite-background synchronization */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(aerfboo2)
+ MCFG_SCREEN_UPDATE_STATIC(aerfboo2)
MCFG_GFXDECODE(aerfboo2)
MCFG_PALETTE_LENGTH(1024)
@@ -1750,10 +1739,9 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(wbbc97)
+ MCFG_SCREEN_UPDATE_STATIC(wbbc97)
MCFG_GFXDECODE(wbbc97)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/airbustr.c b/src/mame/drivers/airbustr.c
index f4935330bfb..9a1abd32eb6 100644
--- a/src/mame/drivers/airbustr.c
+++ b/src/mame/drivers/airbustr.c
@@ -658,10 +658,9 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(airbustr)
+ MCFG_SCREEN_UPDATE_STATIC(airbustr)
MCFG_SCREEN_EOF(airbustr)
MCFG_GFXDECODE(airbustr)
diff --git a/src/mame/drivers/ajax.c b/src/mame/drivers/ajax.c
index e3f9ee82b8d..2a7d3d8cbd8 100644
--- a/src/mame/drivers/ajax.c
+++ b/src/mame/drivers/ajax.c
@@ -229,10 +229,9 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ajax)
+ MCFG_SCREEN_UPDATE_STATIC(ajax)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/albazc.c b/src/mame/drivers/albazc.c
index 353fe342974..940c3ca904e 100644
--- a/src/mame/drivers/albazc.c
+++ b/src/mame/drivers/albazc.c
@@ -51,7 +51,7 @@ static VIDEO_START( hanaroku )
{
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
albazc_state *state = machine.driver_data<albazc_state>();
int i;
@@ -77,7 +77,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE(hanaroku)
+static SCREEN_UPDATE_IND16(hanaroku)
{
bitmap.fill(0x1f0, cliprect); // ???
draw_sprites(screen.machine(), bitmap, cliprect);
@@ -267,10 +267,9 @@ static MACHINE_CONFIG_START( hanaroku, albazc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hanaroku)
+ MCFG_SCREEN_UPDATE_STATIC(hanaroku)
MCFG_GFXDECODE(hanaroku)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c
index 5da8460fac4..806fa153e07 100644
--- a/src/mame/drivers/albazg.c
+++ b/src/mame/drivers/albazg.c
@@ -83,7 +83,7 @@ static VIDEO_START( yumefuda )
state->m_bg_tilemap = tilemap_create(machine, y_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( yumefuda )
+static SCREEN_UPDATE_IND16( yumefuda )
{
albazg_state *state = screen.machine().driver_data<albazg_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -391,10 +391,9 @@ static MACHINE_CONFIG_START( yumefuda, albazg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE( yumefuda )
+ MCFG_SCREEN_UPDATE_STATIC( 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 d7bb0c97a04..cf5487f8e71 100644
--- a/src/mame/drivers/aleck64.c
+++ b/src/mame/drivers/aleck64.c
@@ -821,10 +821,9 @@ static MACHINE_CONFIG_START( aleck64, _n64_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 525)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE(n64)
+ MCFG_SCREEN_UPDATE_STATIC(n64)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index 078018ef903..3e357636bda 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -24,7 +24,7 @@
#include "cpu/m68000/m68000.h"
#include "render.h"
#include "includes/amiga.h"
-#include "machine/laserdsc.h"
+#include "machine/ldstub.h"
#include "machine/6526cia.h"
#include "machine/nvram.h"
#include "machine/amigafdc.h"
@@ -34,10 +34,11 @@ class alg_state : public amiga_state
{
public:
alg_state(const machine_config &mconfig, device_type type, const char *tag)
- : amiga_state(mconfig, type, tag) { }
+ : amiga_state(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<sony_ldp1450_device> m_laserdisc;
emu_timer *m_serial_timer;
UINT8 m_serial_timer_active;
UINT16 m_input_select;
@@ -97,7 +98,6 @@ static VIDEO_START( alg )
static MACHINE_START( alg )
{
alg_state *state = machine.driver_data<alg_state>();
- state->m_laserdisc = machine.device("laserdisc");
state->m_serial_timer = machine.scheduler().timer_alloc(FUNC(response_timer));
state->m_serial_timer_active = FALSE;
@@ -122,16 +122,16 @@ static TIMER_CALLBACK( response_timer )
alg_state *state = machine.driver_data<alg_state>();
/* if we still have data to send, do it now */
- if (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
+ if (state->m_laserdisc->data_available_r() == ASSERT_LINE)
{
- UINT8 data = laserdisc_data_r(state->m_laserdisc);
+ UINT8 data = state->m_laserdisc->data_r();
if (data != 0x0a)
mame_printf_debug("Sending serial data = %02X\n", data);
amiga_serial_in_w(machine, data);
}
/* if there's more to come, set another timer */
- if (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
+ if (state->m_laserdisc->data_available_r() == ASSERT_LINE)
state->m_serial_timer->adjust(amiga_get_serial_char_period(machine));
else
state->m_serial_timer_active = FALSE;
@@ -143,7 +143,7 @@ static void vsync_callback(running_machine &machine)
alg_state *state = machine.driver_data<alg_state>();
/* if we have data available, set a timer to read it */
- if (!state->m_serial_timer_active && laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
+ if (!state->m_serial_timer_active && state->m_laserdisc->data_available_r() == ASSERT_LINE)
{
state->m_serial_timer->adjust(amiga_get_serial_char_period(machine));
state->m_serial_timer_active = TRUE;
@@ -156,10 +156,10 @@ static void serial_w(running_machine &machine, UINT16 data)
alg_state *state = machine.driver_data<alg_state>();
/* write to the laserdisc player */
- laserdisc_data_w(state->m_laserdisc, data & 0xff);
+ state->m_laserdisc->data_w(data & 0xff);
/* if we have data available, set a timer to read it */
- if (!state->m_serial_timer_active && laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
+ if (!state->m_serial_timer_active && state->m_laserdisc->data_available_r() == ASSERT_LINE)
{
state->m_serial_timer->adjust(amiga_get_serial_char_period(machine));
state->m_serial_timer_active = TRUE;
@@ -437,12 +437,12 @@ static MACHINE_CONFIG_START( alg_r1, alg_state )
MCFG_MACHINE_RESET(alg)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_LASERDISC_ADD("laserdisc", SONY_LDP1450, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(amiga, 512*2, 262, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDP1450_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(512*2, 262, amiga)
MCFG_LASERDISC_OVERLAY_CLIP((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_SIZE(512*2, 262)
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
@@ -461,7 +461,7 @@ static MACHINE_CONFIG_START( alg_r1, alg_state )
MCFG_SOUND_ROUTE(2, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(3, "lspeaker", 0.25)
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
diff --git a/src/mame/drivers/alien.c b/src/mame/drivers/alien.c
index 2d67527fff5..b37ed89a48b 100644
--- a/src/mame/drivers/alien.c
+++ b/src/mame/drivers/alien.c
@@ -30,6 +30,8 @@ public:
DECLARE_READ64_MEMBER(test_r);
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -38,7 +40,6 @@ protected:
// driver_device overrides
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
void alien_state::video_start()
@@ -46,7 +47,7 @@ void alien_state::video_start()
}
-bool alien_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 alien_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -87,7 +88,7 @@ static MACHINE_CONFIG_START( alien, alien_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(alien_state, screen_update)
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
diff --git a/src/mame/drivers/aliens.c b/src/mame/drivers/aliens.c
index 1e8447cf326..d5dd671c539 100644
--- a/src/mame/drivers/aliens.c
+++ b/src/mame/drivers/aliens.c
@@ -283,10 +283,9 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(aliens)
+ MCFG_SCREEN_UPDATE_STATIC(aliens)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/alpha68k.c b/src/mame/drivers/alpha68k.c
index 89a6f37f178..0d80e147a31 100644
--- a/src/mame/drivers/alpha68k.c
+++ b/src/mame/drivers/alpha68k.c
@@ -1999,10 +1999,9 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(sstingry)
+ MCFG_SCREEN_UPDATE_STATIC(sstingry)
MCFG_GFXDECODE(sstingry)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2045,10 +2044,9 @@ static MACHINE_CONFIG_START( kyros, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kyros)
+ MCFG_SCREEN_UPDATE_STATIC(kyros)
MCFG_GFXDECODE(kyros)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2091,10 +2089,9 @@ static MACHINE_CONFIG_START( jongbou, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kyros)
+ MCFG_SCREEN_UPDATE_STATIC(kyros)
MCFG_GFXDECODE(jongbou)
MCFG_PALETTE_LENGTH(256 + 1)
@@ -2126,10 +2123,9 @@ static MACHINE_CONFIG_START( alpha68k_I, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_I)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_I)
MCFG_GFXDECODE(paddle)
@@ -2171,10 +2167,9 @@ static MACHINE_CONFIG_START( alpha68k_II, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_II)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_II)
MCFG_GFXDECODE(alpha68k_II)
MCFG_PALETTE_LENGTH(2048)
@@ -2221,10 +2216,9 @@ static MACHINE_CONFIG_START( alpha68k_II_gm, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_II)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_II)
MCFG_GFXDECODE(alpha68k_II)
MCFG_PALETTE_LENGTH(2048)
@@ -2265,10 +2259,9 @@ static MACHINE_CONFIG_START( alpha68k_V, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_V)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_V)
MCFG_GFXDECODE(alpha68k_V)
MCFG_PALETTE_LENGTH(4096)
@@ -2308,10 +2301,9 @@ static MACHINE_CONFIG_START( alpha68k_V_sb, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_V_sb)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_V_sb)
MCFG_GFXDECODE(alpha68k_V)
MCFG_PALETTE_LENGTH(4096)
@@ -2350,10 +2342,9 @@ static MACHINE_CONFIG_START( tnextspc, alpha68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(alpha68k_I)
+ MCFG_SCREEN_UPDATE_STATIC(alpha68k_I)
MCFG_GFXDECODE(tnextspc)
diff --git a/src/mame/drivers/amaticmg.c b/src/mame/drivers/amaticmg.c
index 3f33222cc14..13cdf71207a 100644
--- a/src/mame/drivers/amaticmg.c
+++ b/src/mame/drivers/amaticmg.c
@@ -406,7 +406,7 @@ static VIDEO_START( amaticmg )
{
}
-static SCREEN_UPDATE( amaticmg )
+static SCREEN_UPDATE_IND16( amaticmg )
{
return 0;
}
@@ -686,10 +686,9 @@ static MACHINE_CONFIG_START( amaticmg, amaticmg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(amaticmg)
+ MCFG_SCREEN_UPDATE_STATIC(amaticmg)
// MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/ambush.c b/src/mame/drivers/ambush.c
index a7d0edd6306..cce890305e4 100644
--- a/src/mame/drivers/ambush.c
+++ b/src/mame/drivers/ambush.c
@@ -238,10 +238,9 @@ static MACHINE_CONFIG_START( ambush, ambush_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ambush)
+ MCFG_SCREEN_UPDATE_STATIC(ambush)
MCFG_GFXDECODE(ambush)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c
index 4ab6b9c5a1e..4a9919102ed 100644
--- a/src/mame/drivers/ampoker2.c
+++ b/src/mame/drivers/ampoker2.c
@@ -1180,10 +1180,9 @@ static MACHINE_CONFIG_START( ampoker2, ampoker2_state )
/* if VBLANK is used, the watchdog timer stop to work.
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
*/
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(20*8, 56*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(ampoker2)
+ MCFG_SCREEN_UPDATE_STATIC(ampoker2)
MCFG_GFXDECODE(ampoker2)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/amspdwy.c b/src/mame/drivers/amspdwy.c
index 5bbc0df7b0f..53b0b5076cf 100644
--- a/src/mame/drivers/amspdwy.c
+++ b/src/mame/drivers/amspdwy.c
@@ -290,10 +290,9 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(amspdwy)
+ MCFG_SCREEN_UPDATE_STATIC(amspdwy)
MCFG_GFXDECODE(amspdwy)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/angelkds.c b/src/mame/drivers/angelkds.c
index 1aa1927f2e0..835617c1770 100644
--- a/src/mame/drivers/angelkds.c
+++ b/src/mame/drivers/angelkds.c
@@ -623,10 +623,9 @@ static MACHINE_CONFIG_START( angelkds, angelkds_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(angelkds)
+ MCFG_SCREEN_UPDATE_STATIC(angelkds)
MCFG_GFXDECODE(angelkds)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/appoooh.c b/src/mame/drivers/appoooh.c
index 8d33f7682cf..2b278cf0b9e 100644
--- a/src/mame/drivers/appoooh.c
+++ b/src/mame/drivers/appoooh.c
@@ -464,10 +464,9 @@ static MACHINE_CONFIG_DERIVED( appoooh, appoooh_common )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(appoooh)
+ MCFG_SCREEN_UPDATE_STATIC(appoooh)
MCFG_GFXDECODE(appoooh)
MCFG_PALETTE_LENGTH(32*8+32*8)
@@ -483,10 +482,9 @@ static MACHINE_CONFIG_DERIVED( robowres, appoooh_common )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(robowres)
+ MCFG_SCREEN_UPDATE_STATIC(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 b0fe226bdb4..975d09b0153 100644
--- a/src/mame/drivers/aquarium.c
+++ b/src/mame/drivers/aquarium.c
@@ -336,10 +336,9 @@ static MACHINE_CONFIG_START( aquarium, aquarium_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 34*8-1)
- MCFG_SCREEN_UPDATE(aquarium)
+ MCFG_SCREEN_UPDATE_STATIC(aquarium)
MCFG_GFXDECODE(aquarium)
MCFG_PALETTE_LENGTH(0x1000/2)
diff --git a/src/mame/drivers/arabian.c b/src/mame/drivers/arabian.c
index 4c78e56eaee..a2fc7cb4a0c 100644
--- a/src/mame/drivers/arabian.c
+++ b/src/mame/drivers/arabian.c
@@ -382,10 +382,9 @@ static MACHINE_CONFIG_START( arabian, arabian_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 11, 244)
- MCFG_SCREEN_UPDATE(arabian)
+ MCFG_SCREEN_UPDATE_STATIC(arabian)
MCFG_PALETTE_LENGTH(256*32)
diff --git a/src/mame/drivers/arcadecl.c b/src/mame/drivers/arcadecl.c
index f1cdbf99b68..67121e8845f 100644
--- a/src/mame/drivers/arcadecl.c
+++ b/src/mame/drivers/arcadecl.c
@@ -341,11 +341,10 @@ static MACHINE_CONFIG_START( arcadecl, arcadecl_state )
MCFG_PALETTE_LENGTH(512)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(arcadecl)
+ MCFG_SCREEN_UPDATE_STATIC(arcadecl)
MCFG_VIDEO_START(arcadecl)
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index 0a6221cd04e..9e6e92fcd5f 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -312,10 +312,9 @@ static MACHINE_CONFIG_START( arcadia, arcadia_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(amiga)
+ MCFG_SCREEN_UPDATE_STATIC(amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT(amiga)
diff --git a/src/mame/drivers/argus.c b/src/mame/drivers/argus.c
index fc0dc2106d3..5cd7ba3a246 100644
--- a/src/mame/drivers/argus.c
+++ b/src/mame/drivers/argus.c
@@ -557,10 +557,9 @@ static MACHINE_CONFIG_START( argus, argus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(argus)
+ MCFG_SCREEN_UPDATE_STATIC(argus)
MCFG_GFXDECODE(argus)
MCFG_PALETTE_LENGTH(896)
@@ -602,10 +601,9 @@ static MACHINE_CONFIG_START( valtric, argus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(valtric)
+ MCFG_SCREEN_UPDATE_STATIC(valtric)
MCFG_GFXDECODE(valtric)
MCFG_PALETTE_LENGTH(768)
@@ -647,10 +645,9 @@ static MACHINE_CONFIG_START( butasan, argus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is taken from psychic5 driver */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(butasan)
+ MCFG_SCREEN_UPDATE_STATIC(butasan)
MCFG_GFXDECODE(butasan)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c
index 1d535386ed4..2ab3a5889e8 100644
--- a/src/mame/drivers/aristmk4.c
+++ b/src/mame/drivers/aristmk4.c
@@ -331,7 +331,7 @@ INLINE void uBackgroundColour(running_machine &machine)
}
}
-static SCREEN_UPDATE(aristmk4)
+static SCREEN_UPDATE_IND16(aristmk4)
{
aristmk4_state *state = screen.machine().driver_data<aristmk4_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -1674,7 +1674,6 @@ static MACHINE_CONFIG_START( aristmk4, aristmk4_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 304-1, 0, 216-1) /* from the crtc registers... updated by crtc */
@@ -1683,7 +1682,7 @@ static MACHINE_CONFIG_START( aristmk4, aristmk4_state )
MCFG_PALETTE_INIT(aristmk4)
MCFG_VIDEO_START(aristmk4)
- MCFG_SCREEN_UPDATE(aristmk4)
+ MCFG_SCREEN_UPDATE_STATIC(aristmk4)
MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf1 )
MCFG_VIA6522_ADD("via6522_0", 0, via_interface) /* 1 MHz.(only 1 or 2 MHz.are valid) */
diff --git a/src/mame/drivers/aristmk5.c b/src/mame/drivers/aristmk5.c
index a757b72e0f3..26ba7c710cc 100644
--- a/src/mame/drivers/aristmk5.c
+++ b/src/mame/drivers/aristmk5.c
@@ -428,14 +428,13 @@ static MACHINE_CONFIG_START( aristmk5, aristmk5_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_START(archimds_vidc)
- MCFG_SCREEN_UPDATE(archimds_vidc)
+ MCFG_SCREEN_UPDATE_STATIC(archimds_vidc)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("dac0", DAC, 0)
@@ -475,14 +474,13 @@ static MACHINE_CONFIG_START( aristmk5_usa, aristmk5_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_START(archimds_vidc)
- MCFG_SCREEN_UPDATE(archimds_vidc)
+ MCFG_SCREEN_UPDATE_STATIC(archimds_vidc)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("dac0", DAC, 0)
diff --git a/src/mame/drivers/aristmk6.c b/src/mame/drivers/aristmk6.c
index 8e3eeca2f92..2044bcb8533 100644
--- a/src/mame/drivers/aristmk6.c
+++ b/src/mame/drivers/aristmk6.c
@@ -27,7 +27,7 @@ VIDEO_START(aristmk6)
{
}
-SCREEN_UPDATE(aristmk6)
+SCREEN_UPDATE_RGB32(aristmk6)
{
aristmk6_state *state = screen.machine().driver_data<aristmk6_state>();
@@ -144,10 +144,9 @@ static MACHINE_CONFIG_START( aristmk6, aristmk6_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE(aristmk6)
+ MCFG_SCREEN_UPDATE_STATIC(aristmk6)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 5f5136e5d5d..bca1ceb08bf 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -1036,10 +1036,9 @@ static MACHINE_CONFIG_START( arkanoid, arkanoid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(arkanoid)
+ MCFG_SCREEN_UPDATE_STATIC(arkanoid)
MCFG_GFXDECODE(arkanoid)
MCFG_PALETTE_LENGTH(512)
@@ -1070,10 +1069,9 @@ static MACHINE_CONFIG_START( hexa, arkanoid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hexa)
+ MCFG_SCREEN_UPDATE_STATIC(hexa)
MCFG_GFXDECODE(hexa)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c
index d61e1526eb0..38d7682bffd 100644
--- a/src/mame/drivers/armedf.c
+++ b/src/mame/drivers/armedf.c
@@ -1209,12 +1209,11 @@ static MACHINE_CONFIG_START( terraf, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1259,12 +1258,11 @@ static MACHINE_CONFIG_START( terrafb, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1304,12 +1302,11 @@ static MACHINE_CONFIG_START( kozure, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 ) // 320 x 240, trusted
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1349,12 +1346,11 @@ static MACHINE_CONFIG_START( armedf, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START(armedf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1394,12 +1390,11 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1439,12 +1434,11 @@ static MACHINE_CONFIG_START( legion, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1484,12 +1478,11 @@ static MACHINE_CONFIG_START( legiono, armedf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_VIDEO_START(terraf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
@@ -1544,12 +1537,11 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_VIDEO_START(armedf)
- MCFG_SCREEN_UPDATE(armedf)
+ MCFG_SCREEN_UPDATE_STATIC(armedf)
MCFG_SCREEN_EOF(armedf)
MCFG_GFXDECODE(armedf)
diff --git a/src/mame/drivers/artmagic.c b/src/mame/drivers/artmagic.c
index ed92f44f527..42dd5a306f8 100644
--- a/src/mame/drivers/artmagic.c
+++ b/src/mame/drivers/artmagic.c
@@ -498,7 +498,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
MASTER_CLOCK_40MHz/6, /* pixel clock */
1, /* pixels per clock */
- artmagic_scanline, /* scanline update */
+ NULL, /* scanline update (indexed16) */
+ artmagic_scanline, /* scanline update (rgb32) */
m68k_gen_int, /* generate interrupt */
artmagic_to_shiftreg, /* write to shiftreg function */
artmagic_from_shiftreg /* read from shiftreg function */
@@ -857,9 +858,8 @@ static MACHINE_CONFIG_START( artmagic, artmagic_state )
MCFG_VIDEO_START(artmagic)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_40MHz/6, 428, 0, 320, 313, 0, 256)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ashnojoe.c b/src/mame/drivers/ashnojoe.c
index 8d9713a8ef3..abbef9e774c 100644
--- a/src/mame/drivers/ashnojoe.c
+++ b/src/mame/drivers/ashnojoe.c
@@ -369,10 +369,9 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(14*8, 50*8-1, 3*8, 29*8-1)
- MCFG_SCREEN_UPDATE(ashnojoe)
+ MCFG_SCREEN_UPDATE_STATIC(ashnojoe)
MCFG_GFXDECODE(ashnojoe)
MCFG_PALETTE_LENGTH(0x1000/2)
diff --git a/src/mame/drivers/asterix.c b/src/mame/drivers/asterix.c
index 6ec1460ca87..8834a9fd374 100644
--- a/src/mame/drivers/asterix.c
+++ b/src/mame/drivers/asterix.c
@@ -314,10 +314,9 @@ static MACHINE_CONFIG_START( asterix, asterix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(asterix)
+ MCFG_SCREEN_UPDATE_STATIC(asterix)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/asteroid.c b/src/mame/drivers/asteroid.c
index f67fc2d48df..e93fbc8fcef 100644
--- a/src/mame/drivers/asteroid.c
+++ b/src/mame/drivers/asteroid.c
@@ -624,7 +624,7 @@ static MACHINE_CONFIG_START( asteroid, asteroid_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400,300)
MCFG_SCREEN_VISIBLE_AREA(522, 1566, 394, 1182)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(dvg)
@@ -675,7 +675,7 @@ static MACHINE_CONFIG_DERIVED( llander, asteroid )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_VISIBLE_AREA(522, 1566, 270, 1070)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(dvg)
diff --git a/src/mame/drivers/astinvad.c b/src/mame/drivers/astinvad.c
index 9604c4b9556..6364d335f3a 100644
--- a/src/mame/drivers/astinvad.c
+++ b/src/mame/drivers/astinvad.c
@@ -134,7 +134,7 @@ static WRITE8_HANDLER( spaceint_videoram_w )
*
*************************************/
-static void plot_byte( running_machine &machine, bitmap_t &bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color )
+static void plot_byte( running_machine &machine, bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color )
{
astinvad_state *state = machine.driver_data<astinvad_state>();
pen_t fore_pen = MAKE_RGB(pal1bit(color >> 0), pal1bit(color >> 2), pal1bit(color >> 1));
@@ -151,7 +151,7 @@ static void plot_byte( running_machine &machine, bitmap_t &bitmap, UINT8 y, UINT
}
-static SCREEN_UPDATE( astinvad )
+static SCREEN_UPDATE_RGB32( astinvad )
{
astinvad_state *state = screen.machine().driver_data<astinvad_state>();
const UINT8 *color_prom = screen.machine().region("proms")->base();
@@ -171,7 +171,7 @@ static SCREEN_UPDATE( astinvad )
}
-static SCREEN_UPDATE( spaceint )
+static SCREEN_UPDATE_RGB32( spaceint )
{
astinvad_state *state = screen.machine().driver_data<astinvad_state>();
const UINT8 *color_prom = screen.machine().region("proms")->base();
@@ -599,9 +599,8 @@ static MACHINE_CONFIG_START( kamikaze, astinvad_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 256, 32, 256)
- MCFG_SCREEN_UPDATE(astinvad)
+ MCFG_SCREEN_UPDATE_STATIC(astinvad)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -635,11 +634,10 @@ static MACHINE_CONFIG_START( spaceint, astinvad_state )
MCFG_VIDEO_START(spaceint)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(spaceint)
+ MCFG_SCREEN_UPDATE_STATIC(spaceint)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index c6b19b4e67e..5e6a130beaf 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -1305,10 +1305,9 @@ static MACHINE_CONFIG_START( astrocade_base, astrocde_state )
MCFG_PALETTE_LENGTH(512)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(astrocde)
+ MCFG_SCREEN_UPDATE_STATIC(astrocde)
MCFG_PALETTE_INIT(astrocde)
MCFG_VIDEO_START(astrocde)
@@ -1327,7 +1326,7 @@ static MACHINE_CONFIG_DERIVED( astrocade_16color_base, astrocade_base )
MCFG_VIDEO_START(profpac)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(profpac)
+ MCFG_SCREEN_UPDATE_STATIC(profpac)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/astrocorp.c b/src/mame/drivers/astrocorp.c
index c627a519481..0693c465f58 100644
--- a/src/mame/drivers/astrocorp.c
+++ b/src/mame/drivers/astrocorp.c
@@ -48,7 +48,7 @@ public:
size_t m_spriteram_size;
/* video-related */
- bitmap_t * m_bitmap;
+ bitmap_ind16 m_bitmap;
UINT16 m_screen_enable;
UINT16 m_draw_sprites;
};
@@ -61,9 +61,9 @@ static VIDEO_START( astrocorp )
{
astrocorp_state *state = machine.driver_data<astrocorp_state>();
- state->m_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_bitmap));
+ state->save_item(NAME(state->m_bitmap));
state->save_item (NAME(state->m_screen_enable));
state->save_item (NAME(state->m_draw_sprites));
}
@@ -90,7 +90,7 @@ static VIDEO_START( astrocorp )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
astrocorp_state *state = machine.driver_data<astrocorp_state>();
UINT16 *source = state->m_spriteram;
@@ -138,12 +138,12 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE(astrocorp)
+static SCREEN_UPDATE_IND16(astrocorp)
{
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);
+ copybitmap(bitmap, state->m_bitmap, 0,0,0,0, cliprect);
else
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -163,7 +163,7 @@ static WRITE16_HANDLER( astrocorp_draw_sprites_w )
UINT16 now = COMBINE_DATA(&state->m_draw_sprites);
if (!old && now)
- draw_sprites(space->machine(), *state->m_bitmap, space->machine().primary_screen->visible_area());
+ draw_sprites(space->machine(), state->m_bitmap, space->machine().primary_screen->visible_area());
}
static WRITE16_HANDLER( astrocorp_eeprom_w )
@@ -474,10 +474,9 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58.846) // measured on pcb
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(astrocorp)
+ MCFG_SCREEN_UPDATE_STATIC(astrocorp)
MCFG_GFXDECODE(astrocorp)
MCFG_PALETTE_LENGTH(0x100)
@@ -526,10 +525,9 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58.846)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x200-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE(astrocorp)
+ MCFG_SCREEN_UPDATE_STATIC(astrocorp)
MCFG_GFXDECODE(astrocorp)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/astrof.c b/src/mame/drivers/astrof.c
index d7d8b68d183..38abc3d29f9 100644
--- a/src/mame/drivers/astrof.c
+++ b/src/mame/drivers/astrof.c
@@ -376,7 +376,7 @@ static WRITE8_HANDLER( tomahawk_video_control_2_w )
}
-static void video_update_common( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, pen_t *pens )
+static void video_update_common( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, pen_t *pens )
{
astrof_state *state = machine.driver_data<astrof_state>();
offs_t offs;
@@ -421,7 +421,7 @@ static void video_update_common( running_machine &machine, bitmap_t &bitmap, con
}
-static SCREEN_UPDATE( astrof )
+static SCREEN_UPDATE_RGB32( astrof )
{
pen_t pens[ASTROF_NUM_PENS];
@@ -433,7 +433,7 @@ static SCREEN_UPDATE( astrof )
}
-static SCREEN_UPDATE( tomahawk )
+static SCREEN_UPDATE_RGB32( tomahawk )
{
pen_t pens[TOMAHAWK_NUM_PENS];
@@ -965,7 +965,6 @@ static MACHINE_CONFIG_START( base, astrof_state )
MCFG_VIDEO_START(astrof)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MACHINE_CONFIG_END
@@ -980,7 +979,7 @@ static MACHINE_CONFIG_DERIVED( astrof, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(astrof)
+ MCFG_SCREEN_UPDATE_STATIC(astrof)
/* audio hardware */
MCFG_FRAGMENT_ADD(astrof_audio)
@@ -1006,7 +1005,7 @@ static MACHINE_CONFIG_DERIVED( spfghmk2, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(astrof)
+ MCFG_SCREEN_UPDATE_STATIC(astrof)
/* audio hardware */
MCFG_FRAGMENT_ADD(spfghmk2_audio)
@@ -1023,7 +1022,7 @@ static MACHINE_CONFIG_DERIVED( tomahawk, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(tomahawk)
+ MCFG_SCREEN_UPDATE_STATIC(tomahawk)
/* audio hardware */
MCFG_FRAGMENT_ADD(tomahawk_audio)
diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c
index 9855bee3183..7edce6a0a8a 100644
--- a/src/mame/drivers/asuka.c
+++ b/src/mame/drivers/asuka.c
@@ -911,10 +911,9 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE(bonzeadv)
+ MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
@@ -957,10 +956,9 @@ static MACHINE_CONFIG_START( asuka, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(asuka)
+ MCFG_SCREEN_UPDATE_STATIC(asuka)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
@@ -1010,10 +1008,9 @@ static MACHINE_CONFIG_START( cadash, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(bonzeadv)
+ MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
@@ -1055,10 +1052,9 @@ static MACHINE_CONFIG_START( mofflott, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(asuka)
+ MCFG_SCREEN_UPDATE_STATIC(asuka)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
@@ -1104,10 +1100,9 @@ static MACHINE_CONFIG_START( galmedes, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(asuka)
+ MCFG_SCREEN_UPDATE_STATIC(asuka)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
@@ -1149,10 +1144,9 @@ static MACHINE_CONFIG_START( eto, asuka_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(asuka)
+ MCFG_SCREEN_UPDATE_STATIC(asuka)
MCFG_SCREEN_EOF(asuka)
MCFG_GFXDECODE(asuka)
diff --git a/src/mame/drivers/atarifb.c b/src/mame/drivers/atarifb.c
index 5e455ceaa39..7fcff26e8fd 100644
--- a/src/mame/drivers/atarifb.c
+++ b/src/mame/drivers/atarifb.c
@@ -566,10 +566,9 @@ static MACHINE_CONFIG_START( atarifb, atarifb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2037) /* 16.3ms * 1/8 = 2037.5. Is it 1/8th or 3/32nds? (1528?) */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 38*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(atarifb)
+ MCFG_SCREEN_UPDATE_STATIC(atarifb)
MCFG_GFXDECODE(atarifb)
MCFG_PALETTE_LENGTH(12)
@@ -602,7 +601,7 @@ static MACHINE_CONFIG_DERIVED( abaseb, atarifb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(abaseb)
+ MCFG_SCREEN_UPDATE_STATIC(abaseb)
/* sound hardware */
MCFG_SOUND_REPLACE("discrete", DISCRETE, 0)
@@ -620,7 +619,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(soccer)
+ MCFG_SCREEN_UPDATE_STATIC(soccer)
MCFG_GFXDECODE(soccer)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index bc5ae405674..cd042a5ff85 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -469,10 +469,9 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
MCFG_PALETTE_LENGTH(1280)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atarig1)
+ MCFG_SCREEN_UPDATE_STATIC(atarig1)
MCFG_SCREEN_EOF(atarig1)
MCFG_VIDEO_START(atarig1)
diff --git a/src/mame/drivers/atarig42.c b/src/mame/drivers/atarig42.c
index def0ebbefd5..3bf95be1e06 100644
--- a/src/mame/drivers/atarig42.c
+++ b/src/mame/drivers/atarig42.c
@@ -578,11 +578,10 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atarig42)
+ MCFG_SCREEN_UPDATE_STATIC(atarig42)
MCFG_SCREEN_EOF(atarig42)
MCFG_VIDEO_START(atarig42)
diff --git a/src/mame/drivers/atarigt.c b/src/mame/drivers/atarigt.c
index 43ceb25406c..0b215ddcf1b 100644
--- a/src/mame/drivers/atarigt.c
+++ b/src/mame/drivers/atarigt.c
@@ -829,11 +829,10 @@ static MACHINE_CONFIG_START( atarigt, atarigt_state )
MCFG_PALETTE_LENGTH(32768)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
/* 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(atarigt)
+ MCFG_SCREEN_UPDATE_STATIC(atarigt)
MCFG_SCREEN_EOF(atarigt)
MCFG_VIDEO_START(atarigt)
diff --git a/src/mame/drivers/atarigx2.c b/src/mame/drivers/atarigx2.c
index cec4e9ff43d..15a83cc4cdf 100644
--- a/src/mame/drivers/atarigx2.c
+++ b/src/mame/drivers/atarigx2.c
@@ -1449,11 +1449,10 @@ static MACHINE_CONFIG_START( atarigx2, atarigx2_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atarigx2)
+ MCFG_SCREEN_UPDATE_STATIC(atarigx2)
MCFG_SCREEN_EOF(atarigx2)
MCFG_VIDEO_START(atarigx2)
diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c
index 181773ae368..3fabbc04c43 100644
--- a/src/mame/drivers/atarisy1.c
+++ b/src/mame/drivers/atarisy1.c
@@ -785,11 +785,10 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atarisy1)
+ MCFG_SCREEN_UPDATE_STATIC(atarisy1)
MCFG_VIDEO_START(atarisy1)
diff --git a/src/mame/drivers/atarisy2.c b/src/mame/drivers/atarisy2.c
index 956776b78d4..675fb9aa342 100644
--- a/src/mame/drivers/atarisy2.c
+++ b/src/mame/drivers/atarisy2.c
@@ -1281,8 +1281,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(atarisy2)
+ MCFG_SCREEN_UPDATE_STATIC(atarisy2)
MCFG_VIDEO_START(atarisy2)
diff --git a/src/mame/drivers/atarisy4.c b/src/mame/drivers/atarisy4.c
index e0fc73a59f4..018cba46edb 100644
--- a/src/mame/drivers/atarisy4.c
+++ b/src/mame/drivers/atarisy4.c
@@ -134,7 +134,7 @@ static VIDEO_RESET( atarisy4 )
gpu.vblank_wait = 0;
}
-static SCREEN_UPDATE( atarisy4 )
+static SCREEN_UPDATE_RGB32( atarisy4 )
{
atarisy4_state *state = screen.machine().driver_data<atarisy4_state>();
int y;
@@ -736,8 +736,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(atarisy4)
+ MCFG_SCREEN_UPDATE_STATIC(atarisy4)
MCFG_PALETTE_LENGTH(256)
MCFG_VIDEO_START(atarisy4)
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 88d2d36209b..cf9f391128e 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -351,11 +351,10 @@ static MACHINE_CONFIG_START( atetris, atetris_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atetris)
+ MCFG_SCREEN_UPDATE_STATIC(atetris)
MCFG_VIDEO_START(atetris)
@@ -387,11 +386,10 @@ static MACHINE_CONFIG_START( atetrisb2, atetris_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(atetris)
+ MCFG_SCREEN_UPDATE_STATIC(atetris)
MCFG_VIDEO_START(atetris)
diff --git a/src/mame/drivers/attckufo.c b/src/mame/drivers/attckufo.c
index 73f972a0ef3..8f5d82ab5e8 100644
--- a/src/mame/drivers/attckufo.c
+++ b/src/mame/drivers/attckufo.c
@@ -160,7 +160,7 @@ static INTERRUPT_GEN( attckufo_raster_interrupt )
mos6560_raster_interrupt_gen(state->m_mos6560);
}
-static SCREEN_UPDATE( attckufo )
+static SCREEN_UPDATE_IND16( attckufo )
{
attckufo_state *state = screen.machine().driver_data<attckufo_state>();
mos6560_video_update(state->m_mos6560, bitmap, cliprect);
@@ -200,10 +200,9 @@ static MACHINE_CONFIG_START( attckufo, attckufo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE((MOS6560_XSIZE + 7) & ~7, MOS6560_YSIZE)
MCFG_SCREEN_VISIBLE_AREA(0, 23*8 - 1, 0, 22*8 - 1)
- MCFG_SCREEN_UPDATE(attckufo)
+ MCFG_SCREEN_UPDATE_STATIC(attckufo)
MCFG_PALETTE_LENGTH(ARRAY_LENGTH(attckufo_palette))
MCFG_PALETTE_INIT(attckufo)
diff --git a/src/mame/drivers/atvtrack.c b/src/mame/drivers/atvtrack.c
index 23b167c15dd..44294baf8f6 100644
--- a/src/mame/drivers/atvtrack.c
+++ b/src/mame/drivers/atvtrack.c
@@ -305,7 +305,7 @@ VIDEO_START(atvtrack)
{
}
-SCREEN_UPDATE(atvtrack)
+SCREEN_UPDATE_RGB32(atvtrack)
{
return 0;
}
@@ -388,10 +388,9 @@ static MACHINE_CONFIG_START( atvtrack, atvtrack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE(atvtrack)
+ MCFG_SCREEN_UPDATE_STATIC(atvtrack)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/avalnche.c b/src/mame/drivers/avalnche.c
index a82638e253d..9f8b129104c 100644
--- a/src/mame/drivers/avalnche.c
+++ b/src/mame/drivers/avalnche.c
@@ -44,7 +44,7 @@
*
*************************************/
-static SCREEN_UPDATE( avalnche )
+static SCREEN_UPDATE_RGB32( avalnche )
{
avalnche_state *state = screen.machine().driver_data<avalnche_state>();
offs_t offs;
@@ -261,10 +261,9 @@ static MACHINE_CONFIG_START( avalnche, avalnche_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(avalnche)
+ MCFG_SCREEN_UPDATE_STATIC(avalnche)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/avt.c b/src/mame/drivers/avt.c
index 58090df626d..e1fe3a42621 100644
--- a/src/mame/drivers/avt.c
+++ b/src/mame/drivers/avt.c
@@ -501,7 +501,7 @@ static VIDEO_START( avt )
}
-static SCREEN_UPDATE( avt )
+static SCREEN_UPDATE_IND16( avt )
{
avt_state *state = screen.machine().driver_data<avt_state>();
int x,y;
@@ -896,10 +896,9 @@ static MACHINE_CONFIG_START( avt, avt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(avt)
+ MCFG_SCREEN_UPDATE_STATIC(avt)
MCFG_GFXDECODE(avt)
diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c
index 21048b081bb..c0c7ab2acbc 100644
--- a/src/mame/drivers/aztarac.c
+++ b/src/mame/drivers/aztarac.c
@@ -164,7 +164,7 @@ static MACHINE_CONFIG_START( aztarac, aztarac_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(aztarac)
diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c
index 073a8285898..db2af0328cc 100644
--- a/src/mame/drivers/backfire.c
+++ b/src/mame/drivers/backfire.c
@@ -35,8 +35,8 @@ public:
UINT32 * m_right_priority;
/* video related */
- bitmap_t *m_left;
- bitmap_t *m_right;
+ bitmap_ind16 *m_left;
+ bitmap_ind16 *m_right;
/* devices */
device_t *m_maincpu;
@@ -70,8 +70,8 @@ static VIDEO_START( backfire )
state->save_item(NAME(state->m_pf3_rowscroll));
state->save_item(NAME(state->m_pf4_rowscroll));
- state->m_left = auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
- state->m_right = auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
+ state->m_left = auto_bitmap_ind16_alloc(machine, 80*8, 32*8);
+ state->m_right = auto_bitmap_ind16_alloc(machine, 80*8, 32*8);
state->save_pointer(NAME(state->m_spriteram_1), 0x2000/2);
state->save_pointer(NAME(state->m_spriteram_2), 0x2000/2);
@@ -82,7 +82,7 @@ static VIDEO_START( backfire )
-static SCREEN_UPDATE( backfire_left )
+static SCREEN_UPDATE_IND16( backfire_left )
{
backfire_state *state = screen.machine().driver_data<backfire_state>();
@@ -101,13 +101,13 @@ static SCREEN_UPDATE( backfire_left )
{
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(screen.machine(), bitmap, cliprect, state->m_spriteram_1, 0x800);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram_1, 0x800);
}
else if (state->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(screen.machine(), bitmap, cliprect, state->m_spriteram_1, 0x800);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram_1, 0x800);
}
else
popmessage( "unknown left priority %08x", state->m_left_priority[0]);
@@ -115,7 +115,7 @@ static SCREEN_UPDATE( backfire_left )
return 0;
}
-static SCREEN_UPDATE( backfire_right )
+static SCREEN_UPDATE_IND16( backfire_right )
{
backfire_state *state = screen.machine().driver_data<backfire_state>();
@@ -134,13 +134,13 @@ static SCREEN_UPDATE( backfire_right )
{
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(screen.machine(), bitmap, cliprect, state->m_spriteram_2, 0x800);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram_2, 0x800);
}
else if (state->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(screen.machine(), bitmap, cliprect, state->m_spriteram_2, 0x800);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram_2, 0x800);
}
else
popmessage( "unknown right priority %08x", state->m_right_priority[0]);
@@ -491,20 +491,18 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(backfire_left)
+ MCFG_SCREEN_UPDATE_STATIC(backfire_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(backfire_right)
+ MCFG_SCREEN_UPDATE_STATIC(backfire_right)
MCFG_VIDEO_START(backfire)
diff --git a/src/mame/drivers/badlands.c b/src/mame/drivers/badlands.c
index 66c5434843a..42893cd506e 100644
--- a/src/mame/drivers/badlands.c
+++ b/src/mame/drivers/badlands.c
@@ -524,11 +524,10 @@ static MACHINE_CONFIG_START( badlands, badlands_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(badlands)
+ MCFG_SCREEN_UPDATE_STATIC(badlands)
MCFG_VIDEO_START(badlands)
@@ -733,11 +732,10 @@ static MACHINE_CONFIG_START( badlandsb, badlands_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(badlands)
+ MCFG_SCREEN_UPDATE_STATIC(badlands)
MCFG_VIDEO_START(badlands)
diff --git a/src/mame/drivers/bagman.c b/src/mame/drivers/bagman.c
index 48a90c1b5c8..fa302010ae9 100644
--- a/src/mame/drivers/bagman.c
+++ b/src/mame/drivers/bagman.c
@@ -487,9 +487,8 @@ static MACHINE_CONFIG_START( bagman, bagman_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BAGMAN_HCLK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(bagman)
+ MCFG_SCREEN_UPDATE_STATIC(bagman)
MCFG_GFXDECODE(bagman)
MCFG_PALETTE_LENGTH(64)
@@ -525,8 +524,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(bagman)
+ MCFG_SCREEN_UPDATE_STATIC(bagman)
MCFG_GFXDECODE(pickin)
MCFG_PALETTE_LENGTH(64)
@@ -577,9 +575,8 @@ static MACHINE_CONFIG_START( botanic, bagman_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BAGMAN_HCLK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(bagman)
+ MCFG_SCREEN_UPDATE_STATIC(bagman)
MCFG_GFXDECODE(bagman)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c
index 801818d5e02..2265925c27b 100644
--- a/src/mame/drivers/balsente.c
+++ b/src/mame/drivers/balsente.c
@@ -1223,9 +1223,8 @@ static MACHINE_CONFIG_START( balsente, balsente_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BALSENTE_PIXEL_CLOCK, BALSENTE_HTOTAL, BALSENTE_HBEND, BALSENTE_HBSTART, BALSENTE_VTOTAL, BALSENTE_VBEND, BALSENTE_VBSTART)
- MCFG_SCREEN_UPDATE(balsente)
+ MCFG_SCREEN_UPDATE_STATIC(balsente)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/bankp.c b/src/mame/drivers/bankp.c
index 0df49a86c2d..9eae5b5a142 100644
--- a/src/mame/drivers/bankp.c
+++ b/src/mame/drivers/bankp.c
@@ -289,10 +289,9 @@ static MACHINE_CONFIG_START( bankp, bankp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bankp)
+ MCFG_SCREEN_UPDATE_STATIC(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 c2192dd6655..b12dbdd4aee 100644
--- a/src/mame/drivers/baraduke.c
+++ b/src/mame/drivers/baraduke.c
@@ -394,10 +394,9 @@ static MACHINE_CONFIG_START( baraduke, baraduke_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(baraduke)
+ MCFG_SCREEN_UPDATE_STATIC(baraduke)
MCFG_SCREEN_EOF(baraduke)
MCFG_GFXDECODE(baraduke)
diff --git a/src/mame/drivers/bartop52.c b/src/mame/drivers/bartop52.c
index c43b1c05351..e7826c2847f 100644
--- a/src/mame/drivers/bartop52.c
+++ b/src/mame/drivers/bartop52.c
@@ -125,11 +125,10 @@ static MACHINE_CONFIG_START( a5200, bartop52_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y)
MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ)
MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ)
- MCFG_SCREEN_UPDATE(atari)
+ MCFG_SCREEN_UPDATE_STATIC(atari)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(atari)
diff --git a/src/mame/drivers/batman.c b/src/mame/drivers/batman.c
index 96a7fed2d3f..474504d47da 100644
--- a/src/mame/drivers/batman.c
+++ b/src/mame/drivers/batman.c
@@ -249,11 +249,10 @@ static MACHINE_CONFIG_START( batman, batman_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(batman)
+ MCFG_SCREEN_UPDATE_STATIC(batman)
MCFG_VIDEO_START(batman)
diff --git a/src/mame/drivers/battlane.c b/src/mame/drivers/battlane.c
index a3ff4cadba7..b2d76c86eb8 100644
--- a/src/mame/drivers/battlane.c
+++ b/src/mame/drivers/battlane.c
@@ -312,10 +312,9 @@ static MACHINE_CONFIG_START( battlane, battlane_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32 * 8, 32 * 8)
MCFG_SCREEN_VISIBLE_AREA(1 * 8, 31 * 8 - 1, 0 * 8, 32 * 8 - 1)
- MCFG_SCREEN_UPDATE(battlane)
+ MCFG_SCREEN_UPDATE_STATIC(battlane)
MCFG_GFXDECODE(battlane)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/battlera.c b/src/mame/drivers/battlera.c
index d547a0bde94..8a082ddfc80 100644
--- a/src/mame/drivers/battlera.c
+++ b/src/mame/drivers/battlera.c
@@ -245,10 +245,9 @@ static MACHINE_CONFIG_START( battlera, battlera_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE(battlera)
+ MCFG_SCREEN_UPDATE_STATIC(battlera)
MCFG_GFXDECODE(battlera)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/battlex.c b/src/mame/drivers/battlex.c
index e0215624f21..f147e2576b9 100644
--- a/src/mame/drivers/battlex.c
+++ b/src/mame/drivers/battlex.c
@@ -262,10 +262,9 @@ static MACHINE_CONFIG_START( battlex, battlex_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(battlex)
+ MCFG_SCREEN_UPDATE_STATIC(battlex)
MCFG_GFXDECODE(battlex)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/battlnts.c b/src/mame/drivers/battlnts.c
index fdf2ae378b5..09b0af0665b 100644
--- a/src/mame/drivers/battlnts.c
+++ b/src/mame/drivers/battlnts.c
@@ -259,10 +259,9 @@ static MACHINE_CONFIG_START( battlnts, battlnts_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(battlnts)
+ MCFG_SCREEN_UPDATE_STATIC(battlnts)
MCFG_GFXDECODE(battlnts)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index 03767750d2d..0b06702ddd2 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -696,10 +696,9 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bbuster)
+ MCFG_SCREEN_UPDATE_STATIC(bbuster)
MCFG_SCREEN_EOF(bbuster)
MCFG_GFXDECODE(bbusters)
@@ -734,10 +733,9 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mechatt)
+ MCFG_SCREEN_UPDATE_STATIC(mechatt)
MCFG_SCREEN_EOF(mechatt)
MCFG_GFXDECODE(mechatt)
diff --git a/src/mame/drivers/beaminv.c b/src/mame/drivers/beaminv.c
index 7b468764827..0c3f18eb970 100644
--- a/src/mame/drivers/beaminv.c
+++ b/src/mame/drivers/beaminv.c
@@ -165,7 +165,7 @@ static MACHINE_RESET( beaminv )
*
*************************************/
-static SCREEN_UPDATE( beaminv )
+static SCREEN_UPDATE_RGB32( beaminv )
{
beaminv_state *state = screen.machine().driver_data<beaminv_state>();
offs_t offs;
@@ -340,11 +340,10 @@ static MACHINE_CONFIG_START( beaminv, beaminv_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 247, 16, 231)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE(beaminv)
+ MCFG_SCREEN_UPDATE_STATIC(beaminv)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/beathead.c b/src/mame/drivers/beathead.c
index 5bed0f4a434..3ae4f9579a9 100644
--- a/src/mame/drivers/beathead.c
+++ b/src/mame/drivers/beathead.c
@@ -413,7 +413,7 @@ static MACHINE_CONFIG_START( beathead, beathead_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(beathead_state, screen_update)
MCFG_SCREEN_SIZE(42*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c
index df6b661073e..05471d056be 100644
--- a/src/mame/drivers/beezer.c
+++ b/src/mame/drivers/beezer.c
@@ -98,10 +98,9 @@ static MACHINE_CONFIG_START( beezer, beezer_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 256)
MCFG_SCREEN_VISIBLE_AREA(16, 304-1, 0, 240-1) // 288 x 240, correct?
- MCFG_SCREEN_UPDATE(beezer)
+ MCFG_SCREEN_UPDATE_STATIC(beezer)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/berzerk.c b/src/mame/drivers/berzerk.c
index 3e86ef55455..ef8aecd3f41 100644
--- a/src/mame/drivers/berzerk.c
+++ b/src/mame/drivers/berzerk.c
@@ -444,7 +444,7 @@ static void get_pens(running_machine &machine, pen_t *pens)
}
-static SCREEN_UPDATE( berzerk )
+static SCREEN_UPDATE_RGB32( berzerk )
{
berzerk_state *state = screen.machine().driver_data<berzerk_state>();
pen_t pens[NUM_PENS];
@@ -1084,9 +1084,8 @@ static MACHINE_CONFIG_START( berzerk, berzerk_state )
MCFG_VIDEO_START(berzerk)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(berzerk)
+ MCFG_SCREEN_UPDATE_STATIC(berzerk)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bestleag.c b/src/mame/drivers/bestleag.c
index 1bacb0c6922..b25ab9c0db9 100644
--- a/src/mame/drivers/bestleag.c
+++ b/src/mame/drivers/bestleag.c
@@ -107,7 +107,7 @@ Note: sprite chip is different than the other Big Striker sets and they
include several similiarities with other Playmark games (including
the sprite end code and the data being offset (i.e. spriteram starting from 0x16/2))
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bestleag_state *state = machine.driver_data<bestleag_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -163,7 +163,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static SCREEN_UPDATE(bestleag)
+static SCREEN_UPDATE_IND16(bestleag)
{
bestleag_state *state = screen.machine().driver_data<bestleag_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,(state->m_vregs[0x00/2] & 0xfff) + (state->m_vregs[0x08/2] & 0x7) - 3);
@@ -180,7 +180,7 @@ static SCREEN_UPDATE(bestleag)
return 0;
}
-static SCREEN_UPDATE(bestleaw)
+static SCREEN_UPDATE_IND16(bestleaw)
{
bestleag_state *state = screen.machine().driver_data<bestleag_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_vregs[0x08/2]);
@@ -363,10 +363,9 @@ static MACHINE_CONFIG_START( bestleag, bestleag_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bestleag)
+ MCFG_SCREEN_UPDATE_STATIC(bestleag)
MCFG_GFXDECODE(bestleag)
MCFG_PALETTE_LENGTH(0x800)
@@ -382,7 +381,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bestleaw, bestleag )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(bestleaw)
+ MCFG_SCREEN_UPDATE_STATIC(bestleaw)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index f406fdc283d..e5070d81f8e 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -339,7 +339,7 @@ static VIDEO_START( bfcobra )
}
}
-static SCREEN_UPDATE( bfcobra )
+static SCREEN_UPDATE_RGB32( bfcobra )
{
bfcobra_state *state = screen.machine().driver_data<bfcobra_state>();
int x, y;
@@ -1785,10 +1785,9 @@ static MACHINE_CONFIG_START( bfcobra, bfcobra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 256 - 1)
- MCFG_SCREEN_UPDATE(bfcobra)
+ MCFG_SCREEN_UPDATE_STATIC(bfcobra)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/bfm_sc1.c b/src/mame/drivers/bfm_sc1.c
index 327879b3216..2787d28bb7a 100644
--- a/src/mame/drivers/bfm_sc1.c
+++ b/src/mame/drivers/bfm_sc1.c
@@ -1097,11 +1097,10 @@ static MACHINE_CONFIG_DERIVED( scorpion1_adder2, scorpion1 )
MCFG_DEFAULT_LAYOUT(layout_bfm_sc1)
MCFG_SCREEN_ADD("adder", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE( 400, 300)
MCFG_SCREEN_VISIBLE_AREA( 0, 400-1, 0, 300-1)
- MCFG_SCREEN_UPDATE(adder2)
+ MCFG_SCREEN_UPDATE_STATIC(adder2)
MCFG_VIDEO_START( adder2)
MCFG_VIDEO_RESET( adder2)
diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c
index 6b27d7c3489..b4278cd47be 100644
--- a/src/mame/drivers/bfm_sc2.c
+++ b/src/mame/drivers/bfm_sc2.c
@@ -1401,7 +1401,7 @@ static MACHINE_RESET( init )
BFM_BD1_init(1);
}
-static SCREEN_UPDATE( addersc2 )
+static SCREEN_UPDATE_IND16( addersc2 )
{
bfm_sc2_state *state = screen.machine().driver_data<bfm_sc2_state>();
if ( state->m_sc2_show_door )
@@ -1409,7 +1409,7 @@ static SCREEN_UPDATE( addersc2 )
output_set_value("door",( Scorpion2_GetSwitchState(screen.machine(),state->m_sc2_door_state>>4, state->m_sc2_door_state & 0x0F) ) );
}
- return SCREEN_UPDATE_CALL(adder2);
+ return SCREEN_UPDATE16_CALL(adder2);
}
@@ -2146,11 +2146,10 @@ static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state )
MCFG_DEFAULT_LAYOUT(layout_bfm_sc2)
MCFG_SCREEN_ADD("adder", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 400, 280)
MCFG_SCREEN_VISIBLE_AREA( 0, 400-1, 0, 280-1)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_UPDATE(addersc2)
+ MCFG_SCREEN_UPDATE_STATIC(addersc2)
MCFG_VIDEO_START( adder2)
MCFG_VIDEO_RESET( adder2)
diff --git a/src/mame/drivers/bfm_swp.c b/src/mame/drivers/bfm_swp.c
index 655ff1c35c2..6576568e839 100644
--- a/src/mame/drivers/bfm_swp.c
+++ b/src/mame/drivers/bfm_swp.c
@@ -129,6 +129,11 @@ class bfm_swp_state : public driver_device
public:
bfm_swp_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+ {
+ return 0;
+ }
};
@@ -152,7 +157,7 @@ static MACHINE_CONFIG_START( bfm_swp, bfm_swp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(bfm_swp_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
diff --git a/src/mame/drivers/big10.c b/src/mame/drivers/big10.c
index 417ca4e5182..07eb4ed0b10 100644
--- a/src/mame/drivers/big10.c
+++ b/src/mame/drivers/big10.c
@@ -67,8 +67,10 @@ class big10_state : public driver_device
{
public:
big10_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938") { }
+ required_device<v9938_device> m_v9938;
UINT8 m_mux_data;
};
@@ -80,21 +82,15 @@ public:
* Interrupt handling & Video *
***************************************/
-static void big10_vdp_interrupt(running_machine &machine, int i)
+static void big10_vdp_interrupt(device_t *, v99x8_device &device, int i)
{
- cputag_set_input_line (machine, "maincpu", 0, (i ? ASSERT_LINE : CLEAR_LINE));
+ cputag_set_input_line (device.machine(), "maincpu", 0, (i ? ASSERT_LINE : CLEAR_LINE));
}
static TIMER_DEVICE_CALLBACK( big10_interrupt )
{
- v9938_interrupt(timer.machine(), 0);
-}
-
-
-static VIDEO_START( big10 )
-{
- v9938_init (machine, 0, *machine.primary_screen, machine.primary_screen->default_bitmap(), MODEL_V9938, VDP_MEM, big10_vdp_interrupt);
- v9938_reset(0);
+ big10_state *state = timer.machine().driver_data<big10_state>();
+ state->m_v9938->interrupt();
}
@@ -104,7 +100,6 @@ static VIDEO_START( big10 )
static MACHINE_RESET(big10)
{
- v9938_reset(0);
}
@@ -147,10 +142,7 @@ static ADDRESS_MAP_START( main_io, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(mux_r) /* present in test mode */
AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") /* coins and service */
- AM_RANGE(0x98, 0x98) AM_WRITE(v9938_0_vram_w) AM_READ(v9938_0_vram_r)
- AM_RANGE(0x99, 0x99) AM_WRITE(v9938_0_command_w) AM_READ(v9938_0_status_r)
- AM_RANGE(0x9a, 0x9a) AM_WRITE(v9938_0_palette_w)
- AM_RANGE(0x9b, 0x9b) AM_WRITE(v9938_0_register_w)
+ AM_RANGE(0x98, 0x9b) AM_DEVREADWRITE_MODERN("v9938", v9938_device, read, write)
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_r) /* Dip-Switches routes here. */
ADDRESS_MAP_END
@@ -261,16 +253,18 @@ static MACHINE_CONFIG_START( big10, big10_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
+ MCFG_V9938_ADD("v9938", "screen", VDP_MEM)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(big10_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(512 + 32, (212 + 28) * 2)
MCFG_SCREEN_VISIBLE_AREA(0, 512 + 32 - 1, 0, (212 + 28) * 2 - 1)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(v9938)
- MCFG_VIDEO_START(big10)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bigevglf.c b/src/mame/drivers/bigevglf.c
index d016b6b1b39..2fd6435bc49 100644
--- a/src/mame/drivers/bigevglf.c
+++ b/src/mame/drivers/bigevglf.c
@@ -533,10 +533,9 @@ static MACHINE_CONFIG_START( bigevglf, bigevglf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bigevglf)
+ MCFG_SCREEN_UPDATE_STATIC(bigevglf)
MCFG_GFXDECODE(bigevglf)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/bigstrkb.c b/src/mame/drivers/bigstrkb.c
index 546aaa2dbf5..4f429fba5b1 100644
--- a/src/mame/drivers/bigstrkb.c
+++ b/src/mame/drivers/bigstrkb.c
@@ -205,10 +205,9 @@ static MACHINE_CONFIG_START( bigstrkb, bigstrkb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bigstrkb)
+ MCFG_SCREEN_UPDATE_STATIC(bigstrkb)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/bingoc.c b/src/mame/drivers/bingoc.c
index f4fd15e960a..00493a74bfa 100644
--- a/src/mame/drivers/bingoc.c
+++ b/src/mame/drivers/bingoc.c
@@ -51,7 +51,7 @@ static VIDEO_START(bingoc)
}
-static SCREEN_UPDATE(bingoc)
+static SCREEN_UPDATE_IND16(bingoc)
{
return 0;
}
@@ -153,10 +153,9 @@ static MACHINE_CONFIG_START( bingoc, bingoc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(bingoc)
+ MCFG_SCREEN_UPDATE_STATIC(bingoc)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c
index 8f07b20ddb6..65b31428abc 100644
--- a/src/mame/drivers/bingor.c
+++ b/src/mame/drivers/bingor.c
@@ -457,7 +457,7 @@ static VIDEO_START(bingor)
{
}
-static SCREEN_UPDATE(bingor)
+static SCREEN_UPDATE_RGB32(bingor)
{
bingor_state *state = screen.machine().driver_data<bingor_state>();
int x,y,count;
@@ -629,10 +629,9 @@ static MACHINE_CONFIG_START( bingor, bingor_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
- MCFG_SCREEN_UPDATE(bingor)
+ MCFG_SCREEN_UPDATE_STATIC(bingor)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index bd6addc94af..4760cb256a6 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -380,10 +380,9 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bionicc)
+ MCFG_SCREEN_UPDATE_STATIC(bionicc)
MCFG_SCREEN_EOF(bionicc)
MCFG_GFXDECODE(bionicc)
diff --git a/src/mame/drivers/bishi.c b/src/mame/drivers/bishi.c
index 8bfed66116a..8d0952bb7a4 100644
--- a/src/mame/drivers/bishi.c
+++ b/src/mame/drivers/bishi.c
@@ -428,10 +428,9 @@ static MACHINE_CONFIG_START( bishi, bishi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(29, 29+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(bishi)
+ MCFG_SCREEN_UPDATE_STATIC(bishi)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/bking.c b/src/mame/drivers/bking.c
index 977de2e16a2..3534eab36c6 100644
--- a/src/mame/drivers/bking.c
+++ b/src/mame/drivers/bking.c
@@ -501,10 +501,9 @@ static MACHINE_CONFIG_START( bking, bking_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bking)
+ MCFG_SCREEN_UPDATE_STATIC(bking)
MCFG_SCREEN_EOF(bking)
MCFG_GFXDECODE(bking)
diff --git a/src/mame/drivers/blackt96.c b/src/mame/drivers/blackt96.c
index 4ac568eab54..66b2fb232b2 100644
--- a/src/mame/drivers/blackt96.c
+++ b/src/mame/drivers/blackt96.c
@@ -68,7 +68,7 @@ static VIDEO_START( blackt96 )
{
}
-static void draw_strip(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int stripnum, int xbase, int ybase, int bg)
+static void draw_strip(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int stripnum, int xbase, int ybase, int bg)
{
blackt96_state *state = machine.driver_data<blackt96_state>();
const gfx_element *gfxspr = machine.gfx[1];
@@ -98,7 +98,7 @@ static void draw_strip(running_machine &machine, bitmap_t &bitmap, const rectang
}
-static void draw_main(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bg)
+static void draw_main(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bg)
{
blackt96_state *state = machine.driver_data<blackt96_state>();
@@ -128,7 +128,7 @@ static void draw_main(running_machine &machine, bitmap_t &bitmap, const rectangl
}
-static SCREEN_UPDATE( blackt96 )
+static SCREEN_UPDATE_IND16( blackt96 )
{
blackt96_state *state = screen.machine().driver_data<blackt96_state>();
int count;
@@ -495,11 +495,10 @@ static MACHINE_CONFIG_START( blackt96, blackt96_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(blackt96)
+ MCFG_SCREEN_UPDATE_STATIC(blackt96)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/bladestl.c b/src/mame/drivers/bladestl.c
index 10336a4f03c..070ea79f25f 100644
--- a/src/mame/drivers/bladestl.c
+++ b/src/mame/drivers/bladestl.c
@@ -349,10 +349,9 @@ static MACHINE_CONFIG_START( bladestl, bladestl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bladestl)
+ MCFG_SCREEN_UPDATE_STATIC(bladestl)
MCFG_GFXDECODE(bladestl)
MCFG_PALETTE_INIT(bladestl)
diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c
index 580e871c9f6..0ad60ef8be6 100644
--- a/src/mame/drivers/blitz.c
+++ b/src/mame/drivers/blitz.c
@@ -352,7 +352,7 @@ static VIDEO_START( megadpkr )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( megadpkr )
+static SCREEN_UPDATE_IND16( megadpkr )
{
blitz_state *state = screen.machine().driver_data<blitz_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -802,10 +802,9 @@ static MACHINE_CONFIG_START( megadpkr, blitz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(megadpkr)
+ MCFG_SCREEN_UPDATE_STATIC(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 ec88865289b..fc73b1d2a3a 100644
--- a/src/mame/drivers/blitz68k.c
+++ b/src/mame/drivers/blitz68k.c
@@ -90,7 +90,7 @@ static VIDEO_START(blitz68k_addr_factor1)
blit.addr_factor = 1;
}
-static SCREEN_UPDATE(blitz68k)
+static SCREEN_UPDATE_RGB32(blitz68k)
{
blitz68k_state *state = screen.machine().driver_data<blitz68k_state>();
int x,y;
@@ -111,7 +111,7 @@ static SCREEN_UPDATE(blitz68k)
// Blitter-less board (SPI-68K)
-static SCREEN_UPDATE(blitz68k_noblit)
+static SCREEN_UPDATE_RGB32(blitz68k_noblit)
{
blitz68k_state *state = screen.machine().driver_data<blitz68k_state>();
int x,y;
@@ -1613,10 +1613,9 @@ static MACHINE_CONFIG_START( ilpag, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -1689,10 +1688,9 @@ static MACHINE_CONFIG_START( cjffruit, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-8-1)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", R6545_1, XTAL_22_1184MHz/8, mc6845_intf_irq1)
@@ -1722,10 +1720,9 @@ static MACHINE_CONFIG_START( bankrob, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq3)
@@ -1753,10 +1750,9 @@ static MACHINE_CONFIG_START( bankroba, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+7, 256-1)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq5)
@@ -1783,10 +1779,9 @@ static MACHINE_CONFIG_START( deucesw2, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", R6545_1, XTAL_22_1184MHz/8, mc6845_intf_irq3)
@@ -1815,10 +1810,9 @@ static MACHINE_CONFIG_START( dualgame, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_11_0592MHz/4, mc6845_intf_irq3)
@@ -1845,10 +1839,9 @@ static MACHINE_CONFIG_START( hermit, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4)
- MCFG_SCREEN_UPDATE(blitz68k)
+ MCFG_SCREEN_UPDATE_STATIC(blitz68k)
MCFG_MC6845_ADD("crtc", H46505, XTAL_22_1184MHz/8, mc6845_intf_irq1)
@@ -1880,10 +1873,9 @@ static MACHINE_CONFIG_START( maxidbl, blitz68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(blitz68k_noblit)
+ MCFG_SCREEN_UPDATE_STATIC(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 fd1dfb6978a..6b55fd0463b 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -342,10 +342,9 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(blktiger)
+ MCFG_SCREEN_UPDATE_STATIC(blktiger)
MCFG_SCREEN_EOF(blktiger)
MCFG_GFXDECODE(blktiger)
diff --git a/src/mame/drivers/blmbycar.c b/src/mame/drivers/blmbycar.c
index 430485bf263..f08ae0e2118 100644
--- a/src/mame/drivers/blmbycar.c
+++ b/src/mame/drivers/blmbycar.c
@@ -370,10 +370,9 @@ static MACHINE_CONFIG_START( blmbycar, blmbycar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0x100-1)
- MCFG_SCREEN_UPDATE(blmbycar)
+ MCFG_SCREEN_UPDATE_STATIC(blmbycar)
MCFG_GFXDECODE(blmbycar)
MCFG_PALETTE_LENGTH(0x300)
@@ -417,10 +416,9 @@ static MACHINE_CONFIG_START( watrball, blmbycar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 16, 0x100-1)
- MCFG_SCREEN_UPDATE(blmbycar)
+ MCFG_SCREEN_UPDATE_STATIC(blmbycar)
MCFG_GFXDECODE(blmbycar)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/blockade.c b/src/mame/drivers/blockade.c
index 59beac41c94..23859978bbf 100644
--- a/src/mame/drivers/blockade.c
+++ b/src/mame/drivers/blockade.c
@@ -485,10 +485,9 @@ static MACHINE_CONFIG_START( blockade, blockade_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(blockade)
+ MCFG_SCREEN_UPDATE_STATIC(blockade)
MCFG_GFXDECODE(blockade)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/blockhl.c b/src/mame/drivers/blockhl.c
index b328ca335ac..9066cd45104 100644
--- a/src/mame/drivers/blockhl.c
+++ b/src/mame/drivers/blockhl.c
@@ -236,10 +236,9 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(blockhl)
+ MCFG_SCREEN_UPDATE_STATIC(blockhl)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/blockout.c b/src/mame/drivers/blockout.c
index bdef2f55408..9813b348b38 100644
--- a/src/mame/drivers/blockout.c
+++ b/src/mame/drivers/blockout.c
@@ -307,10 +307,9 @@ static MACHINE_CONFIG_START( blockout, blockout_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
- MCFG_SCREEN_UPDATE(blockout)
+ MCFG_SCREEN_UPDATE_STATIC(blockout)
MCFG_PALETTE_LENGTH(513)
diff --git a/src/mame/drivers/bloodbro.c b/src/mame/drivers/bloodbro.c
index 2219b1b4418..8c303e7bb0c 100644
--- a/src/mame/drivers/bloodbro.c
+++ b/src/mame/drivers/bloodbro.c
@@ -435,10 +435,9 @@ static MACHINE_CONFIG_START( bloodbro, bloodbro_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.39) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bloodbro)
+ MCFG_SCREEN_UPDATE_STATIC(bloodbro)
MCFG_GFXDECODE(bloodbro)
MCFG_PALETTE_LENGTH(2048)
@@ -459,7 +458,7 @@ static MACHINE_CONFIG_DERIVED( weststry, bloodbro )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(weststry)
+ MCFG_SCREEN_UPDATE_STATIC(weststry)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( skysmash, bloodbro )
@@ -468,7 +467,7 @@ static MACHINE_CONFIG_DERIVED( skysmash, bloodbro )
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(skysmash)
+ MCFG_SCREEN_UPDATE_STATIC(skysmash)
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mame/drivers/blstroid.c b/src/mame/drivers/blstroid.c
index 61de155aa0e..6895c6f21ed 100644
--- a/src/mame/drivers/blstroid.c
+++ b/src/mame/drivers/blstroid.c
@@ -218,11 +218,10 @@ static MACHINE_CONFIG_START( blstroid, blstroid_state )
MCFG_PALETTE_LENGTH(512)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(blstroid)
+ MCFG_SCREEN_UPDATE_STATIC(blstroid)
MCFG_VIDEO_START(blstroid)
diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c
index 5e1d09b8fe3..41a6744514c 100644
--- a/src/mame/drivers/blueprnt.c
+++ b/src/mame/drivers/blueprnt.c
@@ -315,10 +315,9 @@ static MACHINE_CONFIG_START( blueprnt, blueprnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(blueprnt)
+ MCFG_SCREEN_UPDATE_STATIC(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 34cd8bd94cb..b48a599a216 100644
--- a/src/mame/drivers/bmcbowl.c
+++ b/src/mame/drivers/bmcbowl.c
@@ -131,7 +131,7 @@ static VIDEO_START( bmcbowl )
{
}
-static SCREEN_UPDATE( bmcbowl )
+static SCREEN_UPDATE_IND16( bmcbowl )
{
bmcbowl_state *state = screen.machine().driver_data<bmcbowl_state>();
/*
@@ -495,10 +495,9 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(35*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 0*8, 29*8-1)
- MCFG_SCREEN_UPDATE(bmcbowl)
+ MCFG_SCREEN_UPDATE_STATIC(bmcbowl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c
index b270eed2fe1..4b636134038 100644
--- a/src/mame/drivers/bnstars.c
+++ b/src/mame/drivers/bnstars.c
@@ -200,7 +200,7 @@ static WRITE32_HANDLER( ms32_bg1_ram_w )
/* ROZ Layers */
-static void draw_roz(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority, int chip)
+static void draw_roz(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int chip)
{
bnstars_state *state = machine.driver_data<bnstars_state>();
/* TODO: registers 0x40/4 / 0x44/4 and 0x50/4 / 0x54/4 are used, meaning unknown */
@@ -351,7 +351,7 @@ static WRITE32_HANDLER( ms32_pal1_ram_w )
/* SPRITES based on tetrisp2 for now, readd priority bits later */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region)
{
bnstars_state *state = machine.driver_data<bnstars_state>();
/***************************************************************************
@@ -511,7 +511,7 @@ static VIDEO_START(bnstars)
-static SCREEN_UPDATE(bnstars_left)
+static SCREEN_UPDATE_IND16(bnstars_left)
{
bnstars_state *state = screen.machine().driver_data<bnstars_state>();
@@ -536,7 +536,7 @@ static SCREEN_UPDATE(bnstars_left)
return 0;
}
-static SCREEN_UPDATE(bnstars_right)
+static SCREEN_UPDATE_IND16(bnstars_right)
{
bnstars_state *state = screen.machine().driver_data<bnstars_state>();
@@ -1376,20 +1376,18 @@ static MACHINE_CONFIG_START( bnstars, bnstars_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(bnstars_left)
+ MCFG_SCREEN_UPDATE_STATIC(bnstars_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(bnstars_right)
+ MCFG_SCREEN_UPDATE_STATIC(bnstars_right)
MCFG_VIDEO_START(bnstars)
diff --git a/src/mame/drivers/bogeyman.c b/src/mame/drivers/bogeyman.c
index 91a9ff4b7d5..3f7e31dff1b 100644
--- a/src/mame/drivers/bogeyman.c
+++ b/src/mame/drivers/bogeyman.c
@@ -257,10 +257,9 @@ static MACHINE_CONFIG_START( bogeyman, bogeyman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(bogeyman)
+ MCFG_SCREEN_UPDATE_STATIC(bogeyman)
MCFG_GFXDECODE(bogeyman)
MCFG_PALETTE_LENGTH(16+256)
diff --git a/src/mame/drivers/bombjack.c b/src/mame/drivers/bombjack.c
index a7f98eb1b6b..b11d475985b 100644
--- a/src/mame/drivers/bombjack.c
+++ b/src/mame/drivers/bombjack.c
@@ -378,10 +378,9 @@ static MACHINE_CONFIG_START( bombjack, bombjack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bombjack)
+ MCFG_SCREEN_UPDATE_STATIC(bombjack)
MCFG_GFXDECODE(bombjack)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c
index f6d39a6b711..2736624b2df 100644
--- a/src/mame/drivers/boogwing.c
+++ b/src/mame/drivers/boogwing.c
@@ -354,10 +354,9 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(boogwing)
+ MCFG_SCREEN_UPDATE_STATIC(boogwing)
MCFG_PALETTE_LENGTH(2048)
MCFG_GFXDECODE(boogwing)
diff --git a/src/mame/drivers/bottom9.c b/src/mame/drivers/bottom9.c
index 6e47450cf85..dfcdbd14cff 100644
--- a/src/mame/drivers/bottom9.c
+++ b/src/mame/drivers/bottom9.c
@@ -380,10 +380,9 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(bottom9)
+ MCFG_SCREEN_UPDATE_STATIC(bottom9)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c
index 01339bc1983..3ff470f1ffb 100644
--- a/src/mame/drivers/boxer.c
+++ b/src/mame/drivers/boxer.c
@@ -109,7 +109,7 @@ static PALETTE_INIT( boxer )
palette_set_color(machine,3, MAKE_RGB(0x00,0x00,0x00));
}
-static void draw_boxer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_boxer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
boxer_state *state = machine.driver_data<boxer_state>();
int n;
@@ -157,7 +157,7 @@ static void draw_boxer( running_machine &machine, bitmap_t &bitmap, const rectan
}
-static SCREEN_UPDATE( boxer )
+static SCREEN_UPDATE_IND16( boxer )
{
boxer_state *state = screen.machine().driver_data<boxer_state>();
int i, j;
@@ -447,10 +447,9 @@ static MACHINE_CONFIG_START( boxer, boxer_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(8, 247, 0, 239)
- MCFG_SCREEN_UPDATE(boxer)
+ MCFG_SCREEN_UPDATE_STATIC(boxer)
MCFG_GFXDECODE(boxer)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/brkthru.c b/src/mame/drivers/brkthru.c
index 5430abf1116..53f6d0f12df 100644
--- a/src/mame/drivers/brkthru.c
+++ b/src/mame/drivers/brkthru.c
@@ -423,8 +423,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(brkthru)
+ MCFG_SCREEN_UPDATE_STATIC(brkthru)
MCFG_PALETTE_INIT(brkthru)
MCFG_VIDEO_START(brkthru)
@@ -475,8 +474,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(brkthru)
+ MCFG_SCREEN_UPDATE_STATIC(brkthru)
MCFG_PALETTE_INIT(brkthru)
MCFG_VIDEO_START(brkthru)
diff --git a/src/mame/drivers/bsktball.c b/src/mame/drivers/bsktball.c
index f67326c3b17..6fd207218eb 100644
--- a/src/mame/drivers/bsktball.c
+++ b/src/mame/drivers/bsktball.c
@@ -260,10 +260,9 @@ static MACHINE_CONFIG_START( bsktball, bsktball_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(bsktball)
+ MCFG_SCREEN_UPDATE_STATIC(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 4c4dcfb121c..f0708e42b99 100644
--- a/src/mame/drivers/btime.c
+++ b/src/mame/drivers/btime.c
@@ -1499,9 +1499,8 @@ static MACHINE_CONFIG_START( btime, btime_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE(btime)
+ MCFG_SCREEN_UPDATE_STATIC(btime)
MCFG_MACHINE_START(btime)
MCFG_MACHINE_RESET(btime)
@@ -1547,7 +1546,7 @@ static MACHINE_CONFIG_DERIVED( cookrace, btime )
MCFG_PALETTE_LENGTH(16)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(cookrace)
+ MCFG_SCREEN_UPDATE_STATIC(cookrace)
MACHINE_CONFIG_END
@@ -1565,7 +1564,7 @@ static MACHINE_CONFIG_DERIVED( lnc, btime )
MCFG_PALETTE_INIT(lnc)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(lnc)
+ MCFG_SCREEN_UPDATE_STATIC(lnc)
MACHINE_CONFIG_END
@@ -1575,7 +1574,7 @@ static MACHINE_CONFIG_DERIVED( wtennis, lnc )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(eggs)
+ MCFG_SCREEN_UPDATE_STATIC(eggs)
MACHINE_CONFIG_END
@@ -1602,7 +1601,7 @@ static MACHINE_CONFIG_DERIVED( sdtennis, btime )
MCFG_VIDEO_START(bnj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(bnj)
+ MCFG_SCREEN_UPDATE_STATIC(bnj)
MACHINE_CONFIG_END
@@ -1630,7 +1629,7 @@ static MACHINE_CONFIG_DERIVED( zoar, btime )
MCFG_PALETTE_LENGTH(64)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(zoar)
+ MCFG_SCREEN_UPDATE_STATIC(zoar)
MCFG_SOUND_REPLACE("ay1", AY8910, HCLK1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.23)
@@ -1656,7 +1655,7 @@ static MACHINE_CONFIG_DERIVED( disco, btime )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(disco)
+ MCFG_SCREEN_UPDATE_STATIC(disco)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/btoads.c b/src/mame/drivers/btoads.c
index 958072d1477..856bd222e8c 100644
--- a/src/mame/drivers/btoads.c
+++ b/src/mame/drivers/btoads.c
@@ -304,7 +304,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
VIDEO_CLOCK/2, /* pixel clock */
1, /* pixels per clock */
- btoads_state::static_scanline_update, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ btoads_state::static_scanline_update, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
btoads_state::static_to_shiftreg, /* write to shiftreg function */
btoads_state::static_from_shiftreg /* read from shiftreg function */
@@ -335,9 +336,8 @@ static MACHINE_CONFIG_START( btoads, btoads_state )
MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/bublbobl.c b/src/mame/drivers/bublbobl.c
index 1b4c915c760..6a1b9c5a7b8 100644
--- a/src/mame/drivers/bublbobl.c
+++ b/src/mame/drivers/bublbobl.c
@@ -784,9 +784,8 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MAIN_XTAL/4, 384, 0, 256, 264, 16, 240)
- MCFG_SCREEN_UPDATE(bublbobl)
+ MCFG_SCREEN_UPDATE_STATIC(bublbobl)
MCFG_GFXDECODE(bublbobl)
MCFG_PALETTE_LENGTH(256)
@@ -868,9 +867,8 @@ static MACHINE_CONFIG_START( bublbobl, bublbobl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MAIN_XTAL/4, 384, 0, 256, 264, 16, 240)
- MCFG_SCREEN_UPDATE(bublbobl)
+ MCFG_SCREEN_UPDATE_STATIC(bublbobl)
MCFG_GFXDECODE(bublbobl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/buggychl.c b/src/mame/drivers/buggychl.c
index 6c9f090890c..1b9364813c4 100644
--- a/src/mame/drivers/buggychl.c
+++ b/src/mame/drivers/buggychl.c
@@ -415,10 +415,9 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(buggychl)
+ MCFG_SCREEN_UPDATE_STATIC(buggychl)
MCFG_GFXDECODE(buggychl)
MCFG_PALETTE_LENGTH(128+128)
diff --git a/src/mame/drivers/buster.c b/src/mame/drivers/buster.c
index d6b461fe3bc..f32813b0892 100644
--- a/src/mame/drivers/buster.c
+++ b/src/mame/drivers/buster.c
@@ -26,7 +26,7 @@ static VIDEO_START(buster)
{
}
-static SCREEN_UPDATE(buster)
+static SCREEN_UPDATE_IND16(buster)
{
buster_state *state = screen.machine().driver_data<buster_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -335,10 +335,9 @@ static MACHINE_CONFIG_START( buster, buster_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(buster)
+ MCFG_SCREEN_UPDATE_STATIC(buster)
MCFG_MC6845_ADD("crtc", MC6845, XTAL_3_579545MHz/4, mc6845_intf) //unknown clock / type
MCFG_GFXDECODE(buster)
diff --git a/src/mame/drivers/bwidow.c b/src/mame/drivers/bwidow.c
index d4816a14af4..5f7dcc02dc6 100644
--- a/src/mame/drivers/bwidow.c
+++ b/src/mame/drivers/bwidow.c
@@ -734,7 +734,7 @@ static MACHINE_CONFIG_START( bwidow, bwidow_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 480, 0, 440)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg)
diff --git a/src/mame/drivers/bwing.c b/src/mame/drivers/bwing.c
index e06f5110cb5..c32c786db7c 100644
--- a/src/mame/drivers/bwing.c
+++ b/src/mame/drivers/bwing.c
@@ -396,10 +396,9 @@ static MACHINE_CONFIG_START( bwing, bwing_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600)) // must be long enough for polling
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(bwing)
+ MCFG_SCREEN_UPDATE_STATIC(bwing)
MCFG_GFXDECODE(bwing)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/bzone.c b/src/mame/drivers/bzone.c
index 7efa6486d07..d1ff5928338 100644
--- a/src/mame/drivers/bzone.c
+++ b/src/mame/drivers/bzone.c
@@ -561,7 +561,7 @@ static MACHINE_CONFIG_START( bzone_base, bzone_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 580, 0, 400)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_bzone)
diff --git a/src/mame/drivers/cabal.c b/src/mame/drivers/cabal.c
index 92053f00dd7..9d4c5ac5284 100644
--- a/src/mame/drivers/cabal.c
+++ b/src/mame/drivers/cabal.c
@@ -500,10 +500,9 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.60) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cabal)
+ MCFG_SCREEN_UPDATE_STATIC(cabal)
MCFG_GFXDECODE(cabal)
MCFG_PALETTE_LENGTH(1024)
@@ -557,10 +556,9 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cabal)
+ MCFG_SCREEN_UPDATE_STATIC(cabal)
MCFG_GFXDECODE(cabal)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cabaret.c b/src/mame/drivers/cabaret.c
index b3f29f48b18..7d49e47f54c 100644
--- a/src/mame/drivers/cabaret.c
+++ b/src/mame/drivers/cabaret.c
@@ -104,7 +104,7 @@ static VIDEO_START(cabaret)
}
-static SCREEN_UPDATE(cabaret)
+static SCREEN_UPDATE_IND16(cabaret)
{
cabaret_state *state = screen.machine().driver_data<cabaret_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -338,10 +338,9 @@ static MACHINE_CONFIG_START( cabaret, cabaret_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(cabaret)
+ MCFG_SCREEN_UPDATE_STATIC(cabaret)
MCFG_GFXDECODE(cabaret)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index 609471848e8..b5e8e2e9e38 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -2753,10 +2753,9 @@ static MACHINE_CONFIG_START( sys903, calomega_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(calomega)
+ MCFG_SCREEN_UPDATE_STATIC(calomega)
MCFG_GFXDECODE(calomega)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/calorie.c b/src/mame/drivers/calorie.c
index c1c6bf83edf..9d551d0d0b5 100644
--- a/src/mame/drivers/calorie.c
+++ b/src/mame/drivers/calorie.c
@@ -139,7 +139,7 @@ static VIDEO_START( calorie )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static SCREEN_UPDATE( calorie )
+static SCREEN_UPDATE_IND16( calorie )
{
calorie_state *state = screen.machine().driver_data<calorie_state>();
int x;
@@ -449,10 +449,9 @@ static MACHINE_CONFIG_START( calorie, calorie_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(calorie)
+ MCFG_SCREEN_UPDATE_STATIC(calorie)
MCFG_GFXDECODE(calorie)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/canyon.c b/src/mame/drivers/canyon.c
index 02390c8a496..ead69949f9a 100644
--- a/src/mame/drivers/canyon.c
+++ b/src/mame/drivers/canyon.c
@@ -246,10 +246,9 @@ static MACHINE_CONFIG_START( canyon, canyon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(canyon)
+ MCFG_SCREEN_UPDATE_STATIC(canyon)
MCFG_GFXDECODE(canyon)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/capbowl.c b/src/mame/drivers/capbowl.c
index 7f319aef56e..5884e08c7c5 100644
--- a/src/mame/drivers/capbowl.c
+++ b/src/mame/drivers/capbowl.c
@@ -382,11 +382,10 @@ static MACHINE_CONFIG_START( capbowl, capbowl_state )
MCFG_VIDEO_START(capbowl)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(360, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 359, 0, 244)
MCFG_SCREEN_REFRESH_RATE(57)
- MCFG_SCREEN_UPDATE(capbowl)
+ MCFG_SCREEN_UPDATE_STATIC(capbowl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c
index 5fe85c60866..627611187bb 100644
--- a/src/mame/drivers/cardline.c
+++ b/src/mame/drivers/cardline.c
@@ -44,7 +44,7 @@ public:
x<<3, y<<3,\
transparency?transparency:(UINT32)-1);
-static SCREEN_UPDATE( cardline )
+static SCREEN_UPDATE_IND16( cardline )
{
cardline_state *state = screen.machine().driver_data<cardline_state>();
int x,y;
@@ -219,10 +219,9 @@ static MACHINE_CONFIG_START( cardline, cardline_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 35*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(cardline)
+ MCFG_SCREEN_UPDATE_STATIC(cardline)
MCFG_GFXDECODE(cardline)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/carjmbre.c b/src/mame/drivers/carjmbre.c
index 5c3535db625..e75ddc16762 100644
--- a/src/mame/drivers/carjmbre.c
+++ b/src/mame/drivers/carjmbre.c
@@ -218,10 +218,9 @@ static MACHINE_CONFIG_START( carjmbre, carjmbre_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(carjmbre)
+ MCFG_SCREEN_UPDATE_STATIC(carjmbre)
MCFG_GFXDECODE(carjmbre)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/carpolo.c b/src/mame/drivers/carpolo.c
index eca7edf15d5..0c82ad08e7b 100644
--- a/src/mame/drivers/carpolo.c
+++ b/src/mame/drivers/carpolo.c
@@ -264,10 +264,9 @@ static MACHINE_CONFIG_START( carpolo, carpolo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 255)
- MCFG_SCREEN_UPDATE(carpolo)
+ MCFG_SCREEN_UPDATE_STATIC(carpolo)
MCFG_SCREEN_EOF(carpolo)
MCFG_GFXDECODE(carpolo)
diff --git a/src/mame/drivers/carrera.c b/src/mame/drivers/carrera.c
index a4a56c2fea0..7e61213ff65 100644
--- a/src/mame/drivers/carrera.c
+++ b/src/mame/drivers/carrera.c
@@ -244,7 +244,7 @@ static GFXDECODE_START( carrera )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
GFXDECODE_END
-static SCREEN_UPDATE(carrera)
+static SCREEN_UPDATE_IND16(carrera)
{
carrera_state *state = screen.machine().driver_data<carrera_state>();
@@ -332,10 +332,9 @@ static MACHINE_CONFIG_START( carrera, carrera_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(carrera)
+ MCFG_SCREEN_UPDATE_STATIC(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 158b646de96..b7e66c5c30c 100644
--- a/src/mame/drivers/caswin.c
+++ b/src/mame/drivers/caswin.c
@@ -79,7 +79,7 @@ static VIDEO_START(vvillage)
state->m_sc0_tilemap = tilemap_create(machine, get_sc0_tile_info,tilemap_scan_rows,8,8,32,32);
}
-static SCREEN_UPDATE(vvillage)
+static SCREEN_UPDATE_IND16(vvillage)
{
caswin_state *state = screen.machine().driver_data<caswin_state>();
tilemap_draw(bitmap,cliprect,state->m_sc0_tilemap,0,0);
@@ -302,10 +302,9 @@ static MACHINE_CONFIG_START( vvillage, caswin_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(vvillage)
+ MCFG_SCREEN_UPDATE_STATIC(vvillage)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index df752373e57..b6fb75f21d6 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -1867,10 +1867,9 @@ static MACHINE_CONFIG_START( dfeveron, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(dfeveron)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -1910,10 +1909,9 @@ static MACHINE_CONFIG_START( ddonpach, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(ddonpach)
MCFG_PALETTE_LENGTH(0x8000 + 0x40*16) // $400 extra entries for layers 1&2
@@ -1957,10 +1955,9 @@ static MACHINE_CONFIG_START( donpachi, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(donpachi)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2004,10 +2001,9 @@ static MACHINE_CONFIG_START( esprade, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2045,10 +2041,9 @@ static MACHINE_CONFIG_START( gaia, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2087,10 +2082,9 @@ static MACHINE_CONFIG_START( guwange, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(esprade)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2132,10 +2126,9 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(hotdogst)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2185,10 +2178,9 @@ static MACHINE_CONFIG_START( korokoro, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1-2, 0, 240-1-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(korokoro)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2240,10 +2232,9 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(mazinger)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2299,10 +2290,9 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x7d, 0x7d + 0x180-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(donpachi)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2355,10 +2345,9 @@ static MACHINE_CONFIG_START( pacslot, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(tjumpman)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2412,10 +2401,9 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x70, 0x70 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(pwrinst2)
MCFG_PALETTE_LENGTH(0x8000+0x2800)
@@ -2476,10 +2464,9 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320+1, 240)
MCFG_SCREEN_VISIBLE_AREA(0+1, 320+1-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(sailormn)
MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
@@ -2531,10 +2518,9 @@ static MACHINE_CONFIG_START( tjumpman, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 240)
MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(tjumpman)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2573,10 +2559,9 @@ static MACHINE_CONFIG_START( uopoko, cave_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(15625/271.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(cave)
+ MCFG_SCREEN_UPDATE_STATIC(cave)
MCFG_GFXDECODE(uopoko)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/cb2001.c b/src/mame/drivers/cb2001.c
index ee0669a8eac..dbda91d7aec 100644
--- a/src/mame/drivers/cb2001.c
+++ b/src/mame/drivers/cb2001.c
@@ -321,7 +321,7 @@ e3 -> c6
*/
-static SCREEN_UPDATE(cb2001)
+static SCREEN_UPDATE_RGB32(cb2001)
{
cb2001_state *state = screen.machine().driver_data<cb2001_state>();
int count,x,y;
@@ -844,10 +844,9 @@ static MACHINE_CONFIG_START( cb2001, cb2001_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(cb2001)
+ MCFG_SCREEN_UPDATE_STATIC(cb2001)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c
index 71cf680c644..163b2d70fbc 100644
--- a/src/mame/drivers/cball.c
+++ b/src/mame/drivers/cball.c
@@ -50,7 +50,7 @@ static VIDEO_START( cball )
}
-static SCREEN_UPDATE( cball )
+static SCREEN_UPDATE_IND16( cball )
{
cball_state *state = screen.machine().driver_data<cball_state>();
@@ -235,10 +235,9 @@ static MACHINE_CONFIG_START( cball, cball_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
- MCFG_SCREEN_UPDATE(cball)
+ MCFG_SCREEN_UPDATE_STATIC(cball)
MCFG_GFXDECODE(cball)
MCFG_PALETTE_LENGTH(6)
diff --git a/src/mame/drivers/cbasebal.c b/src/mame/drivers/cbasebal.c
index 3b7607ccd6b..80781e43bb5 100644
--- a/src/mame/drivers/cbasebal.c
+++ b/src/mame/drivers/cbasebal.c
@@ -295,10 +295,9 @@ static MACHINE_CONFIG_START( cbasebal, cbasebal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cbasebal)
+ MCFG_SCREEN_UPDATE_STATIC(cbasebal)
MCFG_GFXDECODE(cbasebal)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cbuster.c b/src/mame/drivers/cbuster.c
index eb571e6cdde..10a7a32caaf 100644
--- a/src/mame/drivers/cbuster.c
+++ b/src/mame/drivers/cbuster.c
@@ -342,10 +342,9 @@ static MACHINE_CONFIG_START( twocrude, cbuster_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(twocrude)
+ MCFG_SCREEN_UPDATE_STATIC(twocrude)
MCFG_VIDEO_START(twocrude)
MCFG_GFXDECODE(cbuster)
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index c0b5bd99c00..a6c8b323a44 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -496,9 +496,8 @@ static MACHINE_CONFIG_START( ccastles, ccastles_state )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, HTOTAL - 1, VTOTAL, 0, VTOTAL - 1) /* will be adjusted later */
- MCFG_SCREEN_UPDATE(ccastles)
+ MCFG_SCREEN_UPDATE_STATIC(ccastles)
MCFG_VIDEO_START(ccastles)
diff --git a/src/mame/drivers/cchance.c b/src/mame/drivers/cchance.c
index e84d015d3b6..2eb3d4b9fbe 100644
--- a/src/mame/drivers/cchance.c
+++ b/src/mame/drivers/cchance.c
@@ -231,10 +231,9 @@ static MACHINE_CONFIG_START( cchance, cchance_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/cchasm.c b/src/mame/drivers/cchasm.c
index 52c9a56bb6d..373fa37d27d 100644
--- a/src/mame/drivers/cchasm.c
+++ b/src/mame/drivers/cchasm.c
@@ -171,7 +171,7 @@ static MACHINE_CONFIG_START( cchasm, cchasm_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(cchasm)
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index 9ddaade70ec..d87dc8b16cc 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -1002,10 +1002,9 @@ static MACHINE_CONFIG_START( root, cclimber_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cclimber)
+ MCFG_SCREEN_UPDATE_STATIC(cclimber)
MCFG_GFXDECODE(cclimber)
MCFG_PALETTE_LENGTH(16*4+8*4)
@@ -1056,7 +1055,7 @@ static MACHINE_CONFIG_DERIVED( yamato, root )
MCFG_PALETTE_LENGTH(16*4+8*4+256)
MCFG_PALETTE_INIT(yamato)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(yamato)
+ MCFG_SCREEN_UPDATE_STATIC(yamato)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1082,7 +1081,7 @@ static MACHINE_CONFIG_DERIVED( toprollr, cclimber )
MCFG_VIDEO_START(toprollr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(toprollr)
+ MCFG_SCREEN_UPDATE_STATIC(toprollr)
MACHINE_CONFIG_END
@@ -1102,10 +1101,9 @@ static MACHINE_CONFIG_START( swimmer, cclimber_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(swimmer)
+ MCFG_SCREEN_UPDATE_STATIC(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 b4669d3ad72..e85890ebc2b 100644
--- a/src/mame/drivers/cd32.c
+++ b/src/mame/drivers/cd32.c
@@ -777,10 +777,9 @@ static MACHINE_CONFIG_START( cd32base, cd32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(amiga_aga)
+ MCFG_SCREEN_UPDATE_STATIC(amiga_aga)
MCFG_VIDEO_START(amiga_aga)
diff --git a/src/mame/drivers/cdi.c b/src/mame/drivers/cdi.c
index 5618ce255e8..a36ce69495d 100644
--- a/src/mame/drivers/cdi.c
+++ b/src/mame/drivers/cdi.c
@@ -332,18 +332,16 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(384, 302)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) //dynamic resolution,TODO
- MCFG_SCREEN_UPDATE(cdimono1)
+ MCFG_SCREEN_UPDATE_STATIC(cdimono1)
MCFG_SCREEN_ADD("lcd", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(192, 22)
MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
- MCFG_SCREEN_UPDATE(cdimono1_lcd)
+ MCFG_SCREEN_UPDATE_STATIC(cdimono1_lcd)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c
index 59b52ff3474..4e91d9d4d1a 100644
--- a/src/mame/drivers/centiped.c
+++ b/src/mame/drivers/centiped.c
@@ -1615,10 +1615,9 @@ static MACHINE_CONFIG_START( centiped, centiped_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(centiped)
+ MCFG_SCREEN_UPDATE_STATIC(centiped)
MCFG_GFXDECODE(centiped)
MCFG_PALETTE_LENGTH(4+4*4*4*4)
@@ -1680,7 +1679,7 @@ static MACHINE_CONFIG_DERIVED( milliped, centiped )
MCFG_VIDEO_START(milliped)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(milliped)
+ MCFG_SCREEN_UPDATE_STATIC(milliped)
/* sound hardware */
MCFG_SOUND_REPLACE("pokey", POKEY, 12096000/8)
@@ -1706,7 +1705,7 @@ static MACHINE_CONFIG_DERIVED( warlords, centiped )
MCFG_PALETTE_INIT(warlords)
MCFG_VIDEO_START(warlords)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(warlords)
+ MCFG_SCREEN_UPDATE_STATIC(warlords)
/* sound hardware */
MCFG_SOUND_REPLACE("pokey", POKEY, 12096000/8)
@@ -1721,7 +1720,7 @@ static MACHINE_CONFIG_DERIVED( mazeinv, milliped )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mazeinv_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(centiped)
+ MCFG_SCREEN_UPDATE_STATIC(centiped)
MACHINE_CONFIG_END
@@ -1737,10 +1736,9 @@ static MACHINE_CONFIG_START( bullsdrt, centiped_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bullsdrt)
+ MCFG_SCREEN_UPDATE_STATIC(bullsdrt)
MCFG_GFXDECODE(centiped)
MCFG_PALETTE_LENGTH(4+4*4*4*4)
diff --git a/src/mame/drivers/cesclass.c b/src/mame/drivers/cesclass.c
index 66823fa7c6d..396f21d8bd4 100644
--- a/src/mame/drivers/cesclass.c
+++ b/src/mame/drivers/cesclass.c
@@ -43,6 +43,8 @@ public:
UINT16 *m_vram;
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -51,7 +53,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -60,7 +61,7 @@ void cesclassic_state::video_start()
{
}
-bool cesclassic_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 cesclassic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y,xi;
@@ -253,7 +254,7 @@ static MACHINE_CONFIG_START( cesclassic, cesclassic_state )
MCFG_SCREEN_ADD("l_lcd", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(cesclassic_state, screen_update)
MCFG_SCREEN_SIZE(8*16*2, 8*8+3*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 8*16*2-1, 0*8, 8*8-1)
MCFG_DEFAULT_LAYOUT( layout_lcd )
diff --git a/src/mame/drivers/chaknpop.c b/src/mame/drivers/chaknpop.c
index fcd7f7446cb..91e30988d9b 100644
--- a/src/mame/drivers/chaknpop.c
+++ b/src/mame/drivers/chaknpop.c
@@ -386,10 +386,9 @@ static MACHINE_CONFIG_START( chaknpop, chaknpop_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1828)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(chaknpop)
+ MCFG_SCREEN_UPDATE_STATIC(chaknpop)
MCFG_GFXDECODE(chaknpop)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/cham24.c b/src/mame/drivers/cham24.c
index ee59586bf98..de775e59539 100644
--- a/src/mame/drivers/cham24.c
+++ b/src/mame/drivers/cham24.c
@@ -285,7 +285,7 @@ static VIDEO_START( cham24 )
{
}
-static SCREEN_UPDATE( cham24 )
+static SCREEN_UPDATE_IND16( cham24 )
{
/* render the ppu */
ppu2c0x_render(screen.machine().device("ppu"), bitmap, 0, 0, 0, 0);
@@ -337,10 +337,9 @@ static MACHINE_CONFIG_START( cham24, cham24_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cham24)
+ MCFG_SCREEN_UPDATE_STATIC(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 2a8f17febe4..a95d476dd78 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -622,10 +622,9 @@ static MACHINE_CONFIG_START( talbot, champbas_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(champbas)
+ MCFG_SCREEN_UPDATE_STATIC(champbas)
MCFG_SCREEN_EOF(champbas)
MCFG_GFXDECODE(talbot)
@@ -658,10 +657,9 @@ static MACHINE_CONFIG_START( champbas, champbas_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(champbas)
+ MCFG_SCREEN_UPDATE_STATIC(champbas)
MCFG_SCREEN_EOF(champbas)
MCFG_GFXDECODE(champbas)
@@ -716,10 +714,9 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.54)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(exctsccr)
+ MCFG_SCREEN_UPDATE_STATIC(exctsccr)
MCFG_SCREEN_EOF(champbas)
MCFG_GFXDECODE(exctsccr)
@@ -768,10 +765,9 @@ static MACHINE_CONFIG_START( exctsccrb, champbas_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(exctsccr)
+ MCFG_SCREEN_UPDATE_STATIC(exctsccr)
MCFG_SCREEN_EOF(champbas)
MCFG_GFXDECODE(exctsccr)
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index 9e0105a1ab5..b4144b3e0a3 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -449,7 +449,7 @@ static MACHINE_RESET( champbwl )
}
-SCREEN_UPDATE( champbwl )
+SCREEN_UPDATE_IND16( champbwl )
{
bitmap.fill(0x1f0, cliprect);
@@ -484,10 +484,9 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(champbwl)
+ MCFG_SCREEN_UPDATE_STATIC(champbwl)
MCFG_SCREEN_EOF(champbwl)
MCFG_GFXDECODE(champbwl)
@@ -507,7 +506,7 @@ MACHINE_CONFIG_END
-static SCREEN_UPDATE( doraemon )
+static SCREEN_UPDATE_IND16( doraemon )
{
bitmap.fill(0x1f0, cliprect);
@@ -546,10 +545,9 @@ static MACHINE_CONFIG_START( doraemon, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(doraemon)
+ MCFG_SCREEN_UPDATE_STATIC(doraemon)
MCFG_SCREEN_EOF(doraemon)
MCFG_GFXDECODE(champbwl)
diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c
index 75de1293e83..6f9b9e6521b 100644
--- a/src/mame/drivers/chanbara.c
+++ b/src/mame/drivers/chanbara.c
@@ -148,7 +148,7 @@ static VIDEO_START(chanbara )
tilemap_set_transparent_pen(state->m_bg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
chanbara_state *state = machine.driver_data<chanbara_state>();
int offs;
@@ -192,7 +192,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE( chanbara )
+static SCREEN_UPDATE_IND16( chanbara )
{
chanbara_state *state = screen.machine().driver_data<chanbara_state>();
@@ -396,10 +396,9 @@ static MACHINE_CONFIG_START( chanbara, chanbara_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.4122)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(chanbara)
+ MCFG_SCREEN_UPDATE_STATIC(chanbara)
MCFG_GFXDECODE(chanbara)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c
index 90cda7e3101..ba86d6f086a 100644
--- a/src/mame/drivers/changela.c
+++ b/src/mame/drivers/changela.c
@@ -534,10 +534,9 @@ static MACHINE_CONFIG_START( changela, changela_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(changela)
+ MCFG_SCREEN_UPDATE_STATIC(changela)
MCFG_PALETTE_LENGTH(0x40)
diff --git a/src/mame/drivers/cheekyms.c b/src/mame/drivers/cheekyms.c
index 520de0a76a8..911d7e43b8b 100644
--- a/src/mame/drivers/cheekyms.c
+++ b/src/mame/drivers/cheekyms.c
@@ -140,10 +140,9 @@ static MACHINE_CONFIG_START( cheekyms, cheekyms_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(cheekyms)
+ MCFG_SCREEN_UPDATE_STATIC(cheekyms)
MCFG_GFXDECODE(cheekyms)
MCFG_PALETTE_LENGTH(0xc0)
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index 97558acd231..09e98017f5a 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -1086,7 +1086,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( chihiro )
INPUT_PORTS_END
-static SCREEN_UPDATE( chihiro )
+static SCREEN_UPDATE_RGB32( chihiro )
{
return 0;
}
@@ -1135,10 +1135,9 @@ static MACHINE_CONFIG_START( chihiro_base, driver_device )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(chihiro)
+ MCFG_SCREEN_UPDATE_STATIC(chihiro)
MCFG_MACHINE_START(chihiro)
diff --git a/src/mame/drivers/chinagat.c b/src/mame/drivers/chinagat.c
index b38e729b921..1d6d137283d 100644
--- a/src/mame/drivers/chinagat.c
+++ b/src/mame/drivers/chinagat.c
@@ -588,9 +588,8 @@ static MACHINE_CONFIG_START( chinagat, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
@@ -633,9 +632,8 @@ static MACHINE_CONFIG_START( saiyugoub1, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
@@ -675,9 +673,8 @@ static MACHINE_CONFIG_START( saiyugoub2, ddragon_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_GFXDECODE(chinagat)
MCFG_PALETTE_LENGTH(384)
diff --git a/src/mame/drivers/chinsan.c b/src/mame/drivers/chinsan.c
index aaac8b5c86c..7ecbb4c96a2 100644
--- a/src/mame/drivers/chinsan.c
+++ b/src/mame/drivers/chinsan.c
@@ -84,7 +84,7 @@ static VIDEO_START( chinsan )
{
}
-static SCREEN_UPDATE( chinsan )
+static SCREEN_UPDATE_IND16( chinsan )
{
chinsan_state *state = screen.machine().driver_data<chinsan_state>();
int y, x, count;
@@ -603,12 +603,11 @@ static MACHINE_CONFIG_START( chinsan, chinsan_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
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(chinsan)
+ MCFG_SCREEN_UPDATE_STATIC(chinsan)
MCFG_GFXDECODE(chinsan)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/chqflag.c b/src/mame/drivers/chqflag.c
index 00e04890264..a4032534651 100644
--- a/src/mame/drivers/chqflag.c
+++ b/src/mame/drivers/chqflag.c
@@ -380,10 +380,9 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(chqflag)
+ MCFG_SCREEN_UPDATE_STATIC(chqflag)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/chsuper.c b/src/mame/drivers/chsuper.c
index 4a6b199f16f..e2f47ad0398 100644
--- a/src/mame/drivers/chsuper.c
+++ b/src/mame/drivers/chsuper.c
@@ -37,13 +37,14 @@ public:
required_device<z180_device> m_maincpu;
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// driver_device overrides
//virtual void machine_start();
//virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -53,7 +54,7 @@ void chsuper_state::video_start()
m_vram = auto_alloc_array_clear(machine(), UINT8, 1 << 13);
}
-bool chsuper_state::screen_update( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 chsuper_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
const gfx_element *gfx = machine().gfx[0];
int count = 0x0000;
@@ -205,7 +206,7 @@ static MACHINE_CONFIG_START( chsuper, chsuper_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(chsuper_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0, 30*8-1)
diff --git a/src/mame/drivers/cinemat.c b/src/mame/drivers/cinemat.c
index 0a2225e0952..7ef49e9b092 100644
--- a/src/mame/drivers/cinemat.c
+++ b/src/mame/drivers/cinemat.c
@@ -1009,7 +1009,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(cinemat)
+ MCFG_SCREEN_UPDATE_STATIC(cinemat)
MCFG_VIDEO_START(cinemat_bilevel)
MACHINE_CONFIG_END
@@ -1056,7 +1056,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( spacewar, cinemat_nojmi_4k )
MCFG_FRAGMENT_ADD(spacewar_sound)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(spacewar)
+ MCFG_SCREEN_UPDATE_STATIC(spacewar)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c
index 630cce17ce3..f3dae0260af 100644
--- a/src/mame/drivers/circus.c
+++ b/src/mame/drivers/circus.c
@@ -298,10 +298,9 @@ static MACHINE_CONFIG_START( circus, circus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(circus)
+ MCFG_SCREEN_UPDATE_STATIC(circus)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
@@ -336,10 +335,9 @@ static MACHINE_CONFIG_START( robotbwl, circus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(robotbwl)
+ MCFG_SCREEN_UPDATE_STATIC(robotbwl)
MCFG_GFXDECODE(robotbwl)
MCFG_PALETTE_LENGTH(2)
@@ -381,10 +379,9 @@ static MACHINE_CONFIG_START( crash, circus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(crash)
+ MCFG_SCREEN_UPDATE_STATIC(crash)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
@@ -418,10 +415,9 @@ static MACHINE_CONFIG_START( ripcord, circus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3500) /* frames per second, vblank duration (complete guess) */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(ripcord)
+ MCFG_SCREEN_UPDATE_STATIC(ripcord)
MCFG_GFXDECODE(circus)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c
index 1275e120e68..eb13855e958 100644
--- a/src/mame/drivers/circusc.c
+++ b/src/mame/drivers/circusc.c
@@ -362,10 +362,9 @@ static MACHINE_CONFIG_START( circusc, circusc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(circusc)
+ MCFG_SCREEN_UPDATE_STATIC(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 062e9806917..6e2b6e58d2d 100644
--- a/src/mame/drivers/cischeat.c
+++ b/src/mame/drivers/cischeat.c
@@ -1582,10 +1582,9 @@ static MACHINE_CONFIG_START( bigrun, cischeat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(bigrun)
+ MCFG_SCREEN_UPDATE_STATIC(bigrun)
MCFG_GFXDECODE(bigrun)
MCFG_PALETTE_LENGTH(16*16 * 3 + 64*16 * 2 + 64*16) /* scroll 0,1,2; road 0,1; sprites */
@@ -1627,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(cischeat)
+ MCFG_SCREEN_UPDATE_STATIC(cischeat)
MCFG_GFXDECODE(cischeat)
MCFG_PALETTE_LENGTH(32*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
@@ -1660,7 +1659,7 @@ static MACHINE_CONFIG_DERIVED( f1gpstar, bigrun )
MCFG_VIDEO_START(f1gpstar)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(f1gpstar)
+ MCFG_SCREEN_UPDATE_STATIC(f1gpstar)
MACHINE_CONFIG_END
@@ -1716,10 +1715,9 @@ static MACHINE_CONFIG_START( scudhamm, cischeat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0 +16, 256-1 -16)
- MCFG_SCREEN_UPDATE(scudhamm)
+ MCFG_SCREEN_UPDATE_STATIC(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 20ce1157916..6da057ae03c 100644
--- a/src/mame/drivers/citycon.c
+++ b/src/mame/drivers/citycon.c
@@ -222,10 +222,9 @@ static MACHINE_CONFIG_START( citycon, citycon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(citycon)
+ MCFG_SCREEN_UPDATE_STATIC(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 a75eb8b1ef1..d8add99acfb 100644
--- a/src/mame/drivers/clayshoo.c
+++ b/src/mame/drivers/clayshoo.c
@@ -183,7 +183,7 @@ static MACHINE_START( clayshoo )
*
*************************************/
-static SCREEN_UPDATE( clayshoo )
+static SCREEN_UPDATE_RGB32( clayshoo )
{
clayshoo_state *state = screen.machine().driver_data<clayshoo_state>();
offs_t offs;
@@ -334,12 +334,11 @@ static MACHINE_CONFIG_START( clayshoo, clayshoo_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 64, 255)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE(clayshoo)
+ MCFG_SCREEN_UPDATE_STATIC(clayshoo)
MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
diff --git a/src/mame/drivers/cliffhgr.c b/src/mame/drivers/cliffhgr.c
index 3450855d5e5..f463f8ec1ee 100644
--- a/src/mame/drivers/cliffhgr.c
+++ b/src/mame/drivers/cliffhgr.c
@@ -76,7 +76,7 @@ Side 2 = 0x8F7DDD (or 0x880000 | ( 0x77 << 12 ) | 0x0DDD)
#include "emu.h"
#include "cpu/z80/z80.h"
#include "render.h"
-#include "machine/laserdsc.h"
+#include "machine/ldpr8210.h"
#include "video/tms9928a.h"
#include "sound/discrete.h"
#include "machine/nvram.h"
@@ -84,12 +84,23 @@ Side 2 = 0x8F7DDD (or 0x880000 | ( 0x77 << 12 ) | 0x0DDD)
#define CLIFF_ENABLE_SND_1 NODE_01
#define CLIFF_ENABLE_SND_2 NODE_02
-static device_t *laserdisc;
+class cliffhgr_state : public driver_device
+{
+public:
+ cliffhgr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc"),
+ m_port_bank(0),
+ m_phillips_code(0) { }
+
+ required_device<pioneer_pr8210_device> m_laserdisc;
-static int port_bank = 0;
-static int phillips_code = 0;
+ int m_port_bank;
+ UINT32 m_phillips_code;
+
+ emu_timer *m_irq_timer;
+};
-static emu_timer *irq_timer;
/********************************************************/
@@ -100,19 +111,23 @@ static WRITE8_HANDLER( cliff_test_led_w )
static WRITE8_HANDLER( cliff_port_bank_w )
{
+ cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>();
+
/* writing 0x0f clears the LS174 flip flop */
if (data == 0x0f)
- port_bank = 0;
+ state->m_port_bank = 0;
else
- port_bank = data & 0x0f; /* only D3-D0 are connected */
+ state->m_port_bank = data & 0x0f; /* only D3-D0 are connected */
}
static READ8_HANDLER( cliff_port_r )
{
static const char *const banknames[] = { "BANK0", "BANK1", "BANK2", "BANK3", "BANK4", "BANK5", "BANK6" };
- if (port_bank < 7)
- return input_port_read(space->machine(), banknames[port_bank]);
+ cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>();
+
+ if (state->m_port_bank < 7)
+ return input_port_read(space->machine(), banknames[state->m_port_bank]);
/* output is pulled up for non-mapped ports */
return 0xff;
@@ -120,10 +135,8 @@ static READ8_HANDLER( cliff_port_r )
static READ8_HANDLER( cliff_phillips_code_r )
{
- if (laserdisc != NULL)
- return (phillips_code >> (8 * offset)) & 0xff;
-
- return 0x00;
+ cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>();
+ return (state->m_phillips_code >> (8 * offset)) & 0xff;
}
static WRITE8_HANDLER( cliff_phillips_clear_w )
@@ -155,7 +168,8 @@ static WRITE8_DEVICE_HANDLER( cliff_sound_overlay_w )
static WRITE8_HANDLER( cliff_ldwire_w )
{
- laserdisc_line_w(laserdisc, LASERDISC_LINE_CONTROL, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
+ cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>();
+ state->m_laserdisc->control_w((data & 1) ? ASSERT_LINE : CLEAR_LINE);
}
@@ -163,29 +177,30 @@ static WRITE8_HANDLER( cliff_ldwire_w )
static TIMER_CALLBACK( cliff_irq_callback )
{
- phillips_code = 0;
+ cliffhgr_state *state = machine.driver_data<cliffhgr_state>();
+ state->m_phillips_code = 0;
switch (param)
{
case 17:
- phillips_code = laserdisc_get_field_code(laserdisc, LASERDISC_CODE_LINE17, TRUE);
+ state->m_phillips_code = state->m_laserdisc->get_field_code(LASERDISC_CODE_LINE17, true);
param = 18;
break;
case 18:
- phillips_code = laserdisc_get_field_code(laserdisc, LASERDISC_CODE_LINE18, TRUE);
+ state->m_phillips_code = state->m_laserdisc->get_field_code(LASERDISC_CODE_LINE18, true);
param = 17;
break;
}
/* if we have a valid code, trigger an IRQ */
- if (phillips_code & 0x800000)
+ if (state->m_phillips_code & 0x800000)
{
// printf("%2d:code = %06X\n", param, phillips_code);
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
}
- irq_timer->adjust(machine.primary_screen->time_until_pos(param * 2), param);
+ state->m_irq_timer->adjust(machine.primary_screen->time_until_pos(param * 2), param);
}
static WRITE_LINE_DEVICE_HANDLER(vdp_interrupt)
@@ -197,15 +212,16 @@ static WRITE_LINE_DEVICE_HANDLER(vdp_interrupt)
static MACHINE_START( cliffhgr )
{
- laserdisc = machine.device("laserdisc");
- irq_timer = machine.scheduler().timer_alloc(FUNC(cliff_irq_callback));
+ cliffhgr_state *state = machine.driver_data<cliffhgr_state>();
+ state->m_irq_timer = machine.scheduler().timer_alloc(FUNC(cliff_irq_callback));
}
static MACHINE_RESET( cliffhgr )
{
- port_bank = 0;
- phillips_code = 0;
- irq_timer->adjust(machine.primary_screen->time_until_pos(17), 17);
+ cliffhgr_state *state = machine.driver_data<cliffhgr_state>();
+ state->m_port_bank = 0;
+ state->m_phillips_code = 0;
+ state->m_irq_timer->adjust(machine.primary_screen->time_until_pos(17), 17);
}
/********************************************************/
@@ -655,11 +671,11 @@ static TMS9928A_INTERFACE(cliffhgr_tms9928a_interface)
DEVCB_LINE(vdp_interrupt)
};
-static SCREEN_UPDATE( cliffhgr )
+static SCREEN_UPDATE_IND16( cliffhgr )
{
tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
- tms9928a->update( bitmap, cliprect );
+ tms9928a->screen_update( screen, bitmap, cliprect );
return 0;
}
@@ -673,7 +689,7 @@ DISCRETE_SOUND_EXTERN( cliffhgr );
*
*************************************/
-static MACHINE_CONFIG_START( cliffhgr, driver_device )
+static MACHINE_CONFIG_START( cliffhgr, cliffhgr_state )
MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4MHz */
MCFG_CPU_PROGRAM_MAP(mainmem)
@@ -684,8 +700,8 @@ static MACHINE_CONFIG_START( cliffhgr, driver_device )
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(cliffhgr, TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_NTSC, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_PR8210_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_NTSC, cliffhgr)
MCFG_LASERDISC_OVERLAY_CLIP(TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START+32*8+12-1, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC+24*8+12-1)
/* start with the TMS9928a video configuration */
@@ -693,12 +709,12 @@ static MACHINE_CONFIG_START( cliffhgr, driver_device )
/* override video rendering and raw screen info */
MCFG_DEVICE_REMOVE("screen")
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c
index a0af9748ced..231dc9df74a 100644
--- a/src/mame/drivers/cloak.c
+++ b/src/mame/drivers/cloak.c
@@ -348,10 +348,9 @@ static MACHINE_CONFIG_START( cloak, cloak_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE(cloak)
+ MCFG_SCREEN_UPDATE_STATIC(cloak)
MCFG_GFXDECODE(cloak)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 10ad8c88b79..09a08745806 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -443,12 +443,11 @@ static MACHINE_CONFIG_START( cloud9, cloud9_state )
MCFG_PALETTE_LENGTH(64)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE((float)PIXEL_CLOCK / (float)VTOTAL / (float)HTOTAL)
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(cloud9)
+ MCFG_SCREEN_UPDATE_STATIC(cloud9)
MCFG_VIDEO_START(cloud9)
diff --git a/src/mame/drivers/clshroad.c b/src/mame/drivers/clshroad.c
index 09cb7f18b2b..86475331d9f 100644
--- a/src/mame/drivers/clshroad.c
+++ b/src/mame/drivers/clshroad.c
@@ -243,10 +243,9 @@ static MACHINE_CONFIG_START( firebatl, clshroad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x120, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
- MCFG_SCREEN_UPDATE(clshroad)
+ MCFG_SCREEN_UPDATE_STATIC(clshroad)
MCFG_GFXDECODE(firebatl)
MCFG_PALETTE_LENGTH(512+64*4)
@@ -278,10 +277,9 @@ static MACHINE_CONFIG_START( clshroad, clshroad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x120, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x120-1, 0x0+16, 0x100-16-1)
- MCFG_SCREEN_UPDATE(clshroad)
+ MCFG_SCREEN_UPDATE_STATIC(clshroad)
MCFG_GFXDECODE(clshroad)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c
index 1a33bbab2b2..fd0959db04c 100644
--- a/src/mame/drivers/cmmb.c
+++ b/src/mame/drivers/cmmb.c
@@ -61,7 +61,7 @@ static VIDEO_START( cmmb )
}
-static SCREEN_UPDATE( cmmb )
+static SCREEN_UPDATE_IND16( cmmb )
{
cmmb_state *state = screen.machine().driver_data<cmmb_state>();
UINT8 *videoram = state->m_videoram;
@@ -310,10 +310,9 @@ static MACHINE_CONFIG_START( cmmb, cmmb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // unknown
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(cmmb)
+ MCFG_SCREEN_UPDATE_STATIC(cmmb)
MCFG_GFXDECODE(cmmb)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c
index 36ec2d48679..7a0ffe5730b 100644
--- a/src/mame/drivers/cninja.c
+++ b/src/mame/drivers/cninja.c
@@ -928,10 +928,9 @@ static MACHINE_CONFIG_START( cninja, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cninja)
+ MCFG_SCREEN_UPDATE_STATIC(cninja)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -983,10 +982,9 @@ static MACHINE_CONFIG_START( stoneage, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cninja)
+ MCFG_SCREEN_UPDATE_STATIC(cninja)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -1038,10 +1036,9 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cninjabl)
+ MCFG_SCREEN_UPDATE_STATIC(cninjabl)
MCFG_GFXDECODE(cninjabl)
MCFG_PALETTE_LENGTH(2048)
@@ -1084,10 +1081,9 @@ static MACHINE_CONFIG_START( edrandy, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(edrandy)
+ MCFG_SCREEN_UPDATE_STATIC(edrandy)
MCFG_GFXDECODE(cninja)
MCFG_PALETTE_LENGTH(2048)
@@ -1139,10 +1135,9 @@ static MACHINE_CONFIG_START( robocop2, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(robocop2)
+ MCFG_SCREEN_UPDATE_STATIC(robocop2)
MCFG_GFXDECODE(robocop2)
MCFG_PALETTE_LENGTH(2048)
@@ -1195,10 +1190,9 @@ static MACHINE_CONFIG_START( mutantf, cninja_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mutantf)
+ MCFG_SCREEN_UPDATE_STATIC(mutantf)
MCFG_VIDEO_START(mutantf)
diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c
index e80be3789bf..7af8c660c16 100644
--- a/src/mame/drivers/cntsteer.c
+++ b/src/mame/drivers/cntsteer.c
@@ -146,7 +146,7 @@ Sprite list:
[2] xxxx xxxx X attribute
[3] xxxx xxxx sprite number
*/
-static void zerotrgt_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void zerotrgt_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cntsteer_state *state = machine.driver_data<cntsteer_state>();
int offs;
@@ -204,7 +204,7 @@ static void zerotrgt_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
---- --xx tile bank
*/
-static void cntsteer_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void cntsteer_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cntsteer_state *state = machine.driver_data<cntsteer_state>();
int offs;
@@ -253,7 +253,7 @@ static void cntsteer_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static SCREEN_UPDATE( zerotrgt )
+static SCREEN_UPDATE_IND16( zerotrgt )
{
cntsteer_state *state = screen.machine().driver_data<cntsteer_state>();
@@ -304,7 +304,7 @@ static SCREEN_UPDATE( zerotrgt )
return 0;
}
-static SCREEN_UPDATE( cntsteer )
+static SCREEN_UPDATE_IND16( cntsteer )
{
cntsteer_state *state = screen.machine().driver_data<cntsteer_state>();
@@ -891,10 +891,9 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cntsteer)
+ MCFG_SCREEN_UPDATE_STATIC(cntsteer)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
@@ -941,10 +940,9 @@ static MACHINE_CONFIG_START( zerotrgt, cntsteer_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(zerotrgt)
+ MCFG_SCREEN_UPDATE_STATIC(zerotrgt)
MCFG_GFXDECODE(zerotrgt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/cobra.c b/src/mame/drivers/cobra.c
index a6abc08497b..61a15cae8fa 100644
--- a/src/mame/drivers/cobra.c
+++ b/src/mame/drivers/cobra.c
@@ -63,7 +63,7 @@ public:
DECLARE_WRITE64_MEMBER(gfx_buf_w);
- bitmap_t *framebuffer;
+ bitmap_rgb32 *framebuffer;
poly_manager *poly;
int polybuffer_ptr;
@@ -74,7 +74,7 @@ public:
#if 0
static void render_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT32 *fb = &destmap->pix32(scanline);
int x;
@@ -87,7 +87,7 @@ static void render_scan(void *dest, INT32 scanline, const poly_extent *extent, c
static void render_texture_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)dest;
float u = extent->param[0].start;
float v = extent->param[1].start;
float du = extent->param[0].dpdx;
@@ -136,10 +136,10 @@ VIDEO_START( cobra )
cobra->poly = poly_alloc(machine, 4000, 10, POLYFLAG_ALLOW_QUADS);
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(cobra_video_exit), &machine));
- cobra->framebuffer = auto_bitmap_alloc(machine, 64*8, 32*8, BITMAP_FORMAT_RGB32);
+ cobra->framebuffer = auto_bitmap_rgb32_alloc(machine, 64*8, 32*8);
}
-SCREEN_UPDATE( cobra )
+SCREEN_UPDATE_RGB32( cobra )
{
cobra_state *cobra = screen.machine().driver_data<cobra_state>();
@@ -2028,11 +2028,10 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
MCFG_PALETTE_LENGTH(65536)
- MCFG_SCREEN_UPDATE(cobra)
+ MCFG_SCREEN_UPDATE_STATIC(cobra)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c
index d0de54c6fef..f02bbb7fb98 100644
--- a/src/mame/drivers/coinmstr.c
+++ b/src/mame/drivers/coinmstr.c
@@ -914,7 +914,7 @@ static VIDEO_START( coinmstr )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 46, 32);
}
-static SCREEN_UPDATE( coinmstr )
+static SCREEN_UPDATE_IND16( coinmstr )
{
coinmstr_state *state = screen.machine().driver_data<coinmstr_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -1014,10 +1014,9 @@ static MACHINE_CONFIG_START( coinmstr, coinmstr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 46*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(coinmstr)
+ MCFG_SCREEN_UPDATE_STATIC(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 bc42e9c2db4..92231eecdb2 100644
--- a/src/mame/drivers/coinmvga.c
+++ b/src/mame/drivers/coinmvga.c
@@ -240,7 +240,7 @@ static VIDEO_START( coinmvga )
}
-static SCREEN_UPDATE( coinmvga )
+static SCREEN_UPDATE_IND16( coinmvga )
{
coinmvga_state *state = screen.machine().driver_data<coinmvga_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -674,10 +674,9 @@ static MACHINE_CONFIG_START( coinmvga, coinmvga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640,480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE(coinmvga)
+ MCFG_SCREEN_UPDATE_STATIC(coinmvga)
MCFG_GFXDECODE(coinmvga)
diff --git a/src/mame/drivers/combatsc.c b/src/mame/drivers/combatsc.c
index 2e84d194218..920e4e6533c 100644
--- a/src/mame/drivers/combatsc.c
+++ b/src/mame/drivers/combatsc.c
@@ -770,10 +770,9 @@ static MACHINE_CONFIG_START( combatsc, combatsc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(combatsc)
+ MCFG_SCREEN_UPDATE_STATIC(combatsc)
MCFG_GFXDECODE(combatsc)
MCFG_PALETTE_LENGTH(8*16*16)
@@ -823,10 +822,9 @@ static MACHINE_CONFIG_START( combatscb, combatsc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(combatscb)
+ MCFG_SCREEN_UPDATE_STATIC(combatscb)
MCFG_GFXDECODE(combatscb)
MCFG_PALETTE_LENGTH(8*16*16)
diff --git a/src/mame/drivers/comebaby.c b/src/mame/drivers/comebaby.c
index 8409c9d34b8..5107cedb40f 100644
--- a/src/mame/drivers/comebaby.c
+++ b/src/mame/drivers/comebaby.c
@@ -73,6 +73,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -80,7 +82,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -88,7 +89,7 @@ void comebaby_state::video_start()
{
}
-bool comebaby_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 comebaby_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -108,7 +109,7 @@ static MACHINE_CONFIG_START( comebaby, comebaby_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(comebaby_state, screen_update)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index ae5eba87223..08303450124 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -264,10 +264,9 @@ static MACHINE_CONFIG_START( commando, commando_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(commando)
+ MCFG_SCREEN_UPDATE_STATIC(commando)
MCFG_SCREEN_EOF(commando)
MCFG_GFXDECODE(commando)
diff --git a/src/mame/drivers/compgolf.c b/src/mame/drivers/compgolf.c
index f650678e95e..e1fd0f6d957 100644
--- a/src/mame/drivers/compgolf.c
+++ b/src/mame/drivers/compgolf.c
@@ -262,10 +262,9 @@ static MACHINE_CONFIG_START( compgolf, compgolf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(compgolf)
+ MCFG_SCREEN_UPDATE_STATIC(compgolf)
MCFG_PALETTE_LENGTH(0x100)
MCFG_PALETTE_INIT(compgolf)
diff --git a/src/mame/drivers/contra.c b/src/mame/drivers/contra.c
index 9a7a90280ac..07a8380465e 100644
--- a/src/mame/drivers/contra.c
+++ b/src/mame/drivers/contra.c
@@ -206,10 +206,9 @@ static MACHINE_CONFIG_START( contra, contra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(contra)
+ MCFG_SCREEN_UPDATE_STATIC(contra)
MCFG_GFXDECODE(contra)
MCFG_PALETTE_LENGTH(2*8*16*16)
diff --git a/src/mame/drivers/coolpool.c b/src/mame/drivers/coolpool.c
index a497a8f8c32..082e6659c5a 100644
--- a/src/mame/drivers/coolpool.c
+++ b/src/mame/drivers/coolpool.c
@@ -54,7 +54,7 @@ static const UINT16 nvram_unlock_seq[] =
*
*************************************/
-static void amerdart_scanline(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void amerdart_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
coolpool_state *state = screen.machine().driver_data<coolpool_state>();
@@ -83,7 +83,7 @@ static void amerdart_scanline(screen_device &screen, bitmap_t &bitmap, int scanl
}
-static void coolpool_scanline(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void coolpool_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
coolpool_state *state = screen.machine().driver_data<coolpool_state>();
@@ -835,7 +835,8 @@ static const tms34010_config tms_config_amerdart =
"screen", /* the screen operated on */
XTAL_40MHz/12, /* pixel clock */
2, /* pixels per clock */
- amerdart_scanline, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ amerdart_scanline, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
coolpool_to_shiftreg, /* write to shiftreg function */
coolpool_from_shiftreg /* read from shiftreg function */
@@ -848,7 +849,8 @@ static const tms34010_config tms_config_coolpool =
"screen", /* the screen operated on */
XTAL_40MHz/6, /* pixel clock */
1, /* pixels per clock */
- coolpool_scanline, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ coolpool_scanline, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
coolpool_to_shiftreg, /* write to shiftreg function */
coolpool_from_shiftreg /* read from shiftreg function */
@@ -882,9 +884,8 @@ static MACHINE_CONFIG_START( amerdart, coolpool_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 212*2, 0, 161*2, 262, 0, 241)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -914,9 +915,8 @@ static MACHINE_CONFIG_START( coolpool, coolpool_state )
MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 424, 0, 320, 262, 0, 240)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c
index 00d0109f8d2..17e301e3f35 100644
--- a/src/mame/drivers/coolridr.c
+++ b/src/mame/drivers/coolridr.c
@@ -269,7 +269,7 @@ public:
UINT32* m_h1_vram;
UINT32* m_sysh1_txt_blit;
UINT32* m_txt_vram;
- bitmap_t* m_temp_bitmap_sprites;
+ bitmap_rgb32 m_temp_bitmap_sprites;
UINT32 m_test_offs;
int m_color;
UINT8 m_vblank;
@@ -296,11 +296,11 @@ static VIDEO_START(coolridr)
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_temp_bitmap_sprites = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
+ state->m_temp_bitmap_sprites.allocate(width, height);
state->m_test_offs = 0x2000;
}
-static SCREEN_UPDATE(coolridr)
+static SCREEN_UPDATE_RGB32(coolridr)
{
coolridr_state *state = screen.machine().driver_data<coolridr_state>();
/* planes seems to basically be at 0x8000 and 0x28000... */
@@ -356,8 +356,8 @@ static SCREEN_UPDATE(coolridr)
}
}
- 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, state->m_temp_bitmap_sprites, 0, 0, 0, 0, cliprect, 0);
+ state->m_temp_bitmap_sprites.fill(0, cliprect);
return 0;
@@ -477,9 +477,9 @@ static WRITE32_HANDLER( sysh1_txt_blit_w )
y2 = (state->m_attr_buff[9] & 0x01ff0000) >> 16;
x2 = (state->m_attr_buff[9] & 0x000001ff);
- clip = state->m_temp_bitmap_sprites->cliprect();
+ clip = state->m_temp_bitmap_sprites.cliprect();
- drawgfx_opaque(*state->m_temp_bitmap_sprites,clip,gfx,1,1,0,0,x2,y2);
+ drawgfx_opaque(state->m_temp_bitmap_sprites,clip,gfx,1,1,0,0,x2,y2);
}
}
if(state->m_attr_index == 0xc)
@@ -1112,10 +1112,9 @@ static MACHINE_CONFIG_START( coolridr, coolridr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(coolridr)
+ MCFG_SCREEN_UPDATE_STATIC(coolridr)
MCFG_PALETTE_LENGTH(0x10000)
MCFG_MACHINE_RESET(coolridr)
diff --git a/src/mame/drivers/cop01.c b/src/mame/drivers/cop01.c
index 595e7e33fb3..b021e9ab594 100644
--- a/src/mame/drivers/cop01.c
+++ b/src/mame/drivers/cop01.c
@@ -474,10 +474,9 @@ static MACHINE_CONFIG_START( cop01, cop01_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cop01)
+ MCFG_SCREEN_UPDATE_STATIC(cop01)
MCFG_GFXDECODE(cop01)
MCFG_PALETTE_LENGTH(16+8*16+16*16)
@@ -517,10 +516,9 @@ static MACHINE_CONFIG_START( mightguy, cop01_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cop01)
+ MCFG_SCREEN_UPDATE_STATIC(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 4bb7fbe4f15..93a7359e1a9 100644
--- a/src/mame/drivers/copsnrob.c
+++ b/src/mame/drivers/copsnrob.c
@@ -279,10 +279,9 @@ static MACHINE_CONFIG_START( copsnrob, copsnrob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 26*8-1)
- MCFG_SCREEN_UPDATE(copsnrob)
+ MCFG_SCREEN_UPDATE_STATIC(copsnrob)
MCFG_GFXDECODE(copsnrob)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/corona.c b/src/mame/drivers/corona.c
index 1485ead4d78..118c95ff5ca 100644
--- a/src/mame/drivers/corona.c
+++ b/src/mame/drivers/corona.c
@@ -447,7 +447,7 @@ static VIDEO_START(winner)
state->m_videobuf = auto_alloc_array_clear(machine, UINT8, VIDEOBUF_SIZE);
}
-static SCREEN_UPDATE(winner)
+static SCREEN_UPDATE_IND16(winner)
{
corona_state *state = screen.machine().driver_data<corona_state>();
int x, y;
@@ -459,7 +459,7 @@ static SCREEN_UPDATE(winner)
return 0;
}
-static SCREEN_UPDATE(luckyrlt)
+static SCREEN_UPDATE_IND16(luckyrlt)
{
corona_state *state = screen.machine().driver_data<corona_state>();
int x, y;
@@ -1362,12 +1362,11 @@ static MACHINE_CONFIG_START( winner81, corona_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(winner)
+ MCFG_SCREEN_UPDATE_STATIC(winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1396,12 +1395,11 @@ static MACHINE_CONFIG_START( winner82, corona_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(winner)
+ MCFG_SCREEN_UPDATE_STATIC(winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1430,12 +1428,11 @@ static MACHINE_CONFIG_START( re800, corona_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
- MCFG_SCREEN_UPDATE(winner)
+ MCFG_SCREEN_UPDATE_STATIC(winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1463,12 +1460,11 @@ static MACHINE_CONFIG_START( rcirulet, corona_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
- MCFG_SCREEN_UPDATE(winner)
+ MCFG_SCREEN_UPDATE_STATIC(winner)
MCFG_PALETTE_LENGTH(0x100)
@@ -1497,12 +1493,11 @@ static MACHINE_CONFIG_START( luckyrlt, corona_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE(luckyrlt)
+ MCFG_SCREEN_UPDATE_STATIC(luckyrlt)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index cd593ff0886..19afbc185e3 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -1001,7 +1001,6 @@ static MACHINE_CONFIG_START( cosmic, cosmic_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
MACHINE_CONFIG_END
@@ -1031,7 +1030,7 @@ static MACHINE_CONFIG_DERIVED( panic, cosmic )
MCFG_PALETTE_INIT(panic)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(panic)
+ MCFG_SCREEN_UPDATE_STATIC(panic)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1057,7 +1056,7 @@ static MACHINE_CONFIG_DERIVED( cosmica, cosmic )
MCFG_PALETTE_INIT(cosmica)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(cosmica)
+ MCFG_SCREEN_UPDATE_STATIC(cosmica)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1089,10 +1088,9 @@ static MACHINE_CONFIG_START( cosmicg, cosmic_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(cosmicg)
+ MCFG_SCREEN_UPDATE_STATIC(cosmicg)
MCFG_PALETTE_LENGTH(16)
@@ -1122,7 +1120,7 @@ static MACHINE_CONFIG_DERIVED( magspot, cosmic )
MCFG_PALETTE_INIT(magspot)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(magspot)
+ MCFG_SCREEN_UPDATE_STATIC(magspot)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1138,7 +1136,7 @@ static MACHINE_CONFIG_DERIVED( devzone, magspot )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(devzone)
+ MCFG_SCREEN_UPDATE_STATIC(devzone)
MACHINE_CONFIG_END
@@ -1154,7 +1152,7 @@ static MACHINE_CONFIG_DERIVED( nomnlnd, cosmic )
MCFG_PALETTE_INIT(nomnlnd)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(nomnlnd)
+ MCFG_SCREEN_UPDATE_STATIC(nomnlnd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index c6a2df8d6b6..3198f3f9661 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -3053,10 +3053,9 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on one of the input gates of the 74ls08@4J on GNG romboard 88620-b-2 */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cps1)
+ MCFG_SCREEN_UPDATE_STATIC(cps1)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
@@ -3138,10 +3137,9 @@ static MACHINE_CONFIG_START( cpspicb, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cps1)
+ MCFG_SCREEN_UPDATE_STATIC(cps1)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
@@ -3213,10 +3211,9 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cps1)
+ MCFG_SCREEN_UPDATE_STATIC(cps1)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
@@ -3298,10 +3295,9 @@ static MACHINE_CONFIG_START( knightsb, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cps1)
+ MCFG_SCREEN_UPDATE_STATIC(cps1)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c
index e596af1f304..5dccd51755e 100644
--- a/src/mame/drivers/cps2.c
+++ b/src/mame/drivers/cps2.c
@@ -1225,9 +1225,8 @@ static MACHINE_CONFIG_START( cps2, cps_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(XTAL_8MHz, 518, 64, 448, 259, 16, 240)
- MCFG_SCREEN_UPDATE(cps1)
+ MCFG_SCREEN_UPDATE_STATIC(cps1)
MCFG_SCREEN_EOF(cps1)
/*
Measured clocks:
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index d0136157d58..338baa4d142 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -410,10 +410,10 @@ Notes:
static void copy_from_nvram(running_machine &machine);
-INLINE void cps3_drawgfxzoom(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+INLINE void cps3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
int transparency,int transparent_color,
- int scalex, int scaley,bitmap_t *pri_buffer,UINT32 pri_mask)
+ int scalex, int scaley,bitmap_ind8 *pri_buffer,UINT32 pri_mask)
{
cps3_state *state = gfx->machine().driver_data<cps3_state>();
rectangle myclip;
@@ -845,20 +845,20 @@ static VIDEO_START(cps3)
// the renderbuffer can be twice the size of the screen, this allows us to handle framebuffer zoom values
// between 0x00 and 0x80 (0x40 is normal, 0x80 would be 'view twice as much', 0x20 is 'view half as much')
- state->m_renderbuffer_bitmap = auto_bitmap_alloc(machine,512*2,224*2,machine.primary_screen->format());
+ state->m_renderbuffer_bitmap.allocate(512*2,224*2);
state->m_renderbuffer_clip.min_x = 0;
state->m_renderbuffer_clip.max_x = state->m_screenwidth-1;
state->m_renderbuffer_clip.min_y = 0;
state->m_renderbuffer_clip.max_y = 224-1;
- state->m_renderbuffer_bitmap->fill(0x3f, state->m_renderbuffer_clip);
+ state->m_renderbuffer_bitmap.fill(0x3f, state->m_renderbuffer_clip);
}
// the 0x400 bit in the tilemap regs is "draw it upside-down" (bios tilemap during flashing, otherwise capcom logo is flipped)
-static void cps3_draw_tilemapsprite_line(running_machine &machine, int tmnum, int drawline, bitmap_t &bitmap, const rectangle &cliprect )
+static void cps3_draw_tilemapsprite_line(running_machine &machine, int tmnum, int drawline, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
cps3_state *state = machine.driver_data<cps3_state>();
UINT32* tmapregs[4] = { state->m_tilemap20_regs_base, state->m_tilemap30_regs_base, state->m_tilemap40_regs_base, state->m_tilemap50_regs_base };
@@ -941,7 +941,7 @@ static void cps3_draw_tilemapsprite_line(running_machine &machine, int tmnum, in
}
}
-static SCREEN_UPDATE(cps3)
+static SCREEN_UPDATE_RGB32(cps3)
{
cps3_state *state = screen.machine().driver_data<cps3_state>();
int y,x, count;
@@ -994,7 +994,7 @@ static SCREEN_UPDATE(cps3)
state->m_renderbuffer_clip.min_y = 0;
state->m_renderbuffer_clip.max_y = ((224*fszx)>>16)-1;
- state->m_renderbuffer_bitmap->fill(0, state->m_renderbuffer_clip);
+ state->m_renderbuffer_bitmap.fill(0, state->m_renderbuffer_clip);
/* Sprites */
{
@@ -1093,7 +1093,7 @@ static SCREEN_UPDATE(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, state->m_renderbuffer_bitmap, state->m_renderbuffer_clip );
}
}
bg_drawn[tilemapnum] = 1;
@@ -1180,11 +1180,11 @@ static SCREEN_UPDATE(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(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);
}
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(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);
}
count++;
}
@@ -1211,7 +1211,7 @@ static SCREEN_UPDATE(cps3)
for (rendery=0;rendery<224;rendery++)
{
dstbitmap = &bitmap.pix32(rendery);
- srcbitmap = &state->m_renderbuffer_bitmap->pix32(srcy>>16);
+ srcbitmap = &state->m_renderbuffer_bitmap.pix32(srcy>>16);
srcx=0;
for (renderx=0;renderx<state->m_screenwidth;renderx++)
@@ -2581,9 +2581,8 @@ static MACHINE_CONFIG_START( cps3, cps3_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_60MHz/8, 486, 0, 384, 259, 0, 224)
- MCFG_SCREEN_UPDATE(cps3)
+ MCFG_SCREEN_UPDATE_STATIC(cps3)
/*
Measured clocks:
V = 59.5992Hz
diff --git a/src/mame/drivers/crbaloon.c b/src/mame/drivers/crbaloon.c
index c429c170770..156bd0b7f38 100644
--- a/src/mame/drivers/crbaloon.c
+++ b/src/mame/drivers/crbaloon.c
@@ -388,10 +388,9 @@ static MACHINE_CONFIG_START( crbaloon, crbaloon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(crbaloon)
+ MCFG_SCREEN_UPDATE_STATIC(crbaloon)
/* audio hardware */
MCFG_FRAGMENT_ADD(crbaloon_audio)
diff --git a/src/mame/drivers/crimfght.c b/src/mame/drivers/crimfght.c
index 0bafc4d4c3b..1aaf7e4d7bd 100644
--- a/src/mame/drivers/crimfght.c
+++ b/src/mame/drivers/crimfght.c
@@ -294,10 +294,9 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54) /* adjusted - compared with PCB speed */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(crimfght)
+ MCFG_SCREEN_UPDATE_STATIC(crimfght)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/crospang.c b/src/mame/drivers/crospang.c
index d63640d56db..34a34793c21 100644
--- a/src/mame/drivers/crospang.c
+++ b/src/mame/drivers/crospang.c
@@ -364,10 +364,9 @@ static MACHINE_CONFIG_START( crospang, crospang_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE(crospang)
+ MCFG_SCREEN_UPDATE_STATIC(crospang)
MCFG_PALETTE_LENGTH(0x300)
MCFG_GFXDECODE(crospang)
@@ -403,10 +402,9 @@ static MACHINE_CONFIG_START( bestri, crospang_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE(crospang)
+ MCFG_SCREEN_UPDATE_STATIC(crospang)
MCFG_PALETTE_LENGTH(0x300)
MCFG_GFXDECODE(crospang)
diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c
index 0db15bef1e0..78c951629fb 100644
--- a/src/mame/drivers/crshrace.c
+++ b/src/mame/drivers/crshrace.c
@@ -486,10 +486,9 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(crshrace)
+ MCFG_SCREEN_UPDATE_STATIC(crshrace)
MCFG_SCREEN_EOF(crshrace)
MCFG_GFXDECODE(crshrace)
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index cc171062830..e6bc31f695c 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -633,7 +633,7 @@ static void SetVidReg( address_space *space, UINT16 reg, UINT16 val )
}
-static SCREEN_UPDATE( crystal )
+static SCREEN_UPDATE_IND16( crystal )
{
crystal_state *state = screen.machine().driver_data<crystal_state>();
address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
@@ -831,10 +831,9 @@ static MACHINE_CONFIG_START( crystal, crystal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(crystal)
+ MCFG_SCREEN_UPDATE_STATIC(crystal)
MCFG_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 3ef96b4f59d..e47eb027a8c 100644
--- a/src/mame/drivers/cshooter.c
+++ b/src/mame/drivers/cshooter.c
@@ -135,7 +135,7 @@ static VIDEO_START(cshooter)
tilemap_set_transparent_pen(state->m_txtilemap, 3);
}
-static SCREEN_UPDATE(cshooter)
+static SCREEN_UPDATE_IND16(cshooter)
{
cshooter_state *state = screen.machine().driver_data<cshooter_state>();
bitmap.fill(0/*get_black_pen(screen.screen.machine(, cliprect))*/);
@@ -437,10 +437,9 @@ static MACHINE_CONFIG_START( cshooter, cshooter_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE(cshooter)
+ MCFG_SCREEN_UPDATE_STATIC(cshooter)
MCFG_GFXDECODE(cshooter)
MCFG_PALETTE_LENGTH(0x1000)
@@ -465,10 +464,9 @@ static MACHINE_CONFIG_START( airraid, cshooter_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE(cshooter)
+ MCFG_SCREEN_UPDATE_STATIC(cshooter)
MCFG_GFXDECODE(cshooter)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/csplayh5.c b/src/mame/drivers/csplayh5.c
index 4709799f643..49abd553ca0 100644
--- a/src/mame/drivers/csplayh5.c
+++ b/src/mame/drivers/csplayh5.c
@@ -30,15 +30,16 @@ class csplayh5_state : public driver_device
public:
csplayh5_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_maincpu(*this,"maincpu")
+ m_maincpu(*this,"maincpu"),
+ m_v9958(*this,"v9958")
{ }
- bitmap_t *m_vdp0_bitmap;
UINT16 m_mux_data;
UINT8 m_pio_dir[5];
UINT8 m_pio_latch[5];
required_device<cpu_device> m_maincpu;
+ required_device<v9958_device> m_v9958;
};
@@ -53,31 +54,12 @@ public:
#define MSX2_VISIBLE_XBORDER_PIXELS 8 * 2
#define MSX2_VISIBLE_YBORDER_PIXELS 14 * 2
-static void csplayh5_vdp0_interrupt(running_machine &machine, int i)
+static void csplayh5_vdp0_interrupt(device_t *, v99x8_device &device, int i)
{
/* this is not used as the v9938 interrupt callbacks are broken
interrupts seem to be fired quite randomly */
}
-static VIDEO_START( csplayh5 )
-{
- csplayh5_state *state = machine.driver_data<csplayh5_state>();
- state->m_vdp0_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- v9938_init (machine, 0, *machine.primary_screen, *state->m_vdp0_bitmap, MODEL_V9958, 0x20000, csplayh5_vdp0_interrupt);
- v9938_reset(0);
-}
-
-static SCREEN_UPDATE( csplayh5 )
-{
- csplayh5_state *state = screen.machine().driver_data<csplayh5_state>();
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
-
- copybitmap(bitmap, *state->m_vdp0_bitmap, 0, 0, 0, 0, cliprect);
-
- return 0;
-}
-
-
static READ16_HANDLER( csplayh5_mux_r )
{
csplayh5_state *state = space->machine().driver_data<csplayh5_state>();
@@ -112,10 +94,7 @@ static ADDRESS_MAP_START( csplayh5_map, AS_PROGRAM, 16 )
AM_RANGE(0x200200, 0x200201) AM_READWRITE(csplayh5_mux_r,csplayh5_mux_w)
AM_RANGE(0x200400, 0x200401) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x200600, 0x200601) AM_READWRITE8(v9938_0_vram_r, v9938_0_vram_w,0xff)
- AM_RANGE(0x200602, 0x200603) AM_READWRITE8(v9938_0_status_r, v9938_0_command_w,0xff)
- AM_RANGE(0x200604, 0x200605) AM_WRITE8(v9938_0_palette_w,0xff)
- AM_RANGE(0x200606, 0x200607) AM_WRITE8(v9938_0_register_w,0xff)
+ AM_RANGE(0x200600, 0x200607) AM_DEVREADWRITE8_MODERN("v9958", v9958_device, read, write, 0x00ff)
AM_RANGE(0x800000, 0xbfffff) AM_ROM AM_REGION("blit_gfx",0) // GFX ROM routes here
@@ -611,9 +590,9 @@ static TIMER_DEVICE_CALLBACK( csplayh5_irq )
if((scanline % 2) == 0)
{
- v9938_set_sprite_limit(0, 0);
- v9938_set_resolution(0, RENDER_HIGH);
- v9938_interrupt(timer.machine(), 0);
+ state->m_v9958->set_sprite_limit(0);
+ state->m_v9958->set_resolution(RENDER_HIGH);
+ state->m_v9958->interrupt();
}
}
@@ -651,19 +630,19 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_V9958_ADD("v9958", "screen", 0x20000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(csplayh5_vdp0_interrupt)
+
MCFG_SCREEN_ADD("screen",RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(csplayh5)
+ MCFG_SCREEN_UPDATE_DEVICE("v9958", v9958_device, screen_update)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT( v9958 )
- MCFG_VIDEO_START(csplayh5)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c
index d07ad757e8e..79a0ad3af5f 100644
--- a/src/mame/drivers/cubeqst.c
+++ b/src/mame/drivers/cubeqst.c
@@ -21,7 +21,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/cubeqcpu/cubeqcpu.h"
#include "sound/dac.h"
-#include "machine/laserdsc.h"
+#include "machine/ldpr8210.h"
#include "machine/nvram.h"
@@ -29,13 +29,14 @@ class cubeqst_state : public driver_device
{
public:
cubeqst_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
UINT8 *m_depth_buffer;
int m_video_field;
UINT8 m_io_latch;
UINT8 m_reset_latch;
- device_t *m_laserdisc;
+ required_device<simutrek_special_device> m_laserdisc;
rgb_t *m_colormap;
};
@@ -93,7 +94,7 @@ static WRITE16_HANDLER( palette_w )
}
/* TODO: This is a simplified version of what actually happens */
-static SCREEN_UPDATE( cubeqst )
+static SCREEN_UPDATE_RGB32( cubeqst )
{
cubeqst_state *state = screen.machine().driver_data<cubeqst_state>();
int y;
@@ -196,7 +197,7 @@ static INTERRUPT_GEN( vblank )
static WRITE16_HANDLER( laserdisc_w )
{
cubeqst_state *state = space->machine().driver_data<cubeqst_state>();
- laserdisc_data_w(state->m_laserdisc, data & 0xff);
+ state->m_laserdisc->data_w(data & 0xff);
}
/*
@@ -206,8 +207,8 @@ static WRITE16_HANDLER( laserdisc_w )
static READ16_HANDLER( laserdisc_r )
{
cubeqst_state *state = space->machine().driver_data<cubeqst_state>();
- int ldp_command_flag = (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
- int ldp_seek_status = (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 1 : 0;
+ int ldp_command_flag = (state->m_laserdisc->ready_r() == ASSERT_LINE) ? 0 : 1;
+ int ldp_seek_status = (state->m_laserdisc->status_r() == ASSERT_LINE) ? 1 : 0;
return (ldp_seek_status << 1) | ldp_command_flag;
}
@@ -217,7 +218,7 @@ static READ16_HANDLER( laserdisc_r )
static WRITE16_HANDLER( ldaud_w )
{
cubeqst_state *state = space->machine().driver_data<cubeqst_state>();
- simutrek_set_audio_squelch(state->m_laserdisc, data & 1 ? ASSERT_LINE : CLEAR_LINE);
+ state->m_laserdisc->set_external_audio_squelch(data & 1 ? ASSERT_LINE : CLEAR_LINE);
}
/*
@@ -233,7 +234,7 @@ static WRITE16_HANDLER( ldaud_w )
static WRITE16_HANDLER( control_w )
{
cubeqst_state *state = space->machine().driver_data<cubeqst_state>();
- laserdisc_video_enable(state->m_laserdisc, data & 1);
+ state->m_laserdisc->video_enable(data & 1);
}
@@ -435,8 +436,6 @@ ADDRESS_MAP_END
static MACHINE_START( cubeqst )
{
- cubeqst_state *state = machine.driver_data<cubeqst_state>();
- state->m_laserdisc = machine.device("laserdisc");
}
static MACHINE_RESET( cubeqst )
@@ -526,20 +525,20 @@ static MACHINE_CONFIG_START( cubeqst, cubeqst_state )
MCFG_MACHINE_RESET(cubeqst)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
- MCFG_VIDEO_START(cubeqst)
-
- MCFG_PALETTE_INIT(cubeqst)
-
- MCFG_LASERDISC_ADD("laserdisc", SIMUTREK_SPECIAL, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(cubeqst, CUBEQST_HBLANK, CUBEQST_VCOUNT, BITMAP_FORMAT_RGB32)
+ MCFG_LASERDISC_SIMUTREK_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(CUBEQST_HBLANK, CUBEQST_VCOUNT, cubeqst)
MCFG_LASERDISC_OVERLAY_CLIP(0, 320-1, 0, 256-8)
MCFG_LASERDISC_OVERLAY_POSITION(0.002, -0.018)
MCFG_LASERDISC_OVERLAY_SCALE(1.0, 1.030)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
+
+ MCFG_VIDEO_START(cubeqst)
+ MCFG_PALETTE_INIT(cubeqst)
+
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
diff --git a/src/mame/drivers/cultures.c b/src/mame/drivers/cultures.c
index fbcd8715ae0..461ccc7009e 100644
--- a/src/mame/drivers/cultures.c
+++ b/src/mame/drivers/cultures.c
@@ -85,7 +85,7 @@ static VIDEO_START( cultures )
tilemap_set_scrolldy(state->m_bg2_tilemap, 255, 0);
}
-static SCREEN_UPDATE( cultures )
+static SCREEN_UPDATE_IND16( cultures )
{
cultures_state *state = screen.machine().driver_data<cultures_state>();
int attr;
@@ -400,10 +400,9 @@ static MACHINE_CONFIG_START( cultures, cultures_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cultures)
+ MCFG_SCREEN_UPDATE_STATIC(cultures)
MCFG_GFXDECODE(culture)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/cvs.c b/src/mame/drivers/cvs.c
index 513c878143c..9b7dbf18ce2 100644
--- a/src/mame/drivers/cvs.c
+++ b/src/mame/drivers/cvs.c
@@ -1083,12 +1083,11 @@ static MACHINE_CONFIG_START( cvs, cvs_state )
MCFG_PALETTE_INIT(cvs)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
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(cvs)
+ MCFG_SCREEN_UPDATE_STATIC(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 c533621ef44..4064205c0cc 100644
--- a/src/mame/drivers/cyberbal.c
+++ b/src/mame/drivers/cyberbal.c
@@ -460,18 +460,16 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
MCFG_PALETTE_LENGTH(4096)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(cyberbal_left)
+ MCFG_SCREEN_UPDATE_STATIC(cyberbal_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(cyberbal_right)
+ MCFG_SCREEN_UPDATE_STATIC(cyberbal_right)
MCFG_VIDEO_START(cyberbal)
@@ -508,11 +506,10 @@ static MACHINE_CONFIG_START( cyberbal2p, cyberbal_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(cyberbal2p)
+ MCFG_SCREEN_UPDATE_STATIC(cyberbal2p)
MCFG_VIDEO_START(cyberbal2p)
diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c
index 9c21989576a..c0d4706bb76 100644
--- a/src/mame/drivers/cybertnk.c
+++ b/src/mame/drivers/cybertnk.c
@@ -206,7 +206,7 @@ static VIDEO_START( cybertnk )
tilemap_set_transparent_pen(state->m_tx_tilemap,0);
}
-static void draw_pixel( bitmap_t &bitmap, const rectangle &cliprect, int y, int x, int pen)
+static void draw_pixel( bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, int pen)
{
if (x>cliprect.max_x) return;
if (x<cliprect.min_x) return;
@@ -216,7 +216,7 @@ static void draw_pixel( bitmap_t &bitmap, const rectangle &cliprect, int y, int
bitmap.pix16(y, x) = pen;
}
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int screen_shift)
+static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int screen_shift)
{
cybertnk_state *state = screen.machine().driver_data<cybertnk_state>();
@@ -510,8 +510,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-static SCREEN_UPDATE( cybertnk_left ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE( cybertnk_right ) { return update_screen(screen, bitmap, cliprect, -256); }
+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); }
static WRITE16_HANDLER( tx_vram_w )
@@ -875,20 +875,18 @@ static MACHINE_CONFIG_START( cybertnk, cybertnk_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cybertnk_left)
+ MCFG_SCREEN_UPDATE_STATIC(cybertnk_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(cybertnk_right)
+ MCFG_SCREEN_UPDATE_STATIC(cybertnk_right)
MCFG_GFXDECODE(cybertnk)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c
index 80bf985aff8..790d0d34527 100644
--- a/src/mame/drivers/cyclemb.c
+++ b/src/mame/drivers/cyclemb.c
@@ -121,7 +121,7 @@ static VIDEO_START( cyclemb )
}
-static SCREEN_UPDATE( cyclemb )
+static SCREEN_UPDATE_IND16( cyclemb )
{
cyclemb_state *state = screen.machine().driver_data<cyclemb_state>();
int x,y,count;
@@ -541,10 +541,9 @@ static MACHINE_CONFIG_START( cyclemb, cyclemb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cyclemb)
+ MCFG_SCREEN_UPDATE_STATIC(cyclemb)
MCFG_GFXDECODE(cyclemb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/d9final.c b/src/mame/drivers/d9final.c
index a725836e995..de3a25cb68c 100644
--- a/src/mame/drivers/d9final.c
+++ b/src/mame/drivers/d9final.c
@@ -57,7 +57,7 @@ static VIDEO_START(d9final)
state->m_sc0_tilemap = tilemap_create(machine, get_sc0_tile_info,tilemap_scan_rows,8,8,64,32);
}
-static SCREEN_UPDATE(d9final)
+static SCREEN_UPDATE_IND16(d9final)
{
d9final_state *state = screen.machine().driver_data<d9final_state>();
tilemap_draw(bitmap,cliprect,state->m_sc0_tilemap,0,0);
@@ -286,10 +286,9 @@ static MACHINE_CONFIG_START( d9final, d9final_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(d9final)
+ MCFG_SCREEN_UPDATE_STATIC(d9final)
MCFG_GFXDECODE(d9final)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c
index 0d0fd0fc743..997124888f5 100644
--- a/src/mame/drivers/dacholer.c
+++ b/src/mame/drivers/dacholer.c
@@ -104,7 +104,7 @@ static WRITE8_HANDLER( bg_scroll_y_w )
state->m_scroll_y = data;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
dacholer_state *state = machine.driver_data<dacholer_state>();
int offs, code, attr, sx, sy, flipx, flipy;
@@ -136,7 +136,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE(dacholer)
+static SCREEN_UPDATE_IND16(dacholer)
{
dacholer_state *state = screen.machine().driver_data<dacholer_state>();
@@ -662,10 +662,9 @@ static MACHINE_CONFIG_START( dacholer, dacholer_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
- MCFG_SCREEN_UPDATE(dacholer)
+ MCFG_SCREEN_UPDATE_STATIC(dacholer)
MCFG_PALETTE_LENGTH(32)
MCFG_PALETTE_INIT(dacholer)
diff --git a/src/mame/drivers/dai3wksi.c b/src/mame/drivers/dai3wksi.c
index d7a9ef3f7f3..7dc3d7b0073 100644
--- a/src/mame/drivers/dai3wksi.c
+++ b/src/mame/drivers/dai3wksi.c
@@ -123,7 +123,7 @@ static void dai3wksi_get_pens(pen_t *pens)
}
-static SCREEN_UPDATE( dai3wksi )
+static SCREEN_UPDATE_RGB32( dai3wksi )
{
dai3wksi_state *state = screen.machine().driver_data<dai3wksi_state>();
offs_t offs;
@@ -599,11 +599,10 @@ static MACHINE_CONFIG_START( dai3wksi, dai3wksi_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(4, 251, 8, 247)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE(dai3wksi)
+ MCFG_SCREEN_UPDATE_STATIC(dai3wksi)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dambustr.c b/src/mame/drivers/dambustr.c
index c3bbc7845e8..c5e1167d91c 100644
--- a/src/mame/drivers/dambustr.c
+++ b/src/mame/drivers/dambustr.c
@@ -257,10 +257,9 @@ static MACHINE_CONFIG_START( dambustr, dambustr_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(dambustr)
+ MCFG_SCREEN_UPDATE_STATIC(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 805012c6ef7..a0cba7fe0f6 100644
--- a/src/mame/drivers/darius.c
+++ b/src/mame/drivers/darius.c
@@ -959,28 +959,25 @@ static MACHINE_CONFIG_START( darius, darius_state )
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(darius_left)
+ MCFG_SCREEN_UPDATE_STATIC(darius_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(darius_middle)
+ MCFG_SCREEN_UPDATE_STATIC(darius_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(darius_right)
+ MCFG_SCREEN_UPDATE_STATIC(darius_right)
MCFG_VIDEO_START(darius)
diff --git a/src/mame/drivers/darkhors.c b/src/mame/drivers/darkhors.c
index c2e0176f7d4..b3f6dff8533 100644
--- a/src/mame/drivers/darkhors.c
+++ b/src/mame/drivers/darkhors.c
@@ -97,7 +97,7 @@ public:
***************************************************************************/
static VIDEO_START( darkhors );
-static SCREEN_UPDATE( darkhors );
+static SCREEN_UPDATE_IND16( darkhors );
static TILE_GET_INFO( get_tile_info_0 )
@@ -129,7 +129,7 @@ static WRITE32_HANDLER( darkhors_tmapram2_w )
tilemap_mark_tile_dirty(state->m_tmap2, offset);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
darkhors_state *state = machine.driver_data<darkhors_state>();
UINT32 *s = state->m_spriteram;
@@ -179,7 +179,7 @@ static VIDEO_START( darkhors )
machine.gfx[0]->color_granularity = 64; /* 256 colour sprites with palette selectable on 64 colour boundaries */
}
-static SCREEN_UPDATE( darkhors )
+static SCREEN_UPDATE_IND16( darkhors )
{
darkhors_state *state = screen.machine().driver_data<darkhors_state>();
int layers_ctrl = -1;
@@ -665,10 +665,9 @@ static MACHINE_CONFIG_START( darkhors, darkhors_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x190, 0x100+16)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE(darkhors)
+ MCFG_SCREEN_UPDATE_STATIC(darkhors)
MCFG_GFXDECODE(darkhors)
MCFG_PALETTE_LENGTH(0x10000)
@@ -700,7 +699,7 @@ static VIDEO_START(jclub2)
}
-static SCREEN_UPDATE(jclub2)
+static SCREEN_UPDATE_IND16(jclub2)
{
return 0;
}
@@ -716,10 +715,9 @@ static MACHINE_CONFIG_START( jclub2, darkhors_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x190, 0x100+16)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE(jclub2)
+ MCFG_SCREEN_UPDATE_STATIC(jclub2)
MCFG_GFXDECODE(jclub2)
MCFG_PALETTE_LENGTH(0x10000)
@@ -756,7 +754,7 @@ static VIDEO_START(jclub2o)
}
-static SCREEN_UPDATE(jclub2o)
+static SCREEN_UPDATE_IND16(jclub2o)
{
return 0;
}
@@ -776,10 +774,9 @@ static MACHINE_CONFIG_START( jclub2o, darkhors_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x190, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
- MCFG_SCREEN_UPDATE(jclub2o)
+ MCFG_SCREEN_UPDATE_STATIC(jclub2o)
MCFG_GFXDECODE(jclub2)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c
index f9c0a4e6f3a..706f64b6db3 100644
--- a/src/mame/drivers/darkmist.c
+++ b/src/mame/drivers/darkmist.c
@@ -241,10 +241,9 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(darkmist)
+ MCFG_SCREEN_UPDATE_STATIC(darkmist)
MCFG_GFXDECODE(darkmist)
MCFG_PALETTE_INIT(darkmist)
diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c
index b3eb26fee04..ee6c56cceef 100644
--- a/src/mame/drivers/darkseal.c
+++ b/src/mame/drivers/darkseal.c
@@ -274,10 +274,9 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(darkseal)
+ MCFG_SCREEN_UPDATE_STATIC(darkseal)
MCFG_GFXDECODE(darkseal)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c
index 3689682d4b0..9ccd71ec95e 100644
--- a/src/mame/drivers/dassault.c
+++ b/src/mame/drivers/dassault.c
@@ -590,10 +590,9 @@ static MACHINE_CONFIG_START( dassault, dassault_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(dassault)
+ MCFG_SCREEN_UPDATE_STATIC(dassault)
MCFG_GFXDECODE(dassault)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c
index 0f57d6f4025..dd95d3ec6fb 100644
--- a/src/mame/drivers/dblewing.c
+++ b/src/mame/drivers/dblewing.c
@@ -93,7 +93,7 @@ UINT16 dblwings_pri_callback(UINT16 x)
-static SCREEN_UPDATE(dblewing)
+static SCREEN_UPDATE_IND16(dblewing)
{
dblewing_state *state = screen.machine().driver_data<dblewing_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -106,7 +106,7 @@ static SCREEN_UPDATE(dblewing)
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(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
return 0;
}
@@ -652,10 +652,9 @@ static MACHINE_CONFIG_START( dblewing, dblewing_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(dblewing)
+ MCFG_SCREEN_UPDATE_STATIC(dblewing)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(dblewing)
diff --git a/src/mame/drivers/dbz.c b/src/mame/drivers/dbz.c
index d367eb0bf86..cf049bb9341 100644
--- a/src/mame/drivers/dbz.c
+++ b/src/mame/drivers/dbz.c
@@ -396,10 +396,9 @@ static MACHINE_CONFIG_START( dbz, dbz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 40*8)
MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(dbz)
+ MCFG_SCREEN_UPDATE_STATIC(dbz)
MCFG_GFXDECODE(dbz)
diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c
index 436cb1399fe..79444be3597 100644
--- a/src/mame/drivers/dcheese.c
+++ b/src/mame/drivers/dcheese.c
@@ -429,10 +429,9 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(dcheese)
+ MCFG_SCREEN_UPDATE_STATIC(dcheese)
MCFG_PALETTE_LENGTH(65534)
diff --git a/src/mame/drivers/dcon.c b/src/mame/drivers/dcon.c
index 3845a9464d8..b851a824cac 100644
--- a/src/mame/drivers/dcon.c
+++ b/src/mame/drivers/dcon.c
@@ -258,10 +258,9 @@ static MACHINE_CONFIG_START( dcon, dcon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(dcon)
+ MCFG_SCREEN_UPDATE_STATIC(dcon)
MCFG_GFXDECODE(dcon)
MCFG_PALETTE_LENGTH(2048)
@@ -287,10 +286,9 @@ static MACHINE_CONFIG_START( sdgndmps, dcon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(sdgndmps)
+ MCFG_SCREEN_UPDATE_STATIC(sdgndmps)
MCFG_GFXDECODE(dcon)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dday.c b/src/mame/drivers/dday.c
index 38706d62a8e..95a9a0da262 100644
--- a/src/mame/drivers/dday.c
+++ b/src/mame/drivers/dday.c
@@ -267,12 +267,11 @@ static MACHINE_CONFIG_START( dday, dday_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(dday)
+ MCFG_SCREEN_UPDATE_STATIC(dday)
MCFG_GFXDECODE(dday)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ddayjlc.c b/src/mame/drivers/ddayjlc.c
index ba65d2d4479..2110a4b420e 100644
--- a/src/mame/drivers/ddayjlc.c
+++ b/src/mame/drivers/ddayjlc.c
@@ -380,7 +380,7 @@ static VIDEO_START( ddayjlc )
state->m_bg_tilemap = tilemap_create(machine, get_tile_info_bg, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( ddayjlc )
+static SCREEN_UPDATE_IND16( ddayjlc )
{
ddayjlc_state *state = screen.machine().driver_data<ddayjlc_state>();
UINT32 i;
@@ -526,10 +526,9 @@ static MACHINE_CONFIG_START( ddayjlc, ddayjlc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ddayjlc)
+ MCFG_SCREEN_UPDATE_STATIC(ddayjlc)
MCFG_GFXDECODE(ddayjlc)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ddealer.c b/src/mame/drivers/ddealer.c
index 7a44e206d1b..f1db51d2d40 100644
--- a/src/mame/drivers/ddealer.c
+++ b/src/mame/drivers/ddealer.c
@@ -166,7 +166,7 @@ static VIDEO_START( ddealer )
state->m_back_tilemap = tilemap_create(machine, get_back_tile_info, tilemap_scan_cols, 8, 8, 64, 32);
}
-static void ddealer_draw_video_layer( running_machine &machine, UINT16* vreg_base, UINT16* top, UINT16* bottom, bitmap_t &bitmap, const rectangle &cliprect, int flipy)
+static void ddealer_draw_video_layer( running_machine &machine, UINT16* vreg_base, UINT16* top, UINT16* bottom, bitmap_ind16 &bitmap, const rectangle &cliprect, int flipy)
{
const gfx_element *gfx = machine.gfx[1];
@@ -249,7 +249,7 @@ static void ddealer_draw_video_layer( running_machine &machine, UINT16* vreg_bas
}
-static SCREEN_UPDATE( ddealer )
+static SCREEN_UPDATE_IND16( ddealer )
{
ddealer_state *state = screen.machine().driver_data<ddealer_state>();
tilemap_set_scrollx(state->m_back_tilemap, 0, state->m_flipscreen ? -192 : -64);
@@ -630,10 +630,9 @@ static MACHINE_CONFIG_START( ddealer, ddealer_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ddealer)
+ MCFG_SCREEN_UPDATE_STATIC(ddealer)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index 61b322e26a7..aa7b88ecf6f 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -1267,7 +1267,7 @@ static READ16_HANDLER( ddenlovr_gfxrom_r )
}
-static void copylayer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer )
+static void copylayer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
{
dynax_state *state = machine.driver_data<dynax_state>();
int x,y;
@@ -1301,7 +1301,7 @@ static void copylayer(running_machine &machine, bitmap_t &bitmap, const rectangl
}
}
-SCREEN_UPDATE(ddenlovr)
+SCREEN_UPDATE_IND16(ddenlovr)
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
@@ -7809,10 +7809,9 @@ static MACHINE_CONFIG_START( ddenlovr, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -7935,10 +7934,9 @@ static MACHINE_CONFIG_START( quizchq, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8027,10 +8025,9 @@ static MACHINE_CONFIG_START( mmpanic, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8112,10 +8109,9 @@ static MACHINE_CONFIG_START( hanakanz, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
@@ -8531,10 +8527,9 @@ static MACHINE_CONFIG_START( jongtei, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
@@ -8573,10 +8568,9 @@ static MACHINE_CONFIG_START( sryudens, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
@@ -8619,10 +8613,9 @@ static MACHINE_CONFIG_START( daimyojn, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7922) // HSync 15.4248kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
- MCFG_SCREEN_UPDATE(ddenlovr)
+ MCFG_SCREEN_UPDATE_STATIC(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index d3123b7d732..793ffab4daa 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -997,9 +997,8 @@ static MACHINE_CONFIG_START( ddragon, ddragon_state )
MCFG_PALETTE_LENGTH(384)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_VIDEO_START(ddragon)
@@ -1061,9 +1060,8 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state )
MCFG_PALETTE_LENGTH(384)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_VIDEO_START(ddragon)
@@ -1108,9 +1106,8 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state )
MCFG_PALETTE_LENGTH(384)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
- MCFG_SCREEN_UPDATE(ddragon)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon)
MCFG_VIDEO_START(ddragon)
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index 8fb6eea409f..efdeb950b10 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -605,9 +605,8 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE(ddragon3)
+ MCFG_SCREEN_UPDATE_STATIC(ddragon3)
MCFG_GFXDECODE(ddragon3)
MCFG_PALETTE_LENGTH(768)
@@ -642,7 +641,7 @@ static MACHINE_CONFIG_DERIVED( ctribe, ddragon3 )
MCFG_CPU_PROGRAM_MAP(ctribe_sound_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ctribe)
+ MCFG_SCREEN_UPDATE_STATIC(ctribe)
MCFG_SOUND_MODIFY("ym2151")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.20)
diff --git a/src/mame/drivers/ddribble.c b/src/mame/drivers/ddribble.c
index 6bafcc78a1c..2c83402d152 100644
--- a/src/mame/drivers/ddribble.c
+++ b/src/mame/drivers/ddribble.c
@@ -305,12 +305,11 @@ static MACHINE_CONFIG_START( ddribble, ddribble_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
/* MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) */
- MCFG_SCREEN_UPDATE(ddribble)
+ MCFG_SCREEN_UPDATE_STATIC(ddribble)
MCFG_GFXDECODE(ddribble)
MCFG_PALETTE_LENGTH(64 + 256)
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index 9709e85c9d9..5999de119d0 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -34,7 +34,7 @@ static VIDEO_START(ddz)
}
-static SCREEN_UPDATE(ddz)
+static SCREEN_UPDATE_RGB32(ddz)
{
return 0;
}
@@ -72,10 +72,9 @@ static MACHINE_CONFIG_START( ddz, ddz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(ddz)
+ MCFG_SCREEN_UPDATE_STATIC(ddz)
MCFG_SCREEN_EOF(ddz)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c
index 53abb6fac4c..ccf4e488d50 100644
--- a/src/mame/drivers/deadang.c
+++ b/src/mame/drivers/deadang.c
@@ -251,10 +251,9 @@ static MACHINE_CONFIG_START( deadang, deadang_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(deadang)
+ MCFG_SCREEN_UPDATE_STATIC(deadang)
MCFG_GFXDECODE(deadang)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dec0.c b/src/mame/drivers/dec0.c
index e3bec07b3ee..984eca364f1 100644
--- a/src/mame/drivers/dec0.c
+++ b/src/mame/drivers/dec0.c
@@ -1437,9 +1437,8 @@ static MACHINE_CONFIG_DERIVED( automat, dec0_base )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(DEC0_PIXEL_CLOCK,DEC0_HTOTAL,DEC0_HBEND,DEC0_HBSTART,DEC0_VTOTAL,DEC0_VBEND,DEC0_VBSTART)
- MCFG_SCREEN_UPDATE(robocop)
+ MCFG_SCREEN_UPDATE_STATIC(robocop)
MCFG_GFXDECODE(automat)
@@ -1481,11 +1480,10 @@ static MACHINE_CONFIG_DERIVED( hbarrel, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
//MCFG_SCREEN_REFRESH_RATE(57.41)
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(hbarrel)
+ MCFG_SCREEN_UPDATE_STATIC(hbarrel)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( baddudes, dec0_base_sound )
@@ -1502,11 +1500,10 @@ static MACHINE_CONFIG_DERIVED( baddudes, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(baddudes)
+ MCFG_SCREEN_UPDATE_STATIC(baddudes)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( birdtry, dec0_base_sound )
@@ -1523,11 +1520,10 @@ static MACHINE_CONFIG_DERIVED( birdtry, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(birdtry)
+ MCFG_SCREEN_UPDATE_STATIC(birdtry)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( robocop, dec0_base_sound )
@@ -1549,11 +1545,10 @@ static MACHINE_CONFIG_DERIVED( robocop, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(robocop)
+ MCFG_SCREEN_UPDATE_STATIC(robocop)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( robocopb, dec0_base_sound )
@@ -1570,11 +1565,10 @@ static MACHINE_CONFIG_DERIVED( robocopb, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(robocop)
+ MCFG_SCREEN_UPDATE_STATIC(robocop)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hippodrm, dec0_base_sound )
@@ -1596,11 +1590,10 @@ static MACHINE_CONFIG_DERIVED( hippodrm, dec0_base_sound )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(hippodrm)
+ MCFG_SCREEN_UPDATE_STATIC(hippodrm)
MACHINE_CONFIG_END
static MACHINE_RESET( slyspy )
@@ -1623,11 +1616,10 @@ static MACHINE_CONFIG_DERIVED( slyspy, dec0_base_sound_alt )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(slyspy)
+ MCFG_SCREEN_UPDATE_STATIC(slyspy)
MCFG_VIDEO_START(dec0_nodma)
@@ -1651,11 +1643,10 @@ static MACHINE_CONFIG_DERIVED( secretab, dec0_base_sound_alt )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(robocop)
+ MCFG_SCREEN_UPDATE_STATIC(robocop)
MCFG_GFXDECODE(secretab)
MCFG_VIDEO_START(dec0_nodma)
@@ -1675,11 +1666,10 @@ static MACHINE_CONFIG_DERIVED( midres, dec0_base_sound_alt )
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(midres)
+ MCFG_SCREEN_UPDATE_STATIC(midres)
MCFG_GFXDECODE(midres)
MCFG_VIDEO_START(dec0_nodma)
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index 8c074631cad..ca0534b4eaa 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -2020,10 +2020,9 @@ static MACHINE_CONFIG_START( cobracom, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cobracom)
+ MCFG_SCREEN_UPDATE_STATIC(cobracom)
MCFG_GFXDECODE(cobracom)
MCFG_PALETTE_LENGTH(256)
@@ -2073,10 +2072,9 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(ghostb)
+ MCFG_SCREEN_UPDATE_STATIC(ghostb)
MCFG_SCREEN_EOF(dec8)
MCFG_GFXDECODE(ghostb)
@@ -2130,10 +2128,9 @@ static MACHINE_CONFIG_START( oscar, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(oscar)
+ MCFG_SCREEN_UPDATE_STATIC(oscar)
MCFG_GFXDECODE(oscar)
MCFG_PALETTE_LENGTH(512)
@@ -2175,10 +2172,9 @@ static MACHINE_CONFIG_START( srdarwin, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(srdarwin)
+ MCFG_SCREEN_UPDATE_STATIC(srdarwin)
MCFG_GFXDECODE(srdarwin)
MCFG_PALETTE_LENGTH(144)
@@ -2225,10 +2221,9 @@ static MACHINE_CONFIG_START( gondo, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(gondo)
+ MCFG_SCREEN_UPDATE_STATIC(gondo)
MCFG_SCREEN_EOF(dec8)
MCFG_GFXDECODE(gondo)
@@ -2276,10 +2271,9 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(lastmisn)
+ MCFG_SCREEN_UPDATE_STATIC(lastmisn)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2326,10 +2320,9 @@ static MACHINE_CONFIG_START( shackled, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(shackled)
+ MCFG_SCREEN_UPDATE_STATIC(shackled)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2377,10 +2370,9 @@ static MACHINE_CONFIG_START( csilver, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(lastmisn)
+ MCFG_SCREEN_UPDATE_STATIC(lastmisn)
MCFG_GFXDECODE(shackled)
MCFG_PALETTE_LENGTH(1024)
@@ -2428,10 +2420,9 @@ static MACHINE_CONFIG_START( garyoret, dec8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(garyoret)
+ MCFG_SCREEN_UPDATE_STATIC(garyoret)
MCFG_SCREEN_EOF(dec8)
MCFG_GFXDECODE(gondo)
diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c
index d154ddd450d..19fe92fc885 100644
--- a/src/mame/drivers/deco156.c
+++ b/src/mame/drivers/deco156.c
@@ -56,7 +56,7 @@ static VIDEO_START( wcvol95 )
}
-static SCREEN_UPDATE( wcvol95 )
+static SCREEN_UPDATE_RGB32( wcvol95 )
{
//FIXME: flip_screen_x should not be written!
flip_screen_set_no_update(screen.machine(), 1);
@@ -69,7 +69,7 @@ static SCREEN_UPDATE( wcvol95 )
deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->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(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x800);
+ 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);
return 0;
}
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( hvysmsh, deco156_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(wcvol95)
+ MCFG_SCREEN_UPDATE_STATIC(wcvol95)
MCFG_GFXDECODE(hvysmsh)
MCFG_PALETTE_LENGTH(1024)
@@ -389,10 +388,9 @@ static MACHINE_CONFIG_START( wcvol95, deco156_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(wcvol95)
+ MCFG_SCREEN_UPDATE_STATIC(wcvol95)
MCFG_GFXDECODE(hvysmsh)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index 8f4ed88ff24..1ea7b0bec03 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -1768,10 +1768,9 @@ static MACHINE_CONFIG_START( captaven, deco32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(captaven)
+ MCFG_SCREEN_UPDATE_STATIC(captaven)
MCFG_SCREEN_EOF(captaven)
MCFG_GFXDECODE(captaven)
@@ -1820,10 +1819,9 @@ static MACHINE_CONFIG_START( fghthist, deco32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(fghthist)
+ MCFG_SCREEN_UPDATE_STATIC(fghthist)
MCFG_GFXDECODE(fghthist)
MCFG_PALETTE_LENGTH(2048)
@@ -1867,10 +1865,9 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(fghthist)
+ MCFG_SCREEN_UPDATE_STATIC(fghthist)
MCFG_GFXDECODE(fghthist)
MCFG_PALETTE_LENGTH(2048)
@@ -1983,10 +1980,9 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(dragngun)
+ MCFG_SCREEN_UPDATE_STATIC(dragngun)
MCFG_SCREEN_EOF(dragngun)
MCFG_DECO16IC_ADD("tilegen1", dragngun_deco16ic_tilegen1_intf)
@@ -2057,10 +2053,9 @@ static MACHINE_CONFIG_START( lockload, dragngun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(dragngun)
+ MCFG_SCREEN_UPDATE_STATIC(dragngun)
MCFG_SCREEN_EOF(dragngun)
MCFG_DECO16IC_ADD("tilegen1", lockload_deco16ic_tilegen1_intf)
@@ -2136,11 +2131,10 @@ static MACHINE_CONFIG_START( tattass, deco32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(nslasher)
+ MCFG_SCREEN_UPDATE_STATIC(nslasher)
MCFG_DECO16IC_ADD("tilegen1", tattass_deco16ic_tilegen1_intf)
MCFG_DECO16IC_ADD("tilegen2", tattass_deco16ic_tilegen2_intf)
@@ -2177,10 +2171,9 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(nslasher)
+ MCFG_SCREEN_UPDATE_STATIC(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 347905b9cc8..0c481bf68e7 100644
--- a/src/mame/drivers/deco_ld.c
+++ b/src/mame/drivers/deco_ld.c
@@ -104,25 +104,26 @@ Sound processor - 6502
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "sound/ay8910.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
class deco_ld_state : public driver_device
{
public:
deco_ld_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
UINT8 *m_videoram;
UINT8 m_vram_bank;
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 m_laserdisc_data;
int m_nmimask;
};
-static SCREEN_UPDATE( rblaster )
+static SCREEN_UPDATE_IND16( rblaster )
{
deco_ld_state *state = screen.machine().driver_data<deco_ld_state>();
UINT8 *videoram = state->m_videoram;
@@ -163,7 +164,7 @@ static WRITE8_HANDLER( rblaster_vram_bank_w )
static READ8_HANDLER( laserdisc_r )
{
deco_ld_state *state = space->machine().driver_data<deco_ld_state>();
- UINT8 result = laserdisc_data_r(state->m_laserdisc);
+ UINT8 result = state->m_laserdisc->status_r();
// mame_printf_debug("laserdisc_r = %02X\n", result);
return result;
}
@@ -510,8 +511,6 @@ GFXDECODE_END
static MACHINE_START( rblaster )
{
- deco_ld_state *state = machine.driver_data<deco_ld_state>();
- state->m_laserdisc = machine.device("laserdisc");
}
static MACHINE_CONFIG_START( rblaster, deco_ld_state )
@@ -527,11 +526,11 @@ static MACHINE_CONFIG_START( rblaster, deco_ld_state )
// MCFG_CPU_VBLANK_INT("screen",irq0_line_hold) //test
MCFG_CPU_PERIODIC_INT(sound_interrupt, 640)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound") //Sony LDP-1000A, is it truly compatible with the Pioneer?
- MCFG_LASERDISC_OVERLAY(rblaster, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc") //Sony LDP-1000A, is it truly compatible with the Pioneer?
+ MCFG_LASERDISC_OVERLAY(256, 256, rblaster)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE(rblaster)
MCFG_PALETTE_LENGTH(512)
MCFG_MACHINE_START(rblaster)
@@ -544,7 +543,7 @@ static MACHINE_CONFIG_START( rblaster, deco_ld_state )
MCFG_SOUND_ADD("ay2", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c
index 136302021a2..40e54f12695 100644
--- a/src/mame/drivers/deco_mlc.c
+++ b/src/mame/drivers/deco_mlc.c
@@ -393,10 +393,9 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mlc)
+ MCFG_SCREEN_UPDATE_STATIC(mlc)
MCFG_SCREEN_EOF(mlc)
MCFG_GFXDECODE(deco_mlc)
@@ -426,10 +425,9 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mlc)
+ MCFG_SCREEN_UPDATE_STATIC(mlc)
MCFG_SCREEN_EOF(mlc)
MCFG_GFXDECODE(deco_mlc)
diff --git a/src/mame/drivers/decocass.c b/src/mame/drivers/decocass.c
index bbeec6dd82a..0d4498432ff 100644
--- a/src/mame/drivers/decocass.c
+++ b/src/mame/drivers/decocass.c
@@ -650,9 +650,8 @@ static MACHINE_CONFIG_START( decocass, decocass_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
- MCFG_SCREEN_UPDATE(decocass)
+ MCFG_SCREEN_UPDATE_STATIC(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 912e44d0b1c..7d78280068b 100644
--- a/src/mame/drivers/deniam.c
+++ b/src/mame/drivers/deniam.c
@@ -285,11 +285,10 @@ static MACHINE_CONFIG_START( deniam16b, deniam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(deniam)
+ MCFG_SCREEN_UPDATE_STATIC(deniam)
MCFG_GFXDECODE(deniam)
MCFG_PALETTE_LENGTH(2048)
@@ -321,11 +320,10 @@ static MACHINE_CONFIG_START( deniam16c, deniam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(deniam)
+ MCFG_SCREEN_UPDATE_STATIC(deniam)
MCFG_GFXDECODE(deniam)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/deshoros.c b/src/mame/drivers/deshoros.c
index 2ee9db19111..7b9df43f60e 100644
--- a/src/mame/drivers/deshoros.c
+++ b/src/mame/drivers/deshoros.c
@@ -39,7 +39,7 @@ static VIDEO_START( deshoros )
state->m_led_array[20] = 0;
}
-static SCREEN_UPDATE( deshoros )
+static SCREEN_UPDATE_IND16( deshoros )
{
deshoros_state *state = screen.machine().driver_data<deshoros_state>();
popmessage("%s",state->m_led_array);
@@ -183,10 +183,9 @@ static MACHINE_CONFIG_START( deshoros, deshoros_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(48*8, 16*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*8-1)
- MCFG_SCREEN_UPDATE(deshoros)
+ MCFG_SCREEN_UPDATE_STATIC(deshoros)
MCFG_PALETTE_LENGTH(16)
MCFG_VIDEO_START(deshoros)
diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c
index 8f115abe848..0fbcfc800c1 100644
--- a/src/mame/drivers/destroyr.c
+++ b/src/mame/drivers/destroyr.c
@@ -42,7 +42,7 @@ public:
};
-static SCREEN_UPDATE( destroyr )
+static SCREEN_UPDATE_IND16( destroyr )
{
destroyr_state *state = screen.machine().driver_data<destroyr_state>();
int i, j;
@@ -454,10 +454,9 @@ static MACHINE_CONFIG_START( destroyr, destroyr_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(destroyr)
+ MCFG_SCREEN_UPDATE_STATIC(destroyr)
MCFG_GFXDECODE(destroyr)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/dfruit.c b/src/mame/drivers/dfruit.c
index ce7d86d0d3f..606f461f2a6 100644
--- a/src/mame/drivers/dfruit.c
+++ b/src/mame/drivers/dfruit.c
@@ -25,7 +25,7 @@ static VIDEO_START( dfruit )
}
-static SCREEN_UPDATE( dfruit )
+static SCREEN_UPDATE_IND16( dfruit )
{
return 0;
}
@@ -123,10 +123,9 @@ static MACHINE_CONFIG_START( dfruit, dfruit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(dfruit)
+ MCFG_SCREEN_UPDATE_STATIC(dfruit)
MCFG_GFXDECODE( dfruit )
diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c
index 537f4aaf63c..50fcfc77e84 100644
--- a/src/mame/drivers/dgpix.c
+++ b/src/mame/drivers/dgpix.c
@@ -285,7 +285,7 @@ static VIDEO_START( dgpix )
state->m_vram = auto_alloc_array(machine, UINT32, 0x40000*2/4);
}
-static SCREEN_UPDATE( dgpix )
+static SCREEN_UPDATE_IND16( dgpix )
{
dgpix_state *state = screen.machine().driver_data<dgpix_state>();
int y;
@@ -336,10 +336,9 @@ static MACHINE_CONFIG_START( dgpix, dgpix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(dgpix)
+ MCFG_SCREEN_UPDATE_STATIC(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 02e9d5367af..54f7c8609f2 100644
--- a/src/mame/drivers/dietgo.c
+++ b/src/mame/drivers/dietgo.c
@@ -220,10 +220,9 @@ static MACHINE_CONFIG_START( dietgo, dietgo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(dietgo)
+ MCFG_SCREEN_UPDATE_STATIC(dietgo)
MCFG_PALETTE_LENGTH(1024)
MCFG_GFXDECODE(dietgo)
diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c
index 72d57aaf747..f61171e4bb4 100644
--- a/src/mame/drivers/discoboy.c
+++ b/src/mame/drivers/discoboy.c
@@ -76,7 +76,7 @@ static VIDEO_START( discoboy )
{
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
discoboy_state *state = machine.driver_data<discoboy_state>();
int flipscreen = 0;
@@ -124,7 +124,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static SCREEN_UPDATE( discoboy )
+static SCREEN_UPDATE_IND16( discoboy )
{
discoboy_state *state = screen.machine().driver_data<discoboy_state>();
UINT16 x, y;
@@ -503,12 +503,11 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(8*8, 512-1-8*8, 0+8, 256-1-8)
- MCFG_SCREEN_UPDATE(discoboy)
+ MCFG_SCREEN_UPDATE_STATIC(discoboy)
MCFG_GFXDECODE(discoboy)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c
index e2f97cb64ca..a65db5687bb 100644
--- a/src/mame/drivers/diverboy.c
+++ b/src/mame/drivers/diverboy.c
@@ -73,7 +73,7 @@ static VIDEO_START(diverboy)
{
}
-static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
diverboy_state *state = machine.driver_data<diverboy_state>();
UINT16 *source = state->m_spriteram;
@@ -109,7 +109,7 @@ static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE(diverboy)
+static SCREEN_UPDATE_IND16(diverboy)
{
// bitmap.fill(get_black_pen(screen.machine()), cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
@@ -265,10 +265,9 @@ static MACHINE_CONFIG_START( diverboy, diverboy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(diverboy)
+ MCFG_SCREEN_UPDATE_STATIC(diverboy)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/djboy.c b/src/mame/drivers/djboy.c
index e2840b776fa..f15557de31f 100644
--- a/src/mame/drivers/djboy.c
+++ b/src/mame/drivers/djboy.c
@@ -611,10 +611,9 @@ static MACHINE_CONFIG_START( djboy, djboy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(djboy)
+ MCFG_SCREEN_UPDATE_STATIC(djboy)
MCFG_SCREEN_EOF(djboy)
MCFG_GFXDECODE(djboy)
diff --git a/src/mame/drivers/djmain.c b/src/mame/drivers/djmain.c
index 8c7af5562c2..e11788010ba 100644
--- a/src/mame/drivers/djmain.c
+++ b/src/mame/drivers/djmain.c
@@ -1494,10 +1494,9 @@ static MACHINE_CONFIG_START( djmain, djmain_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(12, 512-12-1, 0, 384-1)
- MCFG_SCREEN_UPDATE(djmain)
+ MCFG_SCREEN_UPDATE_STATIC(djmain)
MCFG_PALETTE_LENGTH(0x4440/4)
MCFG_GFXDECODE(djmain)
diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c
index de7550fd8b3..243676acfb0 100644
--- a/src/mame/drivers/dkong.c
+++ b/src/mame/drivers/dkong.c
@@ -1688,9 +1688,8 @@ static MACHINE_CONFIG_START( dkong_base, dkong_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(dkong)
+ MCFG_SCREEN_UPDATE_STATIC(dkong)
MCFG_GFXDECODE(dkong)
MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
@@ -1752,9 +1751,8 @@ static MACHINE_CONFIG_START( dkong3, dkong_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(dkong)
+ MCFG_SCREEN_UPDATE_STATIC(dkong)
MCFG_GFXDECODE(dkong)
MCFG_PALETTE_LENGTH(DK3_PALETTE_LENGTH)
@@ -1782,7 +1780,7 @@ static MACHINE_CONFIG_DERIVED( pestplce, dkongjr )
MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
MCFG_PALETTE_INIT(dkong2b) /* wrong! */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(pestplce)
+ MCFG_SCREEN_UPDATE_STATIC(pestplce)
MACHINE_CONFIG_END
@@ -1820,7 +1818,7 @@ static MACHINE_CONFIG_DERIVED( spclforc, s2650 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(spclforc)
+ MCFG_SCREEN_UPDATE_STATIC(spclforc)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c
index 13506051f42..c479801b196 100644
--- a/src/mame/drivers/dlair.c
+++ b/src/mame/drivers/dlair.c
@@ -36,7 +36,8 @@
#include "cpu/z80/z80.h"
#include "render.h"
#include "cpu/z80/z80daisy.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
+#include "machine/ldstub.h"
#include "machine/z80ctc.h"
#include "machine/z80sio.h"
#include "sound/ay8910.h"
@@ -48,12 +49,55 @@ class dlair_state : public driver_device
{
public:
dlair_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_ldv1000(*this, "ld_ldv1000"),
+ m_pr7820(*this, "ld_pr7820"),
+ m_22vp932(*this, "ld_22vp932") { }
+
+ void laserdisc_data_w(UINT8 data)
+ {
+ if (m_ldv1000 != NULL) m_ldv1000->data_w(data);
+ if (m_pr7820 != NULL) m_pr7820->data_w(data);
+ if (m_22vp932 != NULL) m_22vp932->data_w(data);
+ }
+
+ void laserdisc_enter_w(UINT8 data)
+ {
+ if (m_pr7820 != NULL) m_pr7820->enter_w(data);
+ if (m_22vp932 != NULL) m_22vp932->enter_w(data);
+ }
+
+ UINT8 laserdisc_data_r()
+ {
+ if (m_ldv1000 != NULL) return m_ldv1000->status_r();
+ if (m_pr7820 != NULL) return m_pr7820->data_r();
+ if (m_22vp932 != NULL) return m_22vp932->data_r();
+ return 0;
+ }
+
+ UINT8 laserdisc_data_available_r()
+ {
+ return CLEAR_LINE;
+ }
+
+ UINT8 laserdisc_status_r()
+ {
+ if (m_ldv1000 != NULL) return m_ldv1000->status_strobe_r();
+ return CLEAR_LINE;
+ }
+
+ UINT8 laserdisc_ready_r()
+ {
+ if (m_ldv1000 != NULL) return m_ldv1000->command_strobe_r();
+ if (m_pr7820 != NULL) return m_pr7820->ready_r();
+ return CLEAR_LINE;
+ }
UINT8 *m_videoram;
- device_t *m_laserdisc;
+ optional_device<pioneer_ldv1000_device> m_ldv1000;
+ optional_device<pioneer_pr7820_device> m_pr7820;
+ optional_device<phillips_22vp932_device> m_22vp932;
UINT8 m_last_misc;
- UINT8 m_laserdisc_type;
UINT8 m_laserdisc_data;
};
@@ -69,9 +113,6 @@ public:
#define MASTER_CLOCK_US 16000000
#define MASTER_CLOCK_EURO 14318180
-#define LASERDISC_TYPE_FIXED 0
-#define LASERDISC_TYPE_VARIABLE 1
-
/*************************************
@@ -102,7 +143,7 @@ static void dleuro_interrupt(device_t *device, int state)
static WRITE8_DEVICE_HANDLER( serial_transmit )
{
dlair_state *state = device->machine().driver_data<dlair_state>();
- laserdisc_data_w(state->m_laserdisc, data);
+ state->laserdisc_data_w(data);
}
@@ -110,8 +151,8 @@ static int serial_receive(device_t *device, int channel)
{
dlair_state *state = device->machine().driver_data<dlair_state>();
/* if we still have data to send, do it now */
- if (channel == 0 && laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
- return laserdisc_data_r(state->m_laserdisc);
+ if (channel == 0 && state->laserdisc_data_available_r() == ASSERT_LINE)
+ return state->laserdisc_data_r();
return -1;
}
@@ -172,7 +213,7 @@ static PALETTE_INIT( dleuro )
*
*************************************/
-static SCREEN_UPDATE( dleuro )
+static SCREEN_UPDATE_IND16( dleuro )
{
dlair_state *state = screen.machine().driver_data<dlair_state>();
UINT8 *videoram = state->m_videoram;
@@ -199,20 +240,21 @@ static SCREEN_UPDATE( dleuro )
static MACHINE_START( dlair )
{
- dlair_state *state = machine.driver_data<dlair_state>();
- state->m_laserdisc = machine.device<device_t>("laserdisc");
}
static MACHINE_RESET( dlair )
{
+#if 0
dlair_state *state = machine.driver_data<dlair_state>();
+
/* determine the laserdisc player from the DIP switches */
if (state->m_laserdisc_type == LASERDISC_TYPE_VARIABLE)
{
int newtype = (input_port_read(machine, "DSW2") & 0x08) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
laserdisc_set_type(state->m_laserdisc, newtype);
}
+#endif
}
@@ -260,10 +302,10 @@ static WRITE8_HANDLER( misc_w )
/* on bit 5 going low, push the data out to the laserdisc player */
if ((diff & 0x20) && !(data & 0x20))
- laserdisc_data_w(state->m_laserdisc, state->m_laserdisc_data);
+ state->laserdisc_data_w(state->m_laserdisc_data);
/* on bit 6 going low, we need to signal enter */
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
+ state->laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
}
@@ -288,10 +330,10 @@ static WRITE8_HANDLER( dleuro_misc_w )
/* on bit 5 going low, push the data out to the laserdisc player */
if ((diff & 0x20) && !(data & 0x20))
- laserdisc_data_w(state->m_laserdisc, state->m_laserdisc_data);
+ state->laserdisc_data_w(state->m_laserdisc_data);
/* on bit 6 going low, we need to signal enter */
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
+ state->laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
}
@@ -317,43 +359,21 @@ static WRITE8_HANDLER( led_den2_w )
static CUSTOM_INPUT( laserdisc_status_r )
{
dlair_state *state = field.machine().driver_data<dlair_state>();
- switch (laserdisc_get_type(state->m_laserdisc))
- {
- case LASERDISC_TYPE_PIONEER_PR7820:
- return 0;
-
- case LASERDISC_TYPE_PIONEER_LDV1000:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
-
- case LASERDISC_TYPE_PHILLIPS_22VP932:
- return 0;
- }
- return 0;
+ return state->laserdisc_status_r();
}
static CUSTOM_INPUT( laserdisc_command_r )
{
dlair_state *state = field.machine().driver_data<dlair_state>();
- switch (laserdisc_get_type(state->m_laserdisc))
- {
- case LASERDISC_TYPE_PIONEER_PR7820:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
-
- case LASERDISC_TYPE_PIONEER_LDV1000:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
-
- case LASERDISC_TYPE_PHILLIPS_22VP932:
- return 0;
- }
- return 0;
+ return (state->laserdisc_ready_r() == ASSERT_LINE) ? 0 : 1;
}
static READ8_HANDLER( laserdisc_r )
{
dlair_state *state = space->machine().driver_data<dlair_state>();
- UINT8 result = laserdisc_data_r(state->m_laserdisc);
+ UINT8 result = state->laserdisc_data_r();
mame_printf_debug("laserdisc_r = %02X\n", result);
return result;
}
@@ -703,29 +723,28 @@ static MACHINE_CONFIG_START( dlair_base, dlair_state )
MCFG_MACHINE_START(dlair)
MCFG_MACHINE_RESET(dlair)
- /* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK_US/8)
MCFG_SOUND_CONFIG(ay8910_config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
-
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dlair_pr7820, dlair_base )
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR7820, "screen", "ldsound")
+ MCFG_LASERDISC_PR7820_ADD("ld_pr7820")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "ld_pr7820")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dlair_ldv1000, dlair_base )
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
+ MCFG_LASERDISC_LDV1000_ADD("ld_ldv1000")
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "ld_ldv1000")
MACHINE_CONFIG_END
@@ -746,11 +765,11 @@ static MACHINE_CONFIG_START( dleuro, dlair_state )
MCFG_MACHINE_START(dlair)
MCFG_MACHINE_RESET(dlair)
- MCFG_LASERDISC_ADD("laserdisc", PHILLIPS_22VP932, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(dleuro, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_22VP932_ADD("ld_22vp932")
+ MCFG_LASERDISC_OVERLAY(256, 256, dleuro)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_PAL("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_PAL("screen", "ld_22vp932")
MCFG_GFXDECODE(dlair)
MCFG_PALETTE_LENGTH(16)
@@ -764,7 +783,7 @@ static MACHINE_CONFIG_START( dleuro, dlair_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("ld_22vp932")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
@@ -784,7 +803,7 @@ ROM_START( dlair ) /* revision F2 */
ROM_LOAD( "dl_f2_u3.bin", 0x4000, 0x2000, CRC(ab514e5b) SHA1(29d1015b951f0f2d4e5257497f3bf007c5e2262c) )
ROM_LOAD( "dl_f2_u4.bin", 0x6000, 0x2000, CRC(f5ec23d2) SHA1(71149e2d359cc5944fbbb53dd7d0c2b42fbc9bb4) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -796,7 +815,7 @@ ROM_START( dlaira ) /* revision A */
ROM_LOAD( "dl_a_u4.bin", 0x6000, 0x2000, CRC(924d12f2) SHA1(05b487e651a4817991dfc2308834b8f2fae918b4) )
ROM_LOAD( "dl_a_u5.bin", 0x8000, 0x2000, CRC(6ec2f9c1) SHA1(0b8026927697a99fe8fa0dd4bd643418779a1d45) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_pr7820" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -808,7 +827,7 @@ ROM_START( dlairb ) /* revision B */
ROM_LOAD( "dl_b_u4.bin", 0x6000, 0x2000, CRC(924d12f2) SHA1(05b487e651a4817991dfc2308834b8f2fae918b4) )
ROM_LOAD( "dl_b_u5.bin", 0x8000, 0x2000, CRC(6ec2f9c1) SHA1(0b8026927697a99fe8fa0dd4bd643418779a1d45) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_pr7820" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -820,7 +839,7 @@ ROM_START( dlairc ) /* revision C */
ROM_LOAD( "dl_c_u4.bin", 0x6000, 0x2000, CRC(924d12f2) SHA1(05b487e651a4817991dfc2308834b8f2fae918b4) )
ROM_LOAD( "dl_c_u5.bin", 0x8000, 0x2000, CRC(6ec2f9c1) SHA1(0b8026927697a99fe8fa0dd4bd643418779a1d45) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_pr7820" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -832,7 +851,7 @@ ROM_START( dlaird ) /* revision D */
ROM_LOAD( "dl_d_u4.bin", 0x6000, 0x2000, CRC(5f7212cb) SHA1(69c34de1bb44b6cd2adc2947d00d8823d3e87130) )
ROM_LOAD( "dl_d_u5.bin", 0x8000, 0x2000, CRC(2b469c89) SHA1(646394b51325ca9163221a43b5af64a8067eb80b) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -843,7 +862,7 @@ ROM_START( dlaire ) /* revision E */
ROM_LOAD( "dl_e_u3.bin", 0x4000, 0x2000, CRC(897bf075) SHA1(d2ff9c2fec37544cfe8fb60273524c6610488502) )
ROM_LOAD( "dl_e_u4.bin", 0x6000, 0x2000, CRC(4ebffba5) SHA1(d04711247ffa88e371ec461465dd75a8158d90bc) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -854,7 +873,7 @@ ROM_START( dlairf ) /* revision F */
ROM_LOAD( "dl_f_u3.bin", 0x4000, 0x2000, CRC(ab514e5b) SHA1(29d1015b951f0f2d4e5257497f3bf007c5e2262c) )
ROM_LOAD( "dl_f_u4.bin", 0x6000, 0x2000, CRC(a817324e) SHA1(1299c83342fc70932f67bda8ae60bace91d66429) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
@@ -868,7 +887,7 @@ ROM_START( dleuro ) /* European Atari version */
ROM_REGION( 0x2000, "gfx1", 0 )
ROM_LOAD( "elu33.bin", 0x0000, 0x2000, CRC(e7506d96) SHA1(610ae25bd8db13b18b9e681e855ffa978043255b) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_22vp932" )
DISK_IMAGE_READONLY( "dleuro", 0, NO_DUMP )
ROM_END
@@ -882,7 +901,7 @@ ROM_START( dlital ) /* Italian Sidam version */
ROM_REGION( 0x2000, "gfx1", 0 )
ROM_LOAD( "dlita33.bin", 0x0000, 0x2000, CRC(e7506d96) SHA1(610ae25bd8db13b18b9e681e855ffa978043255b) ) /* Label: ELU 33 REV.B */
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_22vp932" )
DISK_IMAGE_READONLY( "dleuro", 0, NO_DUMP )
ROM_END
@@ -895,11 +914,11 @@ ROM_START( spaceace ) /* revision A3 */
ROM_LOAD( "sa_a3_u4.bin", 0x6000, 0x2000, CRC(57db2a79) SHA1(5286905d9bde697845a98bd77f31f2a96a8874fc) )
ROM_LOAD( "sa_a3_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
ROM_END
-ROM_START( spaceaa2 ) /* revision A2 */
+ROM_START( spaceacea2 ) /* revision A2 */
ROM_REGION( 0xa000, "maincpu", 0 )
ROM_LOAD( "sa_a2_u1.bin", 0x0000, 0x2000, CRC(71b39e27) SHA1(15a34eee9d541b186761a78b5c97449c7b496e4f) )
ROM_LOAD( "sa_a2_u2.bin", 0x2000, 0x2000, CRC(18d0262d) SHA1(c3920e3cabfe2b2add51881e262f090c5018e508) )
@@ -907,11 +926,11 @@ ROM_START( spaceaa2 ) /* revision A2 */
ROM_LOAD( "sa_a2_u4.bin", 0x6000, 0x2000, CRC(57db2a79) SHA1(5286905d9bde697845a98bd77f31f2a96a8874fc) )
ROM_LOAD( "sa_a2_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
ROM_END
-ROM_START( spaceaa ) /* revision A */
+ROM_START( spaceacea ) /* revision A */
ROM_REGION( 0xa000, "maincpu", 0 )
ROM_LOAD( "sa_a_u1.bin", 0x0000, 0x2000, CRC(8eb1889e) SHA1(bfa2c5fc139c448b7b6b5c5757d4f2f74e610b85) )
ROM_LOAD( "sa_a_u2.bin", 0x2000, 0x2000, CRC(18d0262d) SHA1(c3920e3cabfe2b2add51881e262f090c5018e508) )
@@ -919,11 +938,11 @@ ROM_START( spaceaa ) /* revision A */
ROM_LOAD( "sa_a_u4.bin", 0x6000, 0x2000, CRC(57db2a79) SHA1(5286905d9bde697845a98bd77f31f2a96a8874fc) )
ROM_LOAD( "sa_a_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
ROM_END
-ROM_START( saeuro ) /* Italian Sidam version */
+ROM_START( spaceaceeuro ) /* Italian Sidam version */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "sa_u45a.bin", 0x0000, 0x2000, CRC(41264d46) SHA1(3e0ecfb3249f857a29fe58a3853a55d31cbd63d6) )
ROM_LOAD( "sa_u46a.bin", 0x2000, 0x2000, CRC(bc1c70cf) SHA1(cd6d2456ac2fbbfb86e1f31bd7cbd0cec0d31b45) )
@@ -934,7 +953,7 @@ ROM_START( saeuro ) /* Italian Sidam version */
ROM_REGION( 0x2000, "gfx1", 0 )
ROM_LOAD( "sa_u33a.bin", 0x0000, 0x2000, CRC(a8c14612) SHA1(dbcf90b929e714f328bdcb0d8cd7c9e7d08a8be7) )
- DISK_REGION( "laserdisc" )
+ DISK_REGION( "ld_22vp932" )
DISK_IMAGE_READONLY( "saeuro", 0, NO_DUMP )
ROM_END
@@ -949,15 +968,15 @@ ROM_END
static DRIVER_INIT( fixed )
{
- dlair_state *state = machine.driver_data<dlair_state>();
- state->m_laserdisc_type = LASERDISC_TYPE_FIXED;
+// dlair_state *state = machine.driver_data<dlair_state>();
+// state->m_laserdisc_type = LASERDISC_TYPE_FIXED;
}
static DRIVER_INIT( variable )
{
- dlair_state *state = machine.driver_data<dlair_state>();
- state->m_laserdisc_type = LASERDISC_TYPE_VARIABLE;
+// dlair_state *state = machine.driver_data<dlair_state>();
+// state->m_laserdisc_type = LASERDISC_TYPE_VARIABLE;
}
@@ -978,7 +997,7 @@ GAMEL( 1983, dlaira, dlair, dlair_pr7820, dlair, fixed, ROT0, "Cinemat
GAMEL( 1983, dleuro, dlair, dleuro, dleuro, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European)", GAME_NOT_WORKING, layout_dlair )
GAMEL( 1983, dlital, dlair, dleuro, dleuro, fixed, ROT0, "Cinematronics (Sidam license?)","Dragon's Lair (Italian)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceaa2, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceaa, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, saeuro, spaceace, dleuro, dleuro, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", GAME_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", GAME_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", GAME_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", GAME_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceaceeuro, spaceace, dleuro, dleuro, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", GAME_NOT_WORKING, layout_dlair )
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
index 616f958dd04..6cc83c00c83 100644
--- a/src/mame/drivers/dmndrby.c
+++ b/src/mame/drivers/dmndrby.c
@@ -338,7 +338,7 @@ static VIDEO_START(dderby)
}
-static SCREEN_UPDATE(dderby)
+static SCREEN_UPDATE_IND16(dderby)
{
dmndrby_state *state = screen.machine().driver_data<dmndrby_state>();
int x,y,count;
@@ -517,10 +517,9 @@ static MACHINE_CONFIG_START( dderby, dmndrby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(dderby)
+ MCFG_SCREEN_UPDATE_STATIC(dderby)
MCFG_GFXDECODE(dmndrby)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c
index 007613884d7..ba79c061bbc 100644
--- a/src/mame/drivers/docastle.c
+++ b/src/mame/drivers/docastle.c
@@ -611,10 +611,9 @@ static MACHINE_CONFIG_START( docastle, docastle_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.60) // measured on pcb, real refresh rate should be derived from XTAL_9_828MHz, how?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(docastle)
+ MCFG_SCREEN_UPDATE_STATIC(docastle)
MCFG_GFXDECODE(docastle)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/dogfgt.c b/src/mame/drivers/dogfgt.c
index eda9d663343..5ccc507643b 100644
--- a/src/mame/drivers/dogfgt.c
+++ b/src/mame/drivers/dogfgt.c
@@ -264,10 +264,9 @@ static MACHINE_CONFIG_START( dogfgt, dogfgt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(dogfgt)
+ MCFG_SCREEN_UPDATE_STATIC(dogfgt)
MCFG_GFXDECODE(dogfgt)
MCFG_PALETTE_LENGTH(16+64)
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index fa26ae86e5b..afe1c499c36 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -87,7 +87,7 @@ static VIDEO_START( dominob )
machine.gfx[0]->color_granularity = 8;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
dominob_state *state = machine.driver_data<dominob_state>();
int offs;
@@ -117,7 +117,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static SCREEN_UPDATE( dominob )
+static SCREEN_UPDATE_IND16( dominob )
{
dominob_state *state = screen.machine().driver_data<dominob_state>();
int x,y;
@@ -300,10 +300,9 @@ static MACHINE_CONFIG_START( dominob, dominob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1524)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(dominob)
+ MCFG_SCREEN_UPDATE_STATIC(dominob)
MCFG_GFXDECODE(dominob)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c
index fac0e1e0753..c1e51c162ba 100644
--- a/src/mame/drivers/dooyong.c
+++ b/src/mame/drivers/dooyong.c
@@ -881,10 +881,9 @@ static MACHINE_CONFIG_START( lastday, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lastday)
+ MCFG_SCREEN_UPDATE_STATIC(lastday)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(lastday)
@@ -924,10 +923,9 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gulfstrm)
+ MCFG_SCREEN_UPDATE_STATIC(gulfstrm)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(lastday)
@@ -958,10 +956,9 @@ static MACHINE_CONFIG_START( pollux, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pollux)
+ MCFG_SCREEN_UPDATE_STATIC(pollux)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(lastday)
@@ -991,10 +988,9 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(bluehawk)
+ MCFG_SCREEN_UPDATE_STATIC(bluehawk)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(bluehawk)
@@ -1024,10 +1020,9 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(flytiger)
+ MCFG_SCREEN_UPDATE_STATIC(flytiger)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(flytiger)
@@ -1055,10 +1050,9 @@ static MACHINE_CONFIG_START( primella, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(primella)
+ MCFG_SCREEN_UPDATE_STATIC(primella)
MCFG_SCREEN_EOF(dooyong)
MCFG_GFXDECODE(primella)
@@ -1098,10 +1092,9 @@ static MACHINE_CONFIG_START( rshark, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(rshark)
+ MCFG_SCREEN_UPDATE_STATIC(rshark)
MCFG_SCREEN_EOF(rshark)
MCFG_GFXDECODE(rshark)
@@ -1129,10 +1122,9 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(rshark)
+ MCFG_SCREEN_UPDATE_STATIC(rshark)
MCFG_SCREEN_EOF(rshark)
MCFG_GFXDECODE(rshark)
@@ -1160,10 +1152,9 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(popbingo)
+ MCFG_SCREEN_UPDATE_STATIC(popbingo)
MCFG_SCREEN_EOF(rshark)
MCFG_GFXDECODE(popbingo)
diff --git a/src/mame/drivers/dorachan.c b/src/mame/drivers/dorachan.c
index 173d4ce9537..7de6cc2c735 100644
--- a/src/mame/drivers/dorachan.c
+++ b/src/mame/drivers/dorachan.c
@@ -77,7 +77,7 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE( dorachan )
+static SCREEN_UPDATE_RGB32( dorachan )
{
dorachan_state *state = screen.machine().driver_data<dorachan_state>();
pen_t pens[NUM_PENS];
@@ -250,11 +250,10 @@ static MACHINE_CONFIG_START( dorachan, dorachan_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(dorachan)
+ MCFG_SCREEN_UPDATE_STATIC(dorachan)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dotrikun.c b/src/mame/drivers/dotrikun.c
index 66840d730f6..885b0ac338f 100644
--- a/src/mame/drivers/dotrikun.c
+++ b/src/mame/drivers/dotrikun.c
@@ -59,7 +59,7 @@ static WRITE8_HANDLER( dotrikun_color_w )
}
-static SCREEN_UPDATE( dotrikun )
+static SCREEN_UPDATE_RGB32( dotrikun )
{
dotrikun_state *state = screen.machine().driver_data<dotrikun_state>();
int x,y,i;
@@ -161,9 +161,8 @@ static MACHINE_CONFIG_START( dotrikun, dotrikun_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(dotrikun)
+ MCFG_SCREEN_UPDATE_STATIC(dotrikun)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dragrace.c b/src/mame/drivers/dragrace.c
index 6f6d81242af..5f10e374f75 100644
--- a/src/mame/drivers/dragrace.c
+++ b/src/mame/drivers/dragrace.c
@@ -348,10 +348,9 @@ static MACHINE_CONFIG_START( dragrace, dragrace_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(dragrace)
+ MCFG_SCREEN_UPDATE_STATIC(dragrace)
MCFG_GFXDECODE(dragrace)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c
index e8285a21503..dfd4d011958 100644
--- a/src/mame/drivers/dreamwld.c
+++ b/src/mame/drivers/dreamwld.c
@@ -150,7 +150,7 @@ public:
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
dreamwld_state *state = machine.driver_data<dreamwld_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -280,7 +280,7 @@ SCREEN_EOF( dreamwld )
}
-static SCREEN_UPDATE( dreamwld )
+static SCREEN_UPDATE_IND16( dreamwld )
{
dreamwld_state *state = screen.machine().driver_data<dreamwld_state>();
// int tm0size, tm1size;
@@ -584,10 +584,9 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512,256)
MCFG_SCREEN_VISIBLE_AREA(0, 304-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(dreamwld)
+ MCFG_SCREEN_UPDATE_STATIC(dreamwld)
MCFG_SCREEN_EOF(dreamwld)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/drgnmst.c b/src/mame/drivers/drgnmst.c
index b8d54612f89..18122aaa743 100644
--- a/src/mame/drivers/drgnmst.c
+++ b/src/mame/drivers/drgnmst.c
@@ -421,10 +421,9 @@ static MACHINE_CONFIG_START( drgnmst, drgnmst_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(drgnmst)
+ MCFG_SCREEN_UPDATE_STATIC(drgnmst)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/dribling.c b/src/mame/drivers/dribling.c
index c521be21819..c4f39f2b87c 100644
--- a/src/mame/drivers/dribling.c
+++ b/src/mame/drivers/dribling.c
@@ -332,10 +332,9 @@ static MACHINE_CONFIG_START( dribling, dribling_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 40, 255)
- MCFG_SCREEN_UPDATE(dribling)
+ MCFG_SCREEN_UPDATE_STATIC(dribling)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/drmicro.c b/src/mame/drivers/drmicro.c
index 55c6ff3683f..a725d263f4c 100644
--- a/src/mame/drivers/drmicro.c
+++ b/src/mame/drivers/drmicro.c
@@ -268,10 +268,9 @@ static MACHINE_CONFIG_START( drmicro, drmicro_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(drmicro)
+ MCFG_SCREEN_UPDATE_STATIC(drmicro)
MCFG_GFXDECODE(drmicro)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/drtomy.c b/src/mame/drivers/drtomy.c
index 2db3e041c59..4cdf7917bca 100644
--- a/src/mame/drivers/drtomy.c
+++ b/src/mame/drivers/drtomy.c
@@ -68,7 +68,7 @@ static TILE_GET_INFO( get_tile_info_bg )
3 | xxxxxxxx xxxxxx-- | sprite code
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
drtomy_state *state = machine.driver_data<drtomy_state>();
int i, x, y, ex, ey;
@@ -123,7 +123,7 @@ static VIDEO_START( drtomy )
tilemap_set_transparent_pen(state->m_tilemap_fg, 0);
}
-static SCREEN_UPDATE( drtomy )
+static SCREEN_UPDATE_IND16( drtomy )
{
drtomy_state *state = screen.machine().driver_data<drtomy_state>();
@@ -305,10 +305,9 @@ static MACHINE_CONFIG_START( drtomy, drtomy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(drtomy)
+ MCFG_SCREEN_UPDATE_STATIC(drtomy)
MCFG_GFXDECODE(drtomy)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c
index 2968f688f46..b4827baf9bc 100644
--- a/src/mame/drivers/drw80pkr.c
+++ b/src/mame/drivers/drw80pkr.c
@@ -337,7 +337,7 @@ static VIDEO_START( drw80pkr )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 24, 27);
}
-static SCREEN_UPDATE( drw80pkr )
+static SCREEN_UPDATE_IND16( drw80pkr )
{
drw80pkr_state *state = screen.machine().driver_data<drw80pkr_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -473,10 +473,9 @@ static MACHINE_CONFIG_START( drw80pkr, drw80pkr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(drw80pkr)
+ MCFG_SCREEN_UPDATE_STATIC(drw80pkr)
MCFG_GFXDECODE(drw80pkr)
MCFG_PALETTE_LENGTH(16*16)
diff --git a/src/mame/drivers/dunhuang.c b/src/mame/drivers/dunhuang.c
index ce75b46c566..a7a8aa46820 100644
--- a/src/mame/drivers/dunhuang.c
+++ b/src/mame/drivers/dunhuang.c
@@ -132,7 +132,7 @@ static VIDEO_START(dunhuang)
state->save_item(NAME(state->m_paldata));
}
-static SCREEN_UPDATE( dunhuang )
+static SCREEN_UPDATE_IND16( dunhuang )
{
dunhuang_state *state = screen.machine().driver_data<dunhuang_state>();
int layers_ctrl = -1;
@@ -829,10 +829,9 @@ static MACHINE_CONFIG_START( dunhuang, dunhuang_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0+8, 512-8-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(dunhuang)
+ MCFG_SCREEN_UPDATE_STATIC(dunhuang)
MCFG_GFXDECODE(dunhuang)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/dwarfd.c b/src/mame/drivers/dwarfd.c
index 21d78245805..eb129928492 100644
--- a/src/mame/drivers/dwarfd.c
+++ b/src/mame/drivers/dwarfd.c
@@ -774,7 +774,7 @@ static VIDEO_START(dwarfd)
{
}
-static void drawCrt( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void drawCrt( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
dwarfd_state *state = machine.driver_data<dwarfd_state>();
int x, y;
@@ -835,7 +835,7 @@ static void drawCrt( running_machine &machine, bitmap_t &bitmap,const rectangle
}
-static SCREEN_UPDATE( dwarfd )
+static SCREEN_UPDATE_IND16( dwarfd )
{
bitmap.fill(get_black_pen(screen.machine()), cliprect);
drawCrt(screen.machine(), bitmap, cliprect);
@@ -1071,10 +1071,9 @@ static MACHINE_CONFIG_START( dwarfd, dwarfd_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(272*2, 200+4*8)
MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(dwarfd)
+ MCFG_SCREEN_UPDATE_STATIC(dwarfd)
MCFG_GFXDECODE(dwarfd)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c
index be339b01071..2eb1cd560a3 100644
--- a/src/mame/drivers/dynadice.c
+++ b/src/mame/drivers/dynadice.c
@@ -206,7 +206,7 @@ static VIDEO_START( dynadice )
tilemap_set_scrollx(state->m_bg_tilemap, 0, -16);
}
-static SCREEN_UPDATE( dynadice )
+static SCREEN_UPDATE_IND16( dynadice )
{
dynadice_state *state = screen.machine().driver_data<dynadice_state>();
rectangle myclip = cliprect;
@@ -255,10 +255,9 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256+16, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 3*8, 28*8-1)
- MCFG_SCREEN_UPDATE(dynadice)
+ MCFG_SCREEN_UPDATE_STATIC(dynadice)
MCFG_GFXDECODE(dynadice)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 7b80ba4ce92..65c50fb2976 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -4363,10 +4363,9 @@ static MACHINE_CONFIG_START( hanamai, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16+8, 255-8)
- MCFG_SCREEN_UPDATE(hanamai)
+ MCFG_SCREEN_UPDATE_STATIC(hanamai)
MCFG_PALETTE_LENGTH(512)
@@ -4421,10 +4420,9 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
- MCFG_SCREEN_UPDATE(hnoridur)
+ MCFG_SCREEN_UPDATE_STATIC(hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -4467,10 +4465,9 @@ static MACHINE_CONFIG_START( hjingi, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
- MCFG_SCREEN_UPDATE(hnoridur)
+ MCFG_SCREEN_UPDATE_STATIC(hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -4526,10 +4523,9 @@ static MACHINE_CONFIG_START( sprtmtch, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(sprtmtch)
+ MCFG_SCREEN_UPDATE_STATIC(sprtmtch)
MCFG_PALETTE_LENGTH(512)
@@ -4569,10 +4565,9 @@ static MACHINE_CONFIG_START( mjfriday, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(mjdialq2)
+ MCFG_SCREEN_UPDATE_STATIC(mjdialq2)
MCFG_PALETTE_LENGTH(512)
@@ -4636,7 +4631,6 @@ static MACHINE_CONFIG_DERIVED( yarunara, hnoridur )
MCFG_NVRAM_REPLACE_0FILL("nvram")
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 8, 256-1-8-1)
/* devices */
@@ -4734,20 +4728,18 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MCFG_DEFAULT_LAYOUT(layout_dualhuov)
MCFG_SCREEN_ADD("top", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(jantouki_top)
+ MCFG_SCREEN_UPDATE_STATIC(jantouki_top)
MCFG_SCREEN_ADD("bottom", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(jantouki_bottom)
+ MCFG_SCREEN_UPDATE_STATIC(jantouki_bottom)
MCFG_PALETTE_INIT(sprtmtch) // static palette
MCFG_VIDEO_START(jantouki)
@@ -4911,10 +4903,9 @@ static MACHINE_CONFIG_START( htengoku, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+8, 256-1-8)
- MCFG_SCREEN_UPDATE(htengoku)
+ MCFG_SCREEN_UPDATE_STATIC(htengoku)
MCFG_PALETTE_LENGTH(16*256)
@@ -4997,10 +4988,9 @@ static MACHINE_CONFIG_START( tenkai, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(hnoridur)
+ MCFG_SCREEN_UPDATE_STATIC(hnoridur)
MCFG_PALETTE_LENGTH(16*256)
@@ -5067,10 +5057,9 @@ static MACHINE_CONFIG_START( gekisha, dynax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(2, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(mjdialq2)
+ MCFG_SCREEN_UPDATE_STATIC(mjdialq2)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(sprtmtch) // static palette
diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c
index 5b7ec9fd20d..baddee7f252 100644
--- a/src/mame/drivers/dynduke.c
+++ b/src/mame/drivers/dynduke.c
@@ -292,10 +292,9 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(dynduke)
+ MCFG_SCREEN_UPDATE_STATIC(dynduke)
MCFG_SCREEN_EOF(dynduke)
MCFG_GFXDECODE(dynduke)
diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c
index ae45be4c807..d044497d5c8 100644
--- a/src/mame/drivers/egghunt.c
+++ b/src/mame/drivers/egghunt.c
@@ -69,7 +69,7 @@ public:
};
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
egghunt_state *state = machine.driver_data<egghunt_state>();
int flipscreen = 0;
@@ -172,7 +172,7 @@ static VIDEO_START(egghunt)
state->save_item(NAME(state->m_spram));
}
-static SCREEN_UPDATE(egghunt)
+static SCREEN_UPDATE_IND16(egghunt)
{
egghunt_state *state = screen.machine().driver_data<egghunt_state>();
tilemap_draw(bitmap,cliprect, state->m_bg_tilemap, 0, 0);
@@ -423,10 +423,9 @@ static MACHINE_CONFIG_START( egghunt, egghunt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(egghunt)
+ MCFG_SCREEN_UPDATE_STATIC(egghunt)
MCFG_GFXDECODE(egghunt)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/embargo.c b/src/mame/drivers/embargo.c
index 317ba435920..6fd3f9419a6 100644
--- a/src/mame/drivers/embargo.c
+++ b/src/mame/drivers/embargo.c
@@ -31,7 +31,7 @@ public:
*
*************************************/
-static SCREEN_UPDATE( embargo )
+static SCREEN_UPDATE_RGB32( embargo )
{
embargo_state *state = screen.machine().driver_data<embargo_state>();
offs_t offs;
@@ -264,11 +264,10 @@ static MACHINE_CONFIG_START( embargo, embargo_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE(embargo)
+ MCFG_SCREEN_UPDATE_STATIC(embargo)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/enigma2.c b/src/mame/drivers/enigma2.c
index ca02dbe90c9..d5ffbbb08df 100644
--- a/src/mame/drivers/enigma2.c
+++ b/src/mame/drivers/enigma2.c
@@ -196,7 +196,7 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE( enigma2 )
+static SCREEN_UPDATE_RGB32( enigma2 )
{
enigma2_state *state = screen.machine().driver_data<enigma2_state>();
pen_t pens[NUM_PENS];
@@ -284,7 +284,7 @@ static SCREEN_UPDATE( enigma2 )
}
-static SCREEN_UPDATE( enigma2a )
+static SCREEN_UPDATE_RGB32( enigma2a )
{
enigma2_state *state = screen.machine().driver_data<enigma2_state>();
UINT8 x = 0;
@@ -615,9 +615,8 @@ static MACHINE_CONFIG_START( enigma2, enigma2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(enigma2)
+ MCFG_SCREEN_UPDATE_STATIC(enigma2)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -644,9 +643,8 @@ static MACHINE_CONFIG_START( enigma2a, enigma2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(enigma2a)
+ MCFG_SCREEN_UPDATE_STATIC(enigma2a)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c
index 0fafe339f6f..5a3a2b576bf 100644
--- a/src/mame/drivers/eolith.c
+++ b/src/mame/drivers/eolith.c
@@ -404,10 +404,9 @@ static MACHINE_CONFIG_START( eolith45, eolith_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(eolith)
+ MCFG_SCREEN_UPDATE_STATIC(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 cb02885b1f4..69a085e4e86 100644
--- a/src/mame/drivers/eolith16.c
+++ b/src/mame/drivers/eolith16.c
@@ -121,7 +121,7 @@ static VIDEO_START( eolith16 )
state->m_vram = auto_alloc_array(machine, UINT16, 0x10000);
}
-static SCREEN_UPDATE( eolith16 )
+static SCREEN_UPDATE_IND16( eolith16 )
{
eolith16_state *state = screen.machine().driver_data<eolith16_state>();
int x,y,count;
@@ -182,10 +182,9 @@ static MACHINE_CONFIG_START( eolith16, eolith16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
- MCFG_SCREEN_UPDATE(eolith16)
+ MCFG_SCREEN_UPDATE_STATIC(eolith16)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/epos.c b/src/mame/drivers/epos.c
index 2c98fcc7533..7dd7bf4bd5b 100644
--- a/src/mame/drivers/epos.c
+++ b/src/mame/drivers/epos.c
@@ -407,10 +407,9 @@ static MACHINE_CONFIG_START( epos, epos_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(272, 241)
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
- MCFG_SCREEN_UPDATE(epos)
+ MCFG_SCREEN_UPDATE_STATIC(epos)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -436,10 +435,9 @@ static MACHINE_CONFIG_START( dealer, epos_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(272, 241)
MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235)
- MCFG_SCREEN_UPDATE(epos)
+ MCFG_SCREEN_UPDATE_STATIC(epos)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/eprom.c b/src/mame/drivers/eprom.c
index f55da99562f..cd838e17123 100644
--- a/src/mame/drivers/eprom.c
+++ b/src/mame/drivers/eprom.c
@@ -429,11 +429,10 @@ static MACHINE_CONFIG_START( eprom, eprom_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(eprom)
+ MCFG_SCREEN_UPDATE_STATIC(eprom)
MCFG_VIDEO_START(eprom)
@@ -461,11 +460,10 @@ static MACHINE_CONFIG_START( klaxp, eprom_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(eprom)
+ MCFG_SCREEN_UPDATE_STATIC(eprom)
MCFG_VIDEO_START(eprom)
@@ -493,11 +491,10 @@ static MACHINE_CONFIG_START( guts, eprom_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(guts)
+ MCFG_SCREEN_UPDATE_STATIC(guts)
MCFG_VIDEO_START(guts)
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index 87376c61270..bf9c339b967 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -1275,10 +1275,9 @@ static MACHINE_CONFIG_START( equites, equites_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 3*8, 29*8-1)
- MCFG_SCREEN_UPDATE(equites)
+ MCFG_SCREEN_UPDATE_STATIC(equites)
MCFG_GFXDECODE(equites)
MCFG_PALETTE_LENGTH(0x180)
@@ -1313,10 +1312,9 @@ static MACHINE_CONFIG_START( splndrbt, equites_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(splndrbt)
+ MCFG_SCREEN_UPDATE_STATIC(splndrbt)
MCFG_GFXDECODE(splndrbt)
MCFG_PALETTE_LENGTH(0x280)
diff --git a/src/mame/drivers/ertictac.c b/src/mame/drivers/ertictac.c
index f7b23e53269..16b72a698e8 100644
--- a/src/mame/drivers/ertictac.c
+++ b/src/mame/drivers/ertictac.c
@@ -230,10 +230,9 @@ static MACHINE_CONFIG_START( ertictac, ertictac_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(1280, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 1280-1, 0, 1024-1)
- MCFG_SCREEN_UPDATE(archimds_vidc)
+ MCFG_SCREEN_UPDATE_STATIC(archimds_vidc)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c
index fd2211ea96f..6f3df8982d2 100644
--- a/src/mame/drivers/esd16.c
+++ b/src/mame/drivers/esd16.c
@@ -555,10 +555,9 @@ static MACHINE_CONFIG_START( multchmp, esd16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0+8, 0x100-8-1)
- MCFG_SCREEN_UPDATE(esd16)
+ MCFG_SCREEN_UPDATE_STATIC(esd16)
MCFG_GFXDECODE(esd16)
MCFG_PALETTE_LENGTH(768)
@@ -588,7 +587,7 @@ static MACHINE_CONFIG_DERIVED( hedpanic, multchmp )
MCFG_GFXDECODE(hedpanic)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(hedpanic)
+ MCFG_SCREEN_UPDATE_STATIC(hedpanic)
MACHINE_CONFIG_END
@@ -621,7 +620,7 @@ static MACHINE_CONFIG_DERIVED( hedpanio, hedpanic )
/* basic machine hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(hedpanio)
+ MCFG_SCREEN_UPDATE_STATIC(hedpanio)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c
index add583e9a1c..7ebf66173e5 100644
--- a/src/mame/drivers/esh.c
+++ b/src/mame/drivers/esh.c
@@ -24,7 +24,7 @@ Todo:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
#include "machine/nvram.h"
@@ -32,9 +32,10 @@ class esh_state : public driver_device
{
public:
esh_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 *m_tile_ram;
UINT8 *m_tile_control_ram;
UINT8 m_ld_video_visible;
@@ -46,7 +47,7 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE( esh )
+static SCREEN_UPDATE_IND16( esh )
{
esh_state *state = screen.machine().driver_data<esh_state>();
int charx, chary;
@@ -83,13 +84,13 @@ static SCREEN_UPDATE( esh )
static READ8_HANDLER(ldp_read)
{
esh_state *state = space->machine().driver_data<esh_state>();
- return laserdisc_data_r(state->m_laserdisc);
+ return state->m_laserdisc->status_r();
}
static WRITE8_HANDLER(ldp_write)
{
esh_state *state = space->machine().driver_data<esh_state>();
- laserdisc_data_w(state->m_laserdisc,data);
+ state->m_laserdisc->data_w(data);
}
static WRITE8_HANDLER(misc_write)
@@ -283,8 +284,6 @@ static INTERRUPT_GEN( vblank_callback_esh )
static MACHINE_START( esh )
{
- esh_state *state = machine.driver_data<esh_state>();
- state->m_laserdisc = machine.device("laserdisc");
}
@@ -301,11 +300,11 @@ static MACHINE_CONFIG_START( esh, esh_state )
MCFG_MACHINE_START(esh)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(esh, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(256, 256, esh)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(esh)
@@ -315,7 +314,7 @@ static MACHINE_CONFIG_START( esh, esh_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c
index 1d3a34e67ac..7eb4959a4d2 100644
--- a/src/mame/drivers/espial.c
+++ b/src/mame/drivers/espial.c
@@ -342,10 +342,9 @@ static MACHINE_CONFIG_START( espial, espial_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(espial)
+ MCFG_SCREEN_UPDATE_STATIC(espial)
MCFG_GFXDECODE(espial)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/esripsys.c b/src/mame/drivers/esripsys.c
index ae67db87813..5db99ea3896 100644
--- a/src/mame/drivers/esripsys.c
+++ b/src/mame/drivers/esripsys.c
@@ -734,9 +734,8 @@ static MACHINE_CONFIG_START( esripsys, esripsys_state )
/* Video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(esripsys)
+ MCFG_SCREEN_UPDATE_STATIC(esripsys)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(esripsys)
diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c
index c44a3d3b9ea..140919d4418 100644
--- a/src/mame/drivers/ettrivia.c
+++ b/src/mame/drivers/ettrivia.c
@@ -256,7 +256,7 @@ static VIDEO_START( ettrivia )
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
}
-static SCREEN_UPDATE( ettrivia )
+static SCREEN_UPDATE_IND16( ettrivia )
{
ettrivia_state *state = screen.machine().driver_data<ettrivia_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
@@ -305,10 +305,9 @@ static MACHINE_CONFIG_START( ettrivia, ettrivia_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(ettrivia)
+ MCFG_SCREEN_UPDATE_STATIC(ettrivia)
MCFG_GFXDECODE(ettrivia)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c
index 1ba071f0994..822f78a2862 100644
--- a/src/mame/drivers/exedexes.c
+++ b/src/mame/drivers/exedexes.c
@@ -236,10 +236,9 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(exedexes)
+ MCFG_SCREEN_UPDATE_STATIC(exedexes)
MCFG_SCREEN_EOF(exedexes)
MCFG_GFXDECODE(exedexes)
diff --git a/src/mame/drivers/exerion.c b/src/mame/drivers/exerion.c
index bb9120efb60..27f945d6b9a 100644
--- a/src/mame/drivers/exerion.c
+++ b/src/mame/drivers/exerion.c
@@ -426,9 +426,8 @@ static MACHINE_CONFIG_START( exerion, exerion_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(EXERION_PIXEL_CLOCK, EXERION_HTOTAL, EXERION_HBEND, EXERION_HBSTART, EXERION_VTOTAL, EXERION_VBEND, EXERION_VBSTART)
- MCFG_SCREEN_UPDATE(exerion)
+ MCFG_SCREEN_UPDATE_STATIC(exerion)
MCFG_GFXDECODE(exerion)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/exidy.c b/src/mame/drivers/exidy.c
index 3ebf47ef1aa..a6bc10c39a0 100644
--- a/src/mame/drivers/exidy.c
+++ b/src/mame/drivers/exidy.c
@@ -817,9 +817,8 @@ static MACHINE_CONFIG_START( base, exidy_state )
MCFG_PALETTE_LENGTH(8)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
- MCFG_SCREEN_UPDATE(exidy)
+ MCFG_SCREEN_UPDATE_STATIC(exidy)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/expro02.c b/src/mame/drivers/expro02.c
index 3ab0e9c11d6..b2fc395fa30 100644
--- a/src/mame/drivers/expro02.c
+++ b/src/mame/drivers/expro02.c
@@ -513,10 +513,9 @@ static MACHINE_CONFIG_START( galsnew, expro02_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE(galsnew)
+ MCFG_SCREEN_UPDATE_STATIC(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 5e822fd2df5..e616bb53902 100644
--- a/src/mame/drivers/exprraid.c
+++ b/src/mame/drivers/exprraid.c
@@ -510,10 +510,9 @@ static MACHINE_CONFIG_START( exprraid, exprraid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(exprraid)
+ MCFG_SCREEN_UPDATE_STATIC(exprraid)
MCFG_GFXDECODE(exprraid)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/exterm.c b/src/mame/drivers/exterm.c
index 26b08800665..63bd148df2c 100644
--- a/src/mame/drivers/exterm.c
+++ b/src/mame/drivers/exterm.c
@@ -413,7 +413,8 @@ static const tms34010_config master_config =
"screen", /* the screen operated on */
40000000/8, /* pixel clock */
1, /* pixels per clock */
- exterm_scanline_update, /* scanline updater */
+ exterm_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
exterm_to_shiftreg_master, /* write to shiftreg function */
exterm_from_shiftreg_master /* read from shiftreg function */
@@ -425,7 +426,8 @@ static const tms34010_config slave_config =
"screen", /* the screen operated on */
40000000/8, /* pixel clock */
1, /* pixels per clock */
- NULL, /* scanline updater */
+ NULL, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
exterm_to_shiftreg_slave, /* write to shiftreg function */
exterm_from_shiftreg_slave /* read from shiftreg function */
@@ -466,9 +468,8 @@ static MACHINE_CONFIG_START( exterm, exterm_state )
MCFG_PALETTE_LENGTH(2048+32768)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(40000000/8, 318, 0, 256, 264, 0, 240)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_PALETTE_INIT(exterm)
diff --git a/src/mame/drivers/exzisus.c b/src/mame/drivers/exzisus.c
index a1fbe521a7e..8e32da4df7e 100644
--- a/src/mame/drivers/exzisus.c
+++ b/src/mame/drivers/exzisus.c
@@ -299,10 +299,9 @@ static MACHINE_CONFIG_START( exzisus, exzisus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(exzisus)
+ MCFG_SCREEN_UPDATE_STATIC(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 7b3756334e3..fe57d52c475 100644
--- a/src/mame/drivers/f-32.c
+++ b/src/mame/drivers/f-32.c
@@ -30,7 +30,7 @@ public:
};
-static SCREEN_UPDATE( mosaicf2 )
+static SCREEN_UPDATE_IND16( mosaicf2 )
{
mosaicf2_state *state = screen.machine().driver_data<mosaicf2_state>();
offs_t offs;
@@ -143,10 +143,9 @@ static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223)
- MCFG_SCREEN_UPDATE(mosaicf2)
+ MCFG_SCREEN_UPDATE_STATIC(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 b3219a59a89..11e8d127abd 100644
--- a/src/mame/drivers/f1gp.c
+++ b/src/mame/drivers/f1gp.c
@@ -477,10 +477,9 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(f1gp)
+ MCFG_SCREEN_UPDATE_STATIC(f1gp)
MCFG_GFXDECODE(f1gp)
MCFG_PALETTE_LENGTH(2048)
@@ -521,10 +520,9 @@ static MACHINE_CONFIG_START( f1gpb, f1gp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(f1gpb)
+ MCFG_SCREEN_UPDATE_STATIC(f1gpb)
MCFG_GFXDECODE(f1gp)
MCFG_PALETTE_LENGTH(2048)
@@ -550,7 +548,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(f1gp2)
+ MCFG_SCREEN_UPDATE_STATIC(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 d7b793db4c8..fcee23cbeed 100644
--- a/src/mame/drivers/famibox.c
+++ b/src/mame/drivers/famibox.c
@@ -523,7 +523,7 @@ static VIDEO_START( famibox )
{
}
-static SCREEN_UPDATE( famibox )
+static SCREEN_UPDATE_IND16( famibox )
{
/* render the ppu */
ppu2c0x_render(screen.machine().device("ppu"), bitmap, 0, 0, 0, 0);
@@ -574,10 +574,9 @@ static MACHINE_CONFIG_START( famibox, famibox_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(famibox)
+ MCFG_SCREEN_UPDATE_STATIC(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 51be13119eb..4540c3b1bca 100644
--- a/src/mame/drivers/fantland.c
+++ b/src/mame/drivers/fantland.c
@@ -874,10 +874,9 @@ static MACHINE_CONFIG_START( fantland, fantland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(fantland)
+ MCFG_SCREEN_UPDATE_STATIC(fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -925,10 +924,9 @@ static MACHINE_CONFIG_START( galaxygn, fantland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(fantland)
+ MCFG_SCREEN_UPDATE_STATIC(fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -1032,10 +1030,9 @@ static MACHINE_CONFIG_START( borntofi, fantland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54) // 54 Hz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(352,256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(fantland)
+ MCFG_SCREEN_UPDATE_STATIC(fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
@@ -1080,10 +1077,9 @@ static MACHINE_CONFIG_START( wheelrun, fantland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256,224)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(fantland)
+ MCFG_SCREEN_UPDATE_STATIC(fantland)
MCFG_GFXDECODE(fantland)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/fastfred.c b/src/mame/drivers/fastfred.c
index 24780bbc187..70edec9ada7 100644
--- a/src/mame/drivers/fastfred.c
+++ b/src/mame/drivers/fastfred.c
@@ -663,10 +663,9 @@ static MACHINE_CONFIG_START( fastfred, fastfred_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) //CLOCK/16/60
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fastfred)
+ MCFG_SCREEN_UPDATE_STATIC(fastfred)
MCFG_GFXDECODE(fastfred)
MCFG_PALETTE_LENGTH(32*8)
@@ -713,7 +712,7 @@ static MACHINE_CONFIG_DERIVED( imago, fastfred )
MCFG_VIDEO_START(imago)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(imago)
+ MCFG_SCREEN_UPDATE_STATIC(imago)
MACHINE_CONFIG_END
#undef CLOCK
diff --git a/src/mame/drivers/fastlane.c b/src/mame/drivers/fastlane.c
index fbe0c31b6cd..69c23cef4ec 100644
--- a/src/mame/drivers/fastlane.c
+++ b/src/mame/drivers/fastlane.c
@@ -217,10 +217,9 @@ static MACHINE_CONFIG_START( fastlane, fastlane_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fastlane)
+ MCFG_SCREEN_UPDATE_STATIC(fastlane)
MCFG_GFXDECODE(fastlane)
MCFG_PALETTE_LENGTH(1024*16)
diff --git a/src/mame/drivers/fcombat.c b/src/mame/drivers/fcombat.c
index 6224e508fe9..46ac4f4299f 100644
--- a/src/mame/drivers/fcombat.c
+++ b/src/mame/drivers/fcombat.c
@@ -309,9 +309,8 @@ static MACHINE_CONFIG_START( fcombat, fcombat_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(FCOMBAT_PIXEL_CLOCK, FCOMBAT_HTOTAL, FCOMBAT_HBEND, FCOMBAT_HBSTART, FCOMBAT_VTOTAL, FCOMBAT_VBEND, FCOMBAT_VBSTART)
- MCFG_SCREEN_UPDATE(fcombat)
+ MCFG_SCREEN_UPDATE_STATIC(fcombat)
MCFG_GFXDECODE(fcombat)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index 1f43bc70b45..410fc841fcf 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -126,7 +126,7 @@ static void fcrash_update_transmasks( running_machine &machine )
}
}
-static void fcrash_render_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void fcrash_render_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cps_state *state = machine.driver_data<cps_state>();
int pos;
@@ -159,7 +159,7 @@ static void fcrash_render_sprites( running_machine &machine, bitmap_t &bitmap, c
}
-static void fcrash_render_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer, int primask )
+static void fcrash_render_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask )
{
cps_state *state = machine.driver_data<cps_state>();
@@ -176,10 +176,10 @@ static void fcrash_render_layer( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void fcrash_render_high_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer )
+static void fcrash_render_high_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
{
cps_state *state = machine.driver_data<cps_state>();
- bitmap_t dummy_bitmap;
+ bitmap_ind16 dummy_bitmap;
switch (layer)
{
@@ -217,7 +217,7 @@ static void fcrash_build_palette( running_machine &machine )
}
}
-static SCREEN_UPDATE( fcrash )
+static SCREEN_UPDATE_IND16( fcrash )
{
cps_state *state = screen.machine().driver_data<cps_state>();
int layercontrol, l0, l1, l2, l3;
@@ -298,7 +298,7 @@ static SCREEN_UPDATE( fcrash )
}
// doesn't have the scroll offsets like fcrash
-static SCREEN_UPDATE( kodb )
+static SCREEN_UPDATE_IND16( kodb )
{
cps_state *state = screen.machine().driver_data<cps_state>();
int layercontrol, l0, l1, l2, l3;
@@ -743,10 +743,9 @@ static MACHINE_CONFIG_START( fcrash, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fcrash)
+ MCFG_SCREEN_UPDATE_STATIC(fcrash)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
@@ -794,10 +793,9 @@ static MACHINE_CONFIG_START( kodb, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(kodb)
+ MCFG_SCREEN_UPDATE_STATIC(kodb)
MCFG_SCREEN_EOF(cps1)
MCFG_GFXDECODE(cps1)
diff --git a/src/mame/drivers/feversoc.c b/src/mame/drivers/feversoc.c
index 77588b2e7d3..a83bc6f7ba5 100644
--- a/src/mame/drivers/feversoc.c
+++ b/src/mame/drivers/feversoc.c
@@ -82,7 +82,7 @@ static VIDEO_START( feversoc )
}
-static SCREEN_UPDATE( feversoc )
+static SCREEN_UPDATE_IND16( feversoc )
{
feversoc_state *state = screen.machine().driver_data<feversoc_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -258,10 +258,9 @@ static MACHINE_CONFIG_START( feversoc, feversoc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(feversoc)
+ MCFG_SCREEN_UPDATE_STATIC(feversoc)
MCFG_GFXDECODE(feversoc)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/fgoal.c b/src/mame/drivers/fgoal.c
index 7ca57c27174..57a3a74aedc 100644
--- a/src/mame/drivers/fgoal.c
+++ b/src/mame/drivers/fgoal.c
@@ -382,10 +382,9 @@ static MACHINE_CONFIG_START( fgoal, fgoal_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255)
- MCFG_SCREEN_UPDATE(fgoal)
+ MCFG_SCREEN_UPDATE_STATIC(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 fe8811a7d54..bf4d795e944 100644
--- a/src/mame/drivers/finalizr.c
+++ b/src/mame/drivers/finalizr.c
@@ -282,10 +282,9 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(finalizr)
+ MCFG_SCREEN_UPDATE_STATIC(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 78dacf3c185..f74faa16919 100644
--- a/src/mame/drivers/firebeat.c
+++ b/src/mame/drivers/firebeat.c
@@ -192,7 +192,7 @@ static VIDEO_START(firebeat)
}
-static void gcu_draw_object(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd)
+static void gcu_draw_object(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd)
{
firebeat_state *state = machine.driver_data<firebeat_state>();
// 0x00: xxx----- -------- -------- -------- command type
@@ -346,7 +346,7 @@ static void gcu_draw_object(running_machine &machine, bitmap_t &bitmap, const re
}
}
-static void gcu_fill_rect(bitmap_t &bitmap, const rectangle &cliprect, UINT32 *cmd)
+static void gcu_fill_rect(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *cmd)
{
int i, j;
int x1, y1, x2, y2;
@@ -393,7 +393,7 @@ static void gcu_fill_rect(bitmap_t &bitmap, const rectangle &cliprect, UINT32 *c
}
}
-static void gcu_draw_character(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd)
+static void gcu_draw_character(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd)
{
firebeat_state *state = machine.driver_data<firebeat_state>();
// 0x00: xxx----- -------- -------- -------- command type
@@ -442,7 +442,7 @@ static void gcu_draw_character(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void gcu_exec_display_list(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, UINT32 address)
+static void gcu_exec_display_list(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, UINT32 address)
{
firebeat_state *state = machine.driver_data<firebeat_state>();
int counter = 0;
@@ -513,7 +513,7 @@ static void gcu_exec_display_list(running_machine &machine, bitmap_t &bitmap, co
};
}
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int chip)
+static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip)
{
firebeat_state *state = screen.machine().driver_data<firebeat_state>();
@@ -591,8 +591,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-static SCREEN_UPDATE( firebeat_0 ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE( firebeat_1 ) { return update_screen(screen, bitmap, cliprect, 1); }
+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); }
static UINT32 GCU_r(running_machine &machine, int chip, UINT32 offset, UINT32 mem_mask)
{
@@ -1986,10 +1986,9 @@ static MACHINE_CONFIG_START( firebeat, firebeat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(firebeat_0)
+ MCFG_SCREEN_UPDATE_STATIC(firebeat_0)
MCFG_PALETTE_LENGTH(32768)
@@ -2031,20 +2030,18 @@ static MACHINE_CONFIG_START( firebeat2, firebeat_state )
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(firebeat_0)
+ MCFG_SCREEN_UPDATE_STATIC(firebeat_0)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(firebeat_1)
+ MCFG_SCREEN_UPDATE_STATIC(firebeat_1)
MCFG_VIDEO_START(firebeat)
diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c
index a92aeb1b65d..6d1aede5a4c 100644
--- a/src/mame/drivers/firefox.c
+++ b/src/mame/drivers/firefox.c
@@ -30,7 +30,7 @@ but requires a special level III player for proper control. Video: CAV. Audio: A
#include "cpu/m6502/m6502.h"
#include "sound/pokey.h"
#include "sound/tms5220.h"
-#include "machine/laserdsc.h"
+#include "machine/ldvp931.h"
#include "machine/6532riot.h"
#include "machine/x2212.h"
@@ -39,9 +39,10 @@ class firefox_state : public driver_device
{
public:
firefox_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<phillips_22vp931_device> m_laserdisc;
int m_n_disc_lock;
int m_n_disc_data;
int m_n_disc_read_data;
@@ -93,9 +94,9 @@ static READ8_HANDLER( firefox_disc_status_r )
UINT8 result = 0xff;
result ^= 0x20;
- if (!laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_READY))
+ if (!state->m_laserdisc->ready_r())
result ^= 0x40;
- if (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_DATA_AVAIL))
+ if (state->m_laserdisc->data_available_r())
result ^= 0x80;
return result;
@@ -114,7 +115,7 @@ static READ8_HANDLER( firefox_disc_data_r )
static WRITE8_HANDLER( firefox_disc_read_w )
{
firefox_state *state = space->machine().driver_data<firefox_state>();
- state->m_n_disc_read_data = laserdisc_data_r(state->m_laserdisc);
+ state->m_n_disc_read_data = state->m_laserdisc->data_r();
}
static WRITE8_HANDLER( firefox_disc_lock_w )
@@ -125,13 +126,14 @@ static WRITE8_HANDLER( firefox_disc_lock_w )
static WRITE8_HANDLER( audio_enable_w )
{
- space->machine().device<laserdisc_sound_device>("ldsound")->set_output_gain(~offset & 1, (data & 0x80) ? 1.0 : 0.0);
+ firefox_state *state = space->machine().driver_data<firefox_state>();
+ state->m_laserdisc->set_output_gain(~offset & 1, (data & 0x80) ? 1.0 : 0.0);
}
static WRITE8_HANDLER( firefox_disc_reset_w )
{
firefox_state *state = space->machine().driver_data<firefox_state>();
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
+ state->m_laserdisc->reset_w((data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
}
/* active low on dbb7 */
@@ -139,7 +141,7 @@ static WRITE8_HANDLER( firefox_disc_write_w )
{
firefox_state *state = space->machine().driver_data<firefox_state>();
if ( ( data & 0x80 ) == 0 )
- laserdisc_data_w(state->m_laserdisc, state->m_n_disc_data);
+ state->m_laserdisc->data_w(state->m_n_disc_data);
}
/* latch the data */
@@ -182,7 +184,7 @@ static VIDEO_START( firefox )
}
-static SCREEN_UPDATE( firefox )
+static SCREEN_UPDATE_RGB32( firefox )
{
firefox_state *state = screen.machine().driver_data<firefox_state>();
int sprite;
@@ -459,10 +461,10 @@ static WRITE8_HANDLER( firefox_coin_counter_w )
-static void firq_gen(device_t *device, int state)
+static void firq_gen(running_machine &machine, phillips_22vp931_device &laserdisc, int state)
{
if (state)
- cputag_set_input_line( device->machine(), "maincpu", M6809_FIRQ_LINE, ASSERT_LINE );
+ cputag_set_input_line( machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE );
}
@@ -473,8 +475,7 @@ static MACHINE_START( firefox )
state->m_nvram_1c = machine.device<x2212_device>("nvram_1c");
state->m_nvram_1d = machine.device<x2212_device>("nvram_1d");
- state->m_laserdisc = machine.device("laserdisc");
- vp931_set_data_ready_callback(state->m_laserdisc, firq_gen);
+ state->m_laserdisc->set_data_ready_callback(phillips_22vp931_device::data_ready_delegate(FUNC(firq_gen), &machine));
state->m_control_num = 0;
state->m_sprite_bank = 0;
@@ -698,17 +699,17 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz((double)MASTER_XTAL/8/16/16/16/16))
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
-
MCFG_GFXDECODE(firefox)
MCFG_PALETTE_LENGTH(512)
MCFG_VIDEO_START(firefox)
- MCFG_LASERDISC_ADD("laserdisc", PHILLIPS_22VP931, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(firefox, 64*8, 525, BITMAP_FORMAT_RGB32)
+ MCFG_LASERDISC_22VP931_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(64*8, 525, firefox)
MCFG_LASERDISC_OVERLAY_CLIP(7*8, 53*8-1, 44, 480+44)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
+
MCFG_X2212_ADD_AUTOSAVE("nvram_1c")
MCFG_X2212_ADD_AUTOSAVE("nvram_1d")
MCFG_RIOT6532_ADD("riot", MASTER_XTAL/8, riot_intf)
@@ -736,7 +737,7 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/firetrap.c b/src/mame/drivers/firetrap.c
index 7d041708cc9..ff10238f051 100644
--- a/src/mame/drivers/firetrap.c
+++ b/src/mame/drivers/firetrap.c
@@ -667,10 +667,9 @@ static MACHINE_CONFIG_START( firetrap, firetrap_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.4034) // PCB measurement
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(firetrap)
+ MCFG_SCREEN_UPDATE_STATIC(firetrap)
MCFG_GFXDECODE(firetrap)
MCFG_PALETTE_LENGTH(256)
@@ -708,7 +707,6 @@ static MACHINE_CONFIG_START( firetrapbl, firetrap_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.4034)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
@@ -717,7 +715,7 @@ static MACHINE_CONFIG_START( firetrapbl, firetrap_state )
MCFG_PALETTE_INIT(firetrap)
MCFG_VIDEO_START(firetrap)
- MCFG_SCREEN_UPDATE(firetrap)
+ MCFG_SCREEN_UPDATE_STATIC(firetrap)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/firetrk.c b/src/mame/drivers/firetrk.c
index 3f595850a8a..1c38986a5dd 100644
--- a/src/mame/drivers/firetrk.c
+++ b/src/mame/drivers/firetrk.c
@@ -902,10 +902,9 @@ static MACHINE_CONFIG_START( firetrk, firetrk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(firetrk)
+ MCFG_SCREEN_UPDATE_STATIC(firetrk)
MCFG_VIDEO_START(firetrk)
MCFG_PALETTE_INIT(firetrk)
@@ -929,7 +928,7 @@ static MACHINE_CONFIG_DERIVED( superbug, firetrk )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(superbug)
+ MCFG_SCREEN_UPDATE_STATIC(superbug)
MCFG_VIDEO_START(superbug)
MCFG_GFXDECODE(superbug)
@@ -950,7 +949,7 @@ static MACHINE_CONFIG_DERIVED( montecar, firetrk )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(montecar)
+ MCFG_SCREEN_UPDATE_STATIC(montecar)
MCFG_VIDEO_START(montecar)
MCFG_GFXDECODE(montecar)
diff --git a/src/mame/drivers/fitfight.c b/src/mame/drivers/fitfight.c
index 2eaedafc173..23dd1b03993 100644
--- a/src/mame/drivers/fitfight.c
+++ b/src/mame/drivers/fitfight.c
@@ -751,10 +751,9 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fitfight)
+ MCFG_SCREEN_UPDATE_STATIC(fitfight)
MCFG_PALETTE_LENGTH(0x800)
@@ -780,10 +779,9 @@ static MACHINE_CONFIG_START( bbprot, fitfight_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fitfight)
+ MCFG_SCREEN_UPDATE_STATIC(fitfight)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/flkatck.c b/src/mame/drivers/flkatck.c
index c0c31e65b4e..54623c5ec5d 100644
--- a/src/mame/drivers/flkatck.c
+++ b/src/mame/drivers/flkatck.c
@@ -241,10 +241,9 @@ static MACHINE_CONFIG_START( flkatck, flkatck_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(flkatck)
+ MCFG_SCREEN_UPDATE_STATIC(flkatck)
MCFG_GFXDECODE(flkatck)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/flower.c b/src/mame/drivers/flower.c
index 6e33b67a008..200c70b9c04 100644
--- a/src/mame/drivers/flower.c
+++ b/src/mame/drivers/flower.c
@@ -269,10 +269,9 @@ static MACHINE_CONFIG_START( flower, flower_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // ?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(34*8, 33*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(flower)
+ MCFG_SCREEN_UPDATE_STATIC(flower)
MCFG_GFXDECODE(flower)
diff --git a/src/mame/drivers/flstory.c b/src/mame/drivers/flstory.c
index 82b1a568843..792bfe6d5e9 100644
--- a/src/mame/drivers/flstory.c
+++ b/src/mame/drivers/flstory.c
@@ -1112,10 +1112,9 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(flstory)
+ MCFG_SCREEN_UPDATE_STATIC(flstory)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1171,10 +1170,9 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(flstory)
+ MCFG_SCREEN_UPDATE_STATIC(flstory)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1230,10 +1228,9 @@ static MACHINE_CONFIG_START( victnine, flstory_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(victnine)
+ MCFG_SCREEN_UPDATE_STATIC(victnine)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
@@ -1296,10 +1293,9 @@ static MACHINE_CONFIG_START( rumba, flstory_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rumba)
+ MCFG_SCREEN_UPDATE_STATIC(rumba)
MCFG_GFXDECODE(flstory)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c
index d428b6dc5a0..3ba3d79ad20 100644
--- a/src/mame/drivers/flyball.c
+++ b/src/mame/drivers/flyball.c
@@ -83,7 +83,7 @@ static VIDEO_START( flyball )
}
-static SCREEN_UPDATE( flyball )
+static SCREEN_UPDATE_IND16( flyball )
{
flyball_state *state = screen.machine().driver_data<flyball_state>();
int pitcherx = state->m_pitcher_horz;
@@ -419,10 +419,9 @@ static MACHINE_CONFIG_START( flyball, flyball_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(flyball)
+ MCFG_SCREEN_UPDATE_STATIC(flyball)
MCFG_GFXDECODE(flyball)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/foodf.c b/src/mame/drivers/foodf.c
index ab984139dfe..bdf0a030fbb 100644
--- a/src/mame/drivers/foodf.c
+++ b/src/mame/drivers/foodf.c
@@ -376,9 +376,8 @@ static MACHINE_CONFIG_START( foodf, foodf_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 256, 259, 0, 224)
- MCFG_SCREEN_UPDATE(foodf)
+ MCFG_SCREEN_UPDATE_STATIC(foodf)
MCFG_VIDEO_START(foodf)
diff --git a/src/mame/drivers/forte2.c b/src/mame/drivers/forte2.c
index 9f75a9642bf..1af74b97fd6 100644
--- a/src/mame/drivers/forte2.c
+++ b/src/mame/drivers/forte2.c
@@ -105,14 +105,6 @@ static TMS9928A_INTERFACE(forte2_tms9928a_interface)
DEVCB_LINE(vdp_interrupt)
};
-static SCREEN_UPDATE( forte2 )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
static MACHINE_RESET( forte2 )
{
forte2_state *state = machine.driver_data<forte2_state>();
@@ -140,7 +132,7 @@ static MACHINE_CONFIG_START( pesadelo, forte2_state )
/* video hardware */
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, forte2_tms9928a_interface )
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( forte2 )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/fortecar.c b/src/mame/drivers/fortecar.c
index a4d5fef2f0e..07d9cacfe48 100644
--- a/src/mame/drivers/fortecar.c
+++ b/src/mame/drivers/fortecar.c
@@ -344,7 +344,7 @@ static VIDEO_START(fortecar)
{
}
-static SCREEN_UPDATE(fortecar)
+static SCREEN_UPDATE_IND16(fortecar)
{
fortecar_state *state = screen.machine().driver_data<fortecar_state>();
int x,y,count;
@@ -693,10 +693,9 @@ static MACHINE_CONFIG_START( fortecar, fortecar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 600-1, 0, 240-1) /* driven by CRTC */
- MCFG_SCREEN_UPDATE(fortecar)
+ MCFG_SCREEN_UPDATE_STATIC(fortecar)
MCFG_MACHINE_RESET(fortecar)
diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c
index 3e3f5e840bd..6f6f42308c7 100644
--- a/src/mame/drivers/freekick.c
+++ b/src/mame/drivers/freekick.c
@@ -645,10 +645,9 @@ static MACHINE_CONFIG_START( base, freekick_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pbillrd)
+ MCFG_SCREEN_UPDATE_STATIC(pbillrd)
MCFG_PALETTE_LENGTH(0x200)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
@@ -690,7 +689,7 @@ static MACHINE_CONFIG_DERIVED( freekickb, base )
MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(freekick)
+ MCFG_SCREEN_UPDATE_STATIC(freekick)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gigas, base )
@@ -703,7 +702,7 @@ static MACHINE_CONFIG_DERIVED( gigas, base )
MCFG_MACHINE_RESET(freekick)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(gigas)
+ MCFG_SCREEN_UPDATE_STATIC(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 1c5fb5d1254..2ed6ef8220e 100644
--- a/src/mame/drivers/fromanc2.c
+++ b/src/mame/drivers/fromanc2.c
@@ -584,20 +584,18 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fromanc2_left)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fromanc2_right)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
MCFG_VIDEO_START(fromanc2)
@@ -637,20 +635,18 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fromanc2_left)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fromanc2_right)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
MCFG_VIDEO_START(fromancr)
@@ -687,20 +683,18 @@ static MACHINE_CONFIG_START( fromanc4, fromanc2_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
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(fromanc2_left)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(fromanc2_right)
+ MCFG_SCREEN_UPDATE_STATIC(fromanc2_right)
MCFG_VIDEO_START(fromanc4)
diff --git a/src/mame/drivers/fromance.c b/src/mame/drivers/fromance.c
index 61b5685f0f5..31780b0fc46 100644
--- a/src/mame/drivers/fromance.c
+++ b/src/mame/drivers/fromance.c
@@ -1025,10 +1025,9 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(fromance)
+ MCFG_SCREEN_UPDATE_STATIC(fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(1024)
@@ -1064,10 +1063,9 @@ static MACHINE_CONFIG_START( idolmj, fromance_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(fromance)
+ MCFG_SCREEN_UPDATE_STATIC(fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(2048)
@@ -1103,10 +1101,9 @@ static MACHINE_CONFIG_START( fromance, fromance_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(fromance)
+ MCFG_SCREEN_UPDATE_STATIC(fromance)
MCFG_GFXDECODE(fromance)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c
index effd75d0cdd..9312d0aab84 100644
--- a/src/mame/drivers/funkball.c
+++ b/src/mame/drivers/funkball.c
@@ -133,7 +133,7 @@ public:
DECLARE_WRITE8_MEMBER( fdc_w );
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
struct
{
@@ -150,7 +150,7 @@ void funkball_state::video_start()
}
-bool funkball_state::screen_update( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 funkball_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -735,6 +735,12 @@ static MACHINE_RESET( funkball )
state->m_voodoo_pci_regs.base_addr = 0xff000000;
}
+SCREEN_UPDATE_RGB32( funkball )
+{
+ voodoo_update(screen.machine().device("voodoo_0"), bitmap, cliprect);
+ return 0;
+}
+
static MACHINE_CONFIG_START( funkball, funkball_state )
MCFG_CPU_ADD("maincpu", MEDIAGX, 66666666*3.5/16) // 66,6 MHz x 3.5
MCFG_CPU_PROGRAM_MAP(funkball_map)
@@ -765,7 +771,7 @@ static MACHINE_CONFIG_START( funkball, funkball_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(funkball_state, screen_update)
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 447)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/funkybee.c b/src/mame/drivers/funkybee.c
index 1e970f7774e..b3bfc2cea19 100644
--- a/src/mame/drivers/funkybee.c
+++ b/src/mame/drivers/funkybee.c
@@ -307,10 +307,9 @@ static MACHINE_CONFIG_START( funkybee, funkybee_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12, 32*8-8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(funkybee)
+ MCFG_SCREEN_UPDATE_STATIC(funkybee)
MCFG_GFXDECODE(funkybee)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/funkyjet.c b/src/mame/drivers/funkyjet.c
index 232306fbe9c..6d425afdfd2 100644
--- a/src/mame/drivers/funkyjet.c
+++ b/src/mame/drivers/funkyjet.c
@@ -322,10 +322,9 @@ static MACHINE_CONFIG_START( funkyjet, funkyjet_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(funkyjet)
+ MCFG_SCREEN_UPDATE_STATIC(funkyjet)
MCFG_GFXDECODE(funkyjet)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index a66585b658c..3929b0de184 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -2364,10 +2364,9 @@ static MACHINE_CONFIG_START( fw1stpal, funworld_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(funworld)
+ MCFG_SCREEN_UPDATE_STATIC(funworld)
MCFG_GFXDECODE(fw1stpal)
diff --git a/src/mame/drivers/funybubl.c b/src/mame/drivers/funybubl.c
index 5d4adf648e8..ac7525843ed 100644
--- a/src/mame/drivers/funybubl.c
+++ b/src/mame/drivers/funybubl.c
@@ -233,11 +233,10 @@ static MACHINE_CONFIG_START( funybubl, funybubl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(funybubl)
+ MCFG_SCREEN_UPDATE_STATIC(funybubl)
MCFG_GFXDECODE(funybubl)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/fuukifg2.c b/src/mame/drivers/fuukifg2.c
index 7f202dbacea..6a3db5921a5 100644
--- a/src/mame/drivers/fuukifg2.c
+++ b/src/mame/drivers/fuukifg2.c
@@ -481,10 +481,9 @@ static MACHINE_CONFIG_START( fuuki16, fuuki16_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE(fuuki16)
+ MCFG_SCREEN_UPDATE_STATIC(fuuki16)
MCFG_GFXDECODE(fuuki16)
MCFG_PALETTE_LENGTH(0x800*4)
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index 52fd324f3ff..c38e0762e98 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -615,10 +615,9 @@ static MACHINE_CONFIG_START( fuuki32, fuuki32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE(fuuki32)
+ MCFG_SCREEN_UPDATE_STATIC(fuuki32)
MCFG_SCREEN_EOF(fuuki32)
MCFG_GFXDECODE(fuuki32)
diff --git a/src/mame/drivers/gaelco.c b/src/mame/drivers/gaelco.c
index db81d9e7ee2..40dc9fe3410 100644
--- a/src/mame/drivers/gaelco.c
+++ b/src/mame/drivers/gaelco.c
@@ -525,10 +525,9 @@ static MACHINE_CONFIG_START( bigkarnk, gaelco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(bigkarnk)
+ MCFG_SCREEN_UPDATE_STATIC(bigkarnk)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -558,10 +557,9 @@ static MACHINE_CONFIG_START( maniacsq, gaelco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(maniacsq)
+ MCFG_SCREEN_UPDATE_STATIC(maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -590,10 +588,9 @@ static MACHINE_CONFIG_START( squash, gaelco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(maniacsq)
+ MCFG_SCREEN_UPDATE_STATIC(maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
@@ -622,10 +619,9 @@ static MACHINE_CONFIG_START( thoop, gaelco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(maniacsq)
+ MCFG_SCREEN_UPDATE_STATIC(maniacsq)
MCFG_GFXDECODE(0x100000)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c
index 2efe60e7f9b..27c6ee80097 100644
--- a/src/mame/drivers/gaelco2.c
+++ b/src/mame/drivers/gaelco2.c
@@ -166,10 +166,9 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(gaelco2)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2)
MCFG_SCREEN_EOF(gaelco2)
MCFG_GFXDECODE(0x0080000)
@@ -300,10 +299,9 @@ static MACHINE_CONFIG_START( bang, gaelco2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(gaelco2)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2)
MCFG_SCREEN_EOF(gaelco2)
MCFG_GFXDECODE(0x0200000)
@@ -542,10 +540,9 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(gaelco2)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2)
MCFG_SCREEN_EOF(gaelco2)
MCFG_GFXDECODE(0x0400000)
@@ -786,20 +783,18 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gaelco2_left)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gaelco2_right)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
MCFG_SCREEN_EOF(gaelco2)
MCFG_VIDEO_START(gaelco2_dual)
@@ -981,10 +976,9 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(gaelco2)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2)
MCFG_SCREEN_EOF(gaelco2)
MCFG_GFXDECODE(0x0400000)
@@ -1224,20 +1218,18 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gaelco2_left)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gaelco2_right)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
MCFG_SCREEN_EOF(gaelco2)
diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c
index 14d617767c7..af89606d135 100644
--- a/src/mame/drivers/gaelco3d.c
+++ b/src/mame/drivers/gaelco3d.c
@@ -1029,10 +1029,9 @@ static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(576, 432)
MCFG_SCREEN_VISIBLE_AREA(0, 575, 0, 431)
- MCFG_SCREEN_UPDATE(gaelco3d)
+ MCFG_SCREEN_UPDATE_STATIC(gaelco3d)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/gaiden.c b/src/mame/drivers/gaiden.c
index 8be10248389..27bf84aea46 100644
--- a/src/mame/drivers/gaiden.c
+++ b/src/mame/drivers/gaiden.c
@@ -785,10 +785,9 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE(gaiden)
+ MCFG_SCREEN_UPDATE_STATIC(gaiden)
MCFG_GFXDECODE(gaiden)
MCFG_PALETTE_LENGTH(4096)
@@ -818,8 +817,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( raiga, shadoww )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(raiga)
+ MCFG_SCREEN_UPDATE_STATIC(raiga)
MCFG_VIDEO_START(raiga)
MCFG_GFXDECODE(raiga)
@@ -843,10 +841,9 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(drgnbowl)
+ MCFG_SCREEN_UPDATE_STATIC(drgnbowl)
MCFG_GFXDECODE(drgnbowl)
MCFG_PALETTE_LENGTH(4096)
@@ -960,10 +957,9 @@ static MACHINE_CONFIG_START( mastninj, gaiden_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gaiden)
+ MCFG_SCREEN_UPDATE_STATIC(gaiden)
MCFG_GFXDECODE(mastninj)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c
index 17da08e8676..782dce66e1f 100644
--- a/src/mame/drivers/gal3.c
+++ b/src/mame/drivers/gal3.c
@@ -178,7 +178,7 @@ static void update_palette( running_machine &machine )
}
} /* update_palette */
-static SCREEN_UPDATE(gal3)
+static SCREEN_UPDATE_RGB32(gal3)
{
gal3_state *state = screen.machine().driver_data<gal3_state>();
int i;
@@ -654,18 +654,16 @@ static MACHINE_CONFIG_START( gal3, gal3_state )
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE(gal3)
+ MCFG_SCREEN_UPDATE_STATIC(gal3)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE(gal3)
+ MCFG_SCREEN_UPDATE_STATIC(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 db893825454..0c196d2b955 100644
--- a/src/mame/drivers/galaga.c
+++ b/src/mame/drivers/galaga.c
@@ -1687,9 +1687,8 @@ static MACHINE_CONFIG_START( bosco, bosco_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE(bosco)
+ MCFG_SCREEN_UPDATE_STATIC(bosco)
MCFG_SCREEN_EOF(bosco)
MCFG_GFXDECODE(bosco)
@@ -1739,9 +1738,8 @@ static MACHINE_CONFIG_START( galaga, galaga_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE(galaga)
+ MCFG_SCREEN_UPDATE_STATIC(galaga)
MCFG_SCREEN_EOF(galaga)
MCFG_GFXDECODE(galaga)
@@ -1809,9 +1807,8 @@ static MACHINE_CONFIG_START( xevious, xevious_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE(xevious)
+ MCFG_SCREEN_UPDATE_STATIC(xevious)
MCFG_GFXDECODE(xevious)
MCFG_PALETTE_LENGTH(128*4+64*8+64*2)
@@ -1891,9 +1888,8 @@ static MACHINE_CONFIG_START( digdug, digdug_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
- MCFG_SCREEN_UPDATE(digdug)
+ MCFG_SCREEN_UPDATE_STATIC(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 e41187cb513..2657a8d3da9 100644
--- a/src/mame/drivers/galastrm.c
+++ b/src/mame/drivers/galastrm.c
@@ -324,10 +324,9 @@ static MACHINE_CONFIG_START( galastrm, galastrm_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(galastrm)
+ MCFG_SCREEN_UPDATE_STATIC(galastrm)
MCFG_GFXDECODE(galastrm)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c
index 2e77e7b0383..b2f57289102 100644
--- a/src/mame/drivers/galaxi.c
+++ b/src/mame/drivers/galaxi.c
@@ -169,7 +169,7 @@ static VIDEO_START(galaxi)
tilemap_set_scrolldx(state->m_bg3_tmap, -8, 0);
}
-static SCREEN_UPDATE(galaxi)
+static SCREEN_UPDATE_IND16(galaxi)
{
galaxi_state *state = screen.machine().driver_data<galaxi_state>();
int layers_ctrl = -1;
@@ -411,10 +411,9 @@ static MACHINE_CONFIG_START( galaxi, galaxi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(16*5, 512-16*2-1, 16*1, 256-1)
- MCFG_SCREEN_UPDATE(galaxi)
+ MCFG_SCREEN_UPDATE_STATIC(galaxi)
MCFG_GFXDECODE(galaxi)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c
index d9d251e1d87..528bae6f3d4 100644
--- a/src/mame/drivers/galaxia.c
+++ b/src/mame/drivers/galaxia.c
@@ -41,7 +41,7 @@ public:
-static SCREEN_UPDATE( galaxia )
+static SCREEN_UPDATE_IND16( galaxia )
{
galaxia_state *state = screen.machine().driver_data<galaxia_state>();
int x,y, count;
@@ -62,9 +62,9 @@ static SCREEN_UPDATE( galaxia )
}
}
- bitmap_t &s2636_0_bitmap = s2636_update(s2636_0, cliprect);
- bitmap_t &s2636_1_bitmap = s2636_update(s2636_1, cliprect);
- bitmap_t &s2636_2_bitmap = s2636_update(s2636_2, cliprect);
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(s2636_0, cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(s2636_1, cliprect);
+ bitmap_ind16 &s2636_2_bitmap = s2636_update(s2636_2, cliprect);
/* copy the S2636 images into the main bitmap */
{
@@ -276,10 +276,9 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(galaxia)
+ MCFG_SCREEN_UPDATE_STATIC(galaxia)
MCFG_GFXDECODE(galaxia)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index c56de9ac4d0..2833e1008c6 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -2009,9 +2009,8 @@ static MACHINE_CONFIG_START( galaxian_base, galaxian_state )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
- MCFG_SCREEN_UPDATE(galaxian)
+ MCFG_SCREEN_UPDATE_STATIC(galaxian)
MCFG_PALETTE_INIT(galaxian)
MCFG_VIDEO_START(galaxian)
@@ -2121,7 +2120,7 @@ static MACHINE_CONFIG_DERIVED( zigzag, galaxian_base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(zigzag)
+ MCFG_SCREEN_UPDATE_STATIC(zigzag)
/* sound hardware */
MCFG_SOUND_ADD("aysnd", AY8910, 1789750)
diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c
index d9a9122f6d4..5654fd522a9 100644
--- a/src/mame/drivers/galaxold.c
+++ b/src/mame/drivers/galaxold.c
@@ -2142,9 +2142,8 @@ static MACHINE_CONFIG_START( galaxold_base, galaxold_state )
MCFG_PALETTE_LENGTH(32+2+64) /* 32 for the characters, 2 for the bullets, 64 for the stars */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_PALETTE_INIT(galaxold)
MCFG_VIDEO_START(galaxold)
@@ -2295,10 +2294,9 @@ static MACHINE_CONFIG_START( drivfrcg, galaxold_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_PALETTE_LENGTH(64)
MCFG_GFXDECODE(gmgalax)
@@ -2322,7 +2320,7 @@ static MACHINE_CONFIG_DERIVED( bongo, galaxold_base )
MCFG_VIDEO_START(bongo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4)
MCFG_SOUND_CONFIG(bongo_ay8910_interface)
@@ -2397,9 +2395,8 @@ static MACHINE_CONFIG_START( racknrol, galaxold_state )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_PALETTE_INIT(rockclim)
MCFG_VIDEO_START(racknrol)
@@ -2453,9 +2450,8 @@ static MACHINE_CONFIG_START( hexpoola, galaxold_state )
MCFG_PALETTE_LENGTH(32)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_PALETTE_INIT(rockclim)
MCFG_VIDEO_START(racknrol)
diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c
index 63c24851c83..12fe38bfe73 100644
--- a/src/mame/drivers/galgame.c
+++ b/src/mame/drivers/galgame.c
@@ -160,7 +160,7 @@ static WRITE16_HANDLER(ke_w)
*
*************************************/
-static SCREEN_UPDATE( galaxygame )
+static SCREEN_UPDATE_IND16( galaxygame )
{
galaxygame_state *state = screen.machine().driver_data<galaxygame_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -335,10 +335,9 @@ static MACHINE_CONFIG_START( galaxygame, galaxygame_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 511)
- MCFG_SCREEN_UPDATE(galaxygame)
+ MCFG_SCREEN_UPDATE_STATIC(galaxygame)
MCFG_PALETTE_LENGTH(2)
MCFG_PALETTE_INIT(galaxygame)
diff --git a/src/mame/drivers/galivan.c b/src/mame/drivers/galivan.c
index 0bb0a94d921..5742ebdffd9 100644
--- a/src/mame/drivers/galivan.c
+++ b/src/mame/drivers/galivan.c
@@ -455,10 +455,9 @@ static MACHINE_CONFIG_START( galivan, galivan_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galivan)
+ MCFG_SCREEN_UPDATE_STATIC(galivan)
MCFG_GFXDECODE(galivan)
MCFG_PALETTE_LENGTH(8*16+16*16+256*16)
@@ -499,10 +498,9 @@ static MACHINE_CONFIG_START( ninjemak, galivan_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ninjemak)
+ MCFG_SCREEN_UPDATE_STATIC(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 340510d6d1f..3a1e0dad22a 100644
--- a/src/mame/drivers/galpani2.c
+++ b/src/mame/drivers/galpani2.c
@@ -607,10 +607,9 @@ static MACHINE_CONFIG_START( galpani2, galpani2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1-16)
- MCFG_SCREEN_UPDATE(galpani2)
+ MCFG_SCREEN_UPDATE_STATIC(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 cc7d1409fb3..809ae9773b2 100644
--- a/src/mame/drivers/galpani3.c
+++ b/src/mame/drivers/galpani3.c
@@ -106,7 +106,7 @@ public:
UINT16 *m_spriteram;
UINT32 *m_spriteram32;
UINT32 *m_spc_regs;
- bitmap_t *m_sprite_bitmap_1;
+ bitmap_ind16 *m_sprite_bitmap_1;
UINT16 *m_mcu_ram;
UINT16 m_mcu_com[4];
int m_regs1_i;
@@ -155,7 +155,7 @@ static VIDEO_START(galpani3)
machine.generic.spriteram_size = 0x4000;
state->m_spc_regs = auto_alloc_array(machine, UINT32, 0x40/4);
- state->m_sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap_1 = auto_bitmap_ind16_alloc(machine,1024,1024);
state->m_spritegen = machine.device<sknsspr_device>("spritegen");
state->m_spritegen->skns_sprite_kludge(0,0);
@@ -201,7 +201,7 @@ static int gp3_is_alpha_pen(running_machine &machine, int pen)
}
-static SCREEN_UPDATE(galpani3)
+static SCREEN_UPDATE_RGB32(galpani3)
{
galpani3_state *state = screen.machine().driver_data<galpani3_state>();
int x,y;
@@ -960,11 +960,10 @@ static MACHINE_CONFIG_START( galpani3, galpani3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(galpani3)
+ MCFG_SCREEN_UPDATE_STATIC(galpani3)
MCFG_PALETTE_LENGTH(0x4303)
diff --git a/src/mame/drivers/galpanic.c b/src/mame/drivers/galpanic.c
index 72487258905..3abbd5f4b1a 100644
--- a/src/mame/drivers/galpanic.c
+++ b/src/mame/drivers/galpanic.c
@@ -574,10 +574,9 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(galpanic)
+ MCFG_SCREEN_UPDATE_STATIC(galpanic)
MCFG_SCREEN_EOF( galpanic )
MCFG_GFXDECODE(galpanic)
@@ -615,7 +614,7 @@ static MACHINE_CONFIG_DERIVED( comad, galpanic )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(comad)
+ MCFG_SCREEN_UPDATE_STATIC(comad)
MCFG_SCREEN_EOF(0)
MACHINE_CONFIG_END
@@ -629,7 +628,7 @@ static MACHINE_CONFIG_DERIVED( supmodel, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(comad)
+ MCFG_SCREEN_UPDATE_STATIC(comad)
MCFG_SCREEN_EOF(0)
/* sound hardware */
@@ -647,7 +646,7 @@ static MACHINE_CONFIG_DERIVED( fantsia2, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(comad)
+ MCFG_SCREEN_UPDATE_STATIC(comad)
MCFG_SCREEN_EOF(0)
MACHINE_CONFIG_END
@@ -662,7 +661,7 @@ static MACHINE_CONFIG_DERIVED( galhustl, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(comad)
+ MCFG_SCREEN_UPDATE_STATIC(comad)
MCFG_SCREEN_EOF(0)
/* sound hardware */
@@ -681,7 +680,7 @@ static MACHINE_CONFIG_DERIVED( zipzap, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(comad)
+ MCFG_SCREEN_UPDATE_STATIC(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 305f3b90e45..f106728d7b3 100644
--- a/src/mame/drivers/galspnbl.c
+++ b/src/mame/drivers/galspnbl.c
@@ -226,10 +226,9 @@ static MACHINE_CONFIG_START( galspnbl, galspnbl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(galspnbl)
+ MCFG_SCREEN_UPDATE_STATIC(galspnbl)
MCFG_GFXDECODE(galspnbl)
MCFG_PALETTE_LENGTH(1024 + 32768)
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index ac315f39d78..bd92cf9dea0 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -117,7 +117,7 @@ static VIDEO_START(gamecstl)
palette_set_color(machine, i, cga_palette[i]);
}
-static void draw_char(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx, int ch, int att, int x, int y)
+static void draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx, int ch, int att, int x, int y)
{
int i,j;
const UINT8 *dp;
@@ -139,7 +139,7 @@ static void draw_char(bitmap_t &bitmap, const rectangle &cliprect, const gfx_ele
}
}
-static SCREEN_UPDATE(gamecstl)
+static SCREEN_UPDATE_IND16(gamecstl)
{
gamecstl_state *state = screen.machine().driver_data<gamecstl_state>();
int i, j;
@@ -719,10 +719,9 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199)
- MCFG_SCREEN_UPDATE(gamecstl)
+ MCFG_SCREEN_UPDATE_STATIC(gamecstl)
MCFG_GFXDECODE(CGA)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/gamtor.c b/src/mame/drivers/gamtor.c
index d51d80f5b8d..4cb8a494df0 100644
--- a/src/mame/drivers/gamtor.c
+++ b/src/mame/drivers/gamtor.c
@@ -114,7 +114,7 @@ VIDEO_START( gamtor )
}
-SCREEN_UPDATE(gamtor)
+SCREEN_UPDATE_IND16(gamtor)
{
gaminator_state *state = screen.machine().driver_data<gaminator_state>();
@@ -201,10 +201,9 @@ static MACHINE_CONFIG_START( gaminator, gaminator_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(gamtor)
+ MCFG_SCREEN_UPDATE_STATIC(gamtor)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/gaplus.c b/src/mame/drivers/gaplus.c
index eff608b4ff8..6b4ad2cd6a6 100644
--- a/src/mame/drivers/gaplus.c
+++ b/src/mame/drivers/gaplus.c
@@ -588,10 +588,9 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(gaplus)
+ MCFG_SCREEN_UPDATE_STATIC(gaplus)
MCFG_SCREEN_EOF(gaplus)
MCFG_GFXDECODE(gaplus)
diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c
index b3f3de2f9ab..371ff849050 100644
--- a/src/mame/drivers/gatron.c
+++ b/src/mame/drivers/gatron.c
@@ -448,10 +448,9 @@ static MACHINE_CONFIG_START( gat, gatron_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(48*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1)
- MCFG_SCREEN_UPDATE(gat)
+ MCFG_SCREEN_UPDATE_STATIC(gat)
MCFG_GFXDECODE(gat)
MCFG_PALETTE_INIT(gat)
diff --git a/src/mame/drivers/gauntlet.c b/src/mame/drivers/gauntlet.c
index e5a97a1fb55..d0685cd8e9c 100644
--- a/src/mame/drivers/gauntlet.c
+++ b/src/mame/drivers/gauntlet.c
@@ -534,11 +534,10 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(gauntlet)
+ MCFG_SCREEN_UPDATE_STATIC(gauntlet)
MCFG_VIDEO_START(gauntlet)
diff --git a/src/mame/drivers/gberet.c b/src/mame/drivers/gberet.c
index 2c8dfde9d25..14224c610da 100644
--- a/src/mame/drivers/gberet.c
+++ b/src/mame/drivers/gberet.c
@@ -421,10 +421,9 @@ static MACHINE_CONFIG_START( gberet, gberet_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gberet)
+ MCFG_SCREEN_UPDATE_STATIC(gberet)
MCFG_GFXDECODE(gberet)
MCFG_PALETTE_LENGTH(2*16*16)
@@ -450,7 +449,7 @@ static MACHINE_CONFIG_DERIVED( gberetb, gberet )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE(gberetb)
+ MCFG_SCREEN_UPDATE_STATIC(gberetb)
MCFG_GFXDECODE(gberetb)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gbusters.c b/src/mame/drivers/gbusters.c
index dbc75bc13fa..06f837dc383 100644
--- a/src/mame/drivers/gbusters.c
+++ b/src/mame/drivers/gbusters.c
@@ -326,10 +326,9 @@ static MACHINE_CONFIG_START( gbusters, gbusters_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gbusters)
+ MCFG_SCREEN_UPDATE_STATIC(gbusters)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gcpinbal.c b/src/mame/drivers/gcpinbal.c
index 166ec91e791..2656ddaa0a9 100644
--- a/src/mame/drivers/gcpinbal.c
+++ b/src/mame/drivers/gcpinbal.c
@@ -444,10 +444,9 @@ static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gcpinbal)
+ MCFG_SCREEN_UPDATE_STATIC(gcpinbal)
MCFG_MACHINE_START(gcpinbal)
MCFG_MACHINE_RESET(gcpinbal)
diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c
index f984e5fe116..6156da10e10 100644
--- a/src/mame/drivers/gei.c
+++ b/src/mame/drivers/gei.c
@@ -79,6 +79,12 @@ public:
gei_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
+ virtual void video_start();
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ bitmap_ind16 m_bitmap;
+
UINT8 m_drawctrl[3];
UINT8 m_color[8];
int m_prevoffset;
@@ -116,7 +122,7 @@ static WRITE8_HANDLER( gei_bitmap_w )
for (i = 0; i < 8; i++)
- space->machine().primary_screen->default_bitmap().pix16(sy, sx+i) = state->m_color[8-i-1];
+ state->m_bitmap.pix16(sy, sx+i) = state->m_color[8-i-1];
}
static PALETTE_INIT(gei)
@@ -139,6 +145,17 @@ static PALETTE_INIT(quizvid)
}
}
+void gei_state::video_start()
+{
+ m_bitmap.allocate(machine().primary_screen->width(), machine().primary_screen->height());
+}
+
+UINT32 gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
+ return 0;
+}
+
static WRITE8_DEVICE_HANDLER( lamps_w )
{
/* 5 button lamps */
@@ -1084,7 +1101,7 @@ static MACHINE_CONFIG_START( getrivia, gei_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(gei_state, screen_update)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(48, 511-48, 16, 255-16)
diff --git a/src/mame/drivers/ggconnie.c b/src/mame/drivers/ggconnie.c
index 9bd602de1fe..2414ea15d49 100644
--- a/src/mame/drivers/ggconnie.c
+++ b/src/mame/drivers/ggconnie.c
@@ -164,9 +164,8 @@ static MACHINE_CONFIG_START( ggconnie, ggconnie_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
- MCFG_SCREEN_UPDATE( pce )
+ MCFG_SCREEN_UPDATE_STATIC( pce )
/* MCFG_GFXDECODE( pce_gfxdecodeinfo ) */
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/ghosteo.c b/src/mame/drivers/ghosteo.c
index 006988c09eb..c54cd36aae5 100644
--- a/src/mame/drivers/ghosteo.c
+++ b/src/mame/drivers/ghosteo.c
@@ -474,10 +474,9 @@ static MACHINE_CONFIG_START( bballoon, ghosteo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(455, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(s3c2410)
+ MCFG_SCREEN_UPDATE_STATIC(s3c2410)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/gijoe.c b/src/mame/drivers/gijoe.c
index f391c2161fc..c748d9a8785 100644
--- a/src/mame/drivers/gijoe.c
+++ b/src/mame/drivers/gijoe.c
@@ -317,10 +317,9 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(gijoe)
+ MCFG_SCREEN_UPDATE_STATIC(gijoe)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ginganin.c b/src/mame/drivers/ginganin.c
index b096cd2a9c2..ea87cf4c35a 100644
--- a/src/mame/drivers/ginganin.c
+++ b/src/mame/drivers/ginganin.c
@@ -277,10 +277,9 @@ static MACHINE_CONFIG_START( ginganin, ginganin_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0 + 16 , 255 - 16)
- MCFG_SCREEN_UPDATE(ginganin)
+ MCFG_SCREEN_UPDATE_STATIC(ginganin)
MCFG_GFXDECODE(ginganin)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c
index 36c81e31bc8..3e226d57668 100644
--- a/src/mame/drivers/gladiatr.c
+++ b/src/mame/drivers/gladiatr.c
@@ -689,10 +689,9 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ppking)
+ MCFG_SCREEN_UPDATE_STATIC(ppking)
MCFG_GFXDECODE(ppking)
MCFG_PALETTE_LENGTH(1024)
@@ -738,10 +737,9 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gladiatr)
+ MCFG_SCREEN_UPDATE_STATIC(gladiatr)
MCFG_GFXDECODE(gladiatr)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/glass.c b/src/mame/drivers/glass.c
index 42baed3e0f4..472764a73a9 100644
--- a/src/mame/drivers/glass.c
+++ b/src/mame/drivers/glass.c
@@ -208,10 +208,9 @@ static MACHINE_CONFIG_START( glass, glass_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 368-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(glass)
+ MCFG_SCREEN_UPDATE_STATIC(glass)
MCFG_GFXDECODE(glass)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c
index 71c9052acf7..443c2d2f9a1 100644
--- a/src/mame/drivers/gng.c
+++ b/src/mame/drivers/gng.c
@@ -360,10 +360,9 @@ static MACHINE_CONFIG_START( gng, gng_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.59) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gng)
+ MCFG_SCREEN_UPDATE_STATIC(gng)
MCFG_SCREEN_EOF(gng)
MCFG_GFXDECODE(gng)
diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c
index f6dcaa52c07..c080f3c7fa9 100644
--- a/src/mame/drivers/go2000.c
+++ b/src/mame/drivers/go2000.c
@@ -169,7 +169,7 @@ static VIDEO_START(go2000)
{
}
-static SCREEN_UPDATE(go2000)
+static SCREEN_UPDATE_IND16(go2000)
{
go2000_state *state = screen.machine().driver_data<go2000_state>();
int x,y;
@@ -335,10 +335,9 @@ static MACHINE_CONFIG_START( go2000, go2000_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(go2000)
+ MCFG_SCREEN_UPDATE_STATIC(go2000)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/goal92.c b/src/mame/drivers/goal92.c
index 05dba006331..1a20cb4ab86 100644
--- a/src/mame/drivers/goal92.c
+++ b/src/mame/drivers/goal92.c
@@ -331,10 +331,9 @@ static MACHINE_CONFIG_START( goal92, goal92_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(goal92)
+ MCFG_SCREEN_UPDATE_STATIC(goal92)
MCFG_SCREEN_EOF(goal92)
MCFG_GFXDECODE(goal92)
diff --git a/src/mame/drivers/goindol.c b/src/mame/drivers/goindol.c
index 4a795e8b96e..b724643b7d1 100644
--- a/src/mame/drivers/goindol.c
+++ b/src/mame/drivers/goindol.c
@@ -260,10 +260,9 @@ static MACHINE_CONFIG_START( goindol, goindol_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goindol)
+ MCFG_SCREEN_UPDATE_STATIC(goindol)
MCFG_GFXDECODE(goindol)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c
index 08b586ef3c4..140431e30d8 100644
--- a/src/mame/drivers/goldngam.c
+++ b/src/mame/drivers/goldngam.c
@@ -256,7 +256,7 @@ static VIDEO_START( goldngam )
}
-static SCREEN_UPDATE( goldngam )
+static SCREEN_UPDATE_IND16( goldngam )
{
goldngam_state *state = screen.machine().driver_data<goldngam_state>();
@@ -561,10 +561,9 @@ static MACHINE_CONFIG_START( swisspkr, goldngam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(goldngam)
+ MCFG_SCREEN_UPDATE_STATIC(goldngam)
MCFG_GFXDECODE(goldngam)
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 463eb402265..6578300afd1 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -800,7 +800,7 @@ static VIDEO_START( wcrdxtnd )
state->m_bg_tilemap = tilemap_create(machine, xtnd_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( goldnpkr )
+static SCREEN_UPDATE_IND16( goldnpkr )
{
goldnpkr_state *state = screen.machine().driver_data<goldnpkr_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -2935,10 +2935,9 @@ static MACHINE_CONFIG_START( goldnpkr_base, goldnpkr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(goldnpkr)
+ MCFG_SCREEN_UPDATE_STATIC(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 7122fe4f9ce..64b59efa008 100644
--- a/src/mame/drivers/goldstar.c
+++ b/src/mame/drivers/goldstar.c
@@ -5853,10 +5853,9 @@ static MACHINE_CONFIG_START( goldstar, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(goldstar)
MCFG_PALETTE_LENGTH(256)
@@ -5888,10 +5887,9 @@ static MACHINE_CONFIG_START( goldstbl, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(bl)
MCFG_PALETTE_LENGTH(256)
@@ -5922,10 +5920,9 @@ static MACHINE_CONFIG_START( moonlght, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(ml)
MCFG_PALETTE_LENGTH(256)
@@ -6022,10 +6019,9 @@ static MACHINE_CONFIG_START( chrygld, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(chry10)
MCFG_PALETTE_LENGTH(256)
@@ -6064,10 +6060,9 @@ static MACHINE_CONFIG_START( cb3c, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(cb3c)
MCFG_PALETTE_LENGTH(256)
@@ -6105,10 +6100,9 @@ static MACHINE_CONFIG_START( ncb3, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6146,10 +6140,9 @@ static MACHINE_CONFIG_START( cm, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(cmbitmap)
MCFG_PALETTE_LENGTH(256)
@@ -6187,10 +6180,9 @@ static MACHINE_CONFIG_START( cmnobmp, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6223,10 +6215,9 @@ static MACHINE_CONFIG_START( cmast91, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(cmast91)
+ MCFG_SCREEN_UPDATE_STATIC(cmast91)
MCFG_GFXDECODE(cmast91)
MCFG_PALETTE_LENGTH(256)
@@ -6267,11 +6258,10 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT(lucky8)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6307,11 +6297,10 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT(lucky8)
- MCFG_SCREEN_UPDATE(bingowng)
+ MCFG_SCREEN_UPDATE_STATIC(bingowng)
MCFG_GFXDECODE(ncb3)
MCFG_PALETTE_LENGTH(256)
@@ -6347,11 +6336,10 @@ static MACHINE_CONFIG_START( bingownga, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_PALETTE_INIT(lucky8)
- MCFG_SCREEN_UPDATE(bingowng)
+ MCFG_SCREEN_UPDATE_STATIC(bingowng)
MCFG_GFXDECODE(bingownga) /* GFX Decode is the only difference with the parent machine */
MCFG_PALETTE_LENGTH(256)
@@ -6404,10 +6392,9 @@ static MACHINE_CONFIG_START( magodds, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(magical)
+ MCFG_SCREEN_UPDATE_STATIC(magical)
MCFG_PALETTE_INIT(magodds)
MCFG_GFXDECODE(magodds)
@@ -6446,10 +6433,9 @@ static MACHINE_CONFIG_START( kkotnoli, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_PALETTE_INIT(lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6482,10 +6468,9 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_PALETTE_INIT(lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6523,10 +6508,9 @@ static MACHINE_CONFIG_START( wcat3, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_PALETTE_INIT(lucky8)
MCFG_GFXDECODE(ncb3)
@@ -6565,10 +6549,9 @@ static MACHINE_CONFIG_START( amcoe1, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6605,10 +6588,9 @@ static MACHINE_CONFIG_START( amcoe1a, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(amcoe1a)
+ MCFG_SCREEN_UPDATE_STATIC(amcoe1a)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6645,10 +6627,9 @@ static MACHINE_CONFIG_START( amcoe2, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(cm)
MCFG_PALETTE_LENGTH(256)
@@ -6680,10 +6661,9 @@ static MACHINE_CONFIG_START( nfm, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(nfm)
MCFG_PALETTE_LENGTH(256)
@@ -6712,10 +6692,9 @@ static MACHINE_CONFIG_START( unkch, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(unkch)
+ MCFG_SCREEN_UPDATE_STATIC(unkch)
MCFG_GFXDECODE(unkch)
MCFG_PALETTE_LENGTH(512)
@@ -6761,10 +6740,9 @@ static MACHINE_CONFIG_START( pkrmast, goldstar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(goldstar)
+ MCFG_SCREEN_UPDATE_STATIC(goldstar)
MCFG_GFXDECODE(pkrmast)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/gomoku.c b/src/mame/drivers/gomoku.c
index ee9fb7fb60b..e22704fbda2 100644
--- a/src/mame/drivers/gomoku.c
+++ b/src/mame/drivers/gomoku.c
@@ -127,10 +127,9 @@ static MACHINE_CONFIG_START( gomoku, gomoku_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(gomoku)
+ MCFG_SCREEN_UPDATE_STATIC(gomoku)
MCFG_GFXDECODE(gomoku)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/good.c b/src/mame/drivers/good.c
index e0402a86fa2..0581a385e51 100644
--- a/src/mame/drivers/good.c
+++ b/src/mame/drivers/good.c
@@ -93,7 +93,7 @@ static VIDEO_START( good )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0xf);
}
-static SCREEN_UPDATE( good )
+static SCREEN_UPDATE_IND16( good )
{
good_state *state = screen.machine().driver_data<good_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -284,10 +284,9 @@ static MACHINE_CONFIG_START( good, good_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 23*16-1, 0*16, 14*16-1)
- MCFG_SCREEN_UPDATE(good)
+ MCFG_SCREEN_UPDATE_STATIC(good)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/goodejan.c b/src/mame/drivers/goodejan.c
index 65c7f5373d5..3211e172fc4 100644
--- a/src/mame/drivers/goodejan.c
+++ b/src/mame/drivers/goodejan.c
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( goodejan, goodejan_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) //TODO: dynamic resolution
- MCFG_SCREEN_UPDATE(seibu_crtc)
+ MCFG_SCREEN_UPDATE_STATIC(seibu_crtc)
MCFG_GFXDECODE(goodejan)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/gotcha.c b/src/mame/drivers/gotcha.c
index 17fe0b89989..76de1756a6e 100644
--- a/src/mame/drivers/gotcha.c
+++ b/src/mame/drivers/gotcha.c
@@ -291,10 +291,9 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(gotcha)
+ MCFG_SCREEN_UPDATE_STATIC(gotcha)
MCFG_GFXDECODE(gotcha)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c
index fe116a89dba..671a491a701 100644
--- a/src/mame/drivers/gottlieb.c
+++ b/src/mame/drivers/gottlieb.c
@@ -196,7 +196,6 @@ VBlank duration: 1/VSYNC * (16/256) = 1017.6 us
#include "emu.h"
#include "cpu/i86/i86.h"
#include "machine/6532riot.h"
-#include "machine/laserdsc.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "sound/samples.h"
@@ -244,7 +243,6 @@ static MACHINE_START( gottlieb )
state_save_register_global_array(machine, state->m_track);
/* see if we have a laserdisc */
- state->m_laserdisc = machine.devicelist().first(PIONEER_PR8210);
if (state->m_laserdisc != NULL)
{
/* attach to the I/O ports */
@@ -436,7 +434,7 @@ static WRITE8_HANDLER( laserdisc_command_w )
static TIMER_CALLBACK( laserdisc_philips_callback )
{
gottlieb_state *state = machine.driver_data<gottlieb_state>();
- int newcode = laserdisc_get_field_code(state->m_laserdisc, (param == 17) ? LASERDISC_CODE_LINE17 : LASERDISC_CODE_LINE18, TRUE);
+ UINT32 newcode = state->m_laserdisc->get_field_code((param == 17) ? LASERDISC_CODE_LINE17 : LASERDISC_CODE_LINE18, TRUE);
/* the PR8210 sends line 17/18 data on each frame; the laserdisc interface
board receives notification and latches the most recent frame number */
@@ -458,7 +456,7 @@ static TIMER_CALLBACK( laserdisc_bit_off_callback )
{
gottlieb_state *state = machine.driver_data<gottlieb_state>();
/* deassert the control line */
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_CONTROL, CLEAR_LINE);
+ state->m_laserdisc->control_w(CLEAR_LINE);
}
@@ -470,7 +468,7 @@ static TIMER_CALLBACK( laserdisc_bit_callback )
attotime duration;
/* assert the line and set a timer for deassertion */
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_CONTROL, ASSERT_LINE);
+ state->m_laserdisc->control_w(ASSERT_LINE);
machine.scheduler().timer_set(LASERDISC_CLOCK * 10, FUNC(laserdisc_bit_off_callback));
/* determine how long for the next command; there is a 555 timer with a
@@ -596,10 +594,10 @@ static void audio_handle_zero_crossing(gottlieb_state *state, attotime zerotime,
}
-static void laserdisc_audio_process(device_t *device, int samplerate, int samples, const INT16 *ch0, const INT16 *ch1)
+static void laserdisc_audio_process(device_t *dummy, laserdisc_device &device, int samplerate, int samples, const INT16 *ch0, const INT16 *ch1)
{
- gottlieb_state *state = device->machine().driver_data<gottlieb_state>();
- int logit = LOG_AUDIO_DECODE && device->machine().input().code_pressed(KEYCODE_L);
+ gottlieb_state *state = device.machine().driver_data<gottlieb_state>();
+ int logit = LOG_AUDIO_DECODE && device.machine().input().code_pressed(KEYCODE_L);
attotime time_per_sample = attotime::from_hz(samplerate);
attotime curtime = state->m_laserdisc_last_time;
int cursamp;
@@ -680,10 +678,8 @@ static INTERRUPT_GEN( gottlieb_interrupt )
/* if we have a laserdisc, update it */
if (state->m_laserdisc != NULL)
{
- bitmap_t *dummy;
-
/* set the "disc ready" bit, which basically indicates whether or not we have a proper video frame */
- if (!laserdisc_get_video(state->m_laserdisc, &dummy))
+ if (!state->m_laserdisc->video_active())
state->m_laserdisc_status &= ~0x20;
else
state->m_laserdisc_status |= 0x20;
@@ -1858,9 +1854,8 @@ static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
- MCFG_SCREEN_UPDATE(gottlieb)
+ MCFG_SCREEN_UPDATE_STATIC(gottlieb)
MCFG_GFXDECODE(gfxdecode)
MCFG_PALETTE_LENGTH(16)
@@ -1885,15 +1880,15 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( g2laser, gottlieb_core )
MCFG_FRAGMENT_ADD(gottlieb_soundrev2)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound")
- MCFG_LASERDISC_AUDIO(laserdisc_audio_process)
- MCFG_LASERDISC_OVERLAY(gottlieb, GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_PR8210_ADD("laserdisc")
+ MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(laserdisc_audio_process), device))
+ MCFG_LASERDISC_OVERLAY(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb)
MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
MCFG_DEVICE_REMOVE("screen")
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "mono", 1.0)
/* right channel is processed as data */
MACHINE_CONFIG_END
@@ -1937,15 +1932,15 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cobram3, gottlieb_core )
MCFG_FRAGMENT_ADD(gottlieb_cobram3_soundrev2)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound")
- MCFG_LASERDISC_AUDIO(laserdisc_audio_process)
- MCFG_LASERDISC_OVERLAY(gottlieb, GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_PR8210_ADD("laserdisc")
+ MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(FUNC(laserdisc_audio_process), device))
+ MCFG_LASERDISC_OVERLAY(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb)
MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8)
MCFG_DEVICE_REMOVE("screen")
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
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 1e674b801b0..e44a0a71e14 100644
--- a/src/mame/drivers/gotya.c
+++ b/src/mame/drivers/gotya.c
@@ -206,10 +206,9 @@ static MACHINE_CONFIG_START( gotya, gotya_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gotya)
+ MCFG_SCREEN_UPDATE_STATIC(gotya)
MCFG_GFXDECODE(gotya)
MCFG_PALETTE_LENGTH(16*4)
diff --git a/src/mame/drivers/gpworld.c b/src/mame/drivers/gpworld.c
index 2d5bebd7790..cd6bd53d800 100644
--- a/src/mame/drivers/gpworld.c
+++ b/src/mame/drivers/gpworld.c
@@ -41,14 +41,15 @@ Dumping Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
class gpworld_state : public driver_device
{
public:
gpworld_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
UINT8 m_nmi_enable;
UINT8 m_start_lamp;
@@ -58,7 +59,7 @@ public:
UINT8* m_tile_RAM;
UINT8* m_sprite_RAM;
UINT8* m_palette_RAM;
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
};
@@ -70,7 +71,7 @@ public:
/* VIDEO GOODS */
-static void gpworld_draw_tiles(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void gpworld_draw_tiles(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
gpworld_state *state = machine.driver_data<gpworld_state>();
UINT8 characterX, characterY;
@@ -88,7 +89,7 @@ static void gpworld_draw_tiles(running_machine &machine, bitmap_t &bitmap,const
}
}
-INLINE void draw_pixel(bitmap_t &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
+INLINE void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
{
if (flip)
{
@@ -102,10 +103,10 @@ INLINE void draw_pixel(bitmap_t &bitmap,const rectangle &cliprect,int x,int y,in
y > cliprect.max_y)
return;
- bitmap.pix32(y, x) = color;
+ bitmap.pix16(y, x) = color;
}
-static void gpworld_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void gpworld_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
gpworld_state *state = machine.driver_data<gpworld_state>();
const int SPR_Y_TOP = 0;
@@ -216,7 +217,7 @@ static void gpworld_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
}
-static SCREEN_UPDATE( gpworld )
+static SCREEN_UPDATE_IND16( gpworld )
{
bitmap.fill(0, cliprect);
@@ -229,8 +230,6 @@ static SCREEN_UPDATE( gpworld )
static MACHINE_START( gpworld )
{
- gpworld_state *state = machine.driver_data<gpworld_state>();
- state->m_laserdisc = machine.device("laserdisc");
}
@@ -435,8 +434,8 @@ static INTERRUPT_GEN( vblank_callback_gpworld )
/* Do an NMI if the enabled bit is set */
if (state->m_nmi_enable)
{
- laserdisc_data_w(state->m_laserdisc,state->m_ldp_write_latch);
- state->m_ldp_read_latch = laserdisc_data_r(state->m_laserdisc);
+ state->m_laserdisc->data_w(state->m_ldp_write_latch);
+ state->m_ldp_read_latch = state->m_laserdisc->status_r();
device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
@@ -471,11 +470,11 @@ static MACHINE_CONFIG_START( gpworld, gpworld_state )
MCFG_MACHINE_START(gpworld)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(gpworld, 512, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(512, 256, gpworld)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE(gpworld)
MCFG_PALETTE_LENGTH(1024)
@@ -483,7 +482,7 @@ static MACHINE_CONFIG_START( gpworld, gpworld_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gradius3.c b/src/mame/drivers/gradius3.c
index e42ccdb51ec..71108b4f03b 100644
--- a/src/mame/drivers/gradius3.c
+++ b/src/mame/drivers/gradius3.c
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(gradius3)
+ MCFG_SCREEN_UPDATE_STATIC(gradius3)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/grchamp.c b/src/mame/drivers/grchamp.c
index a79e8c3e225..14de0ad5b24 100644
--- a/src/mame/drivers/grchamp.c
+++ b/src/mame/drivers/grchamp.c
@@ -700,9 +700,8 @@ static MACHINE_CONFIG_START( grchamp, grchamp_state )
MCFG_GFXDECODE(grchamp)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(grchamp)
+ MCFG_SCREEN_UPDATE_STATIC(grchamp)
MCFG_PALETTE_INIT(grchamp)
MCFG_VIDEO_START(grchamp)
diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c
index 8027046f8d2..742514788aa 100644
--- a/src/mame/drivers/gridlee.c
+++ b/src/mame/drivers/gridlee.c
@@ -437,9 +437,8 @@ static MACHINE_CONFIG_START( gridlee, gridlee_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(GRIDLEE_PIXEL_CLOCK, GRIDLEE_HTOTAL, GRIDLEE_HBEND, GRIDLEE_HBSTART, GRIDLEE_VTOTAL, GRIDLEE_VBEND, GRIDLEE_VBSTART)
- MCFG_SCREEN_UPDATE(gridlee)
+ MCFG_SCREEN_UPDATE_STATIC(gridlee)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c
index 816e64aff19..a0d2382d88b 100644
--- a/src/mame/drivers/groundfx.c
+++ b/src/mame/drivers/groundfx.c
@@ -378,10 +378,9 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE(groundfx)
+ MCFG_SCREEN_UPDATE_STATIC(groundfx)
MCFG_GFXDECODE(groundfx)
MCFG_PALETTE_LENGTH(16384)
diff --git a/src/mame/drivers/gstream.c b/src/mame/drivers/gstream.c
index cd2b1e18211..04ffa3229d1 100644
--- a/src/mame/drivers/gstream.c
+++ b/src/mame/drivers/gstream.c
@@ -473,7 +473,7 @@ static VIDEO_START(gstream)
tilemap_set_transparent_pen(state->m_tilemap2, 0);
}
-static SCREEN_UPDATE(gstream)
+static SCREEN_UPDATE_IND16(gstream)
{
/* The tilemaps and sprite are interleaved together.
Even Words are tilemap tiles
@@ -571,10 +571,9 @@ static MACHINE_CONFIG_START( gstream, gstream_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(gstream)
+ MCFG_SCREEN_UPDATE_STATIC(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 5129d7e1b88..6f5b872a862 100644
--- a/src/mame/drivers/gstriker.c
+++ b/src/mame/drivers/gstriker.c
@@ -557,10 +557,9 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* hand-tuned, it needs a bit */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(gstriker)
+ MCFG_SCREEN_UPDATE_STATIC(gstriker)
MCFG_GFXDECODE(gstriker)
MCFG_PALETTE_LENGTH(0x800)
@@ -596,10 +595,9 @@ static MACHINE_CONFIG_START( vgoal, gstriker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* hand-tuned, it needs a bit */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(gstriker)
+ MCFG_SCREEN_UPDATE_STATIC(gstriker)
MCFG_GFXDECODE(gstriker)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c
index 87c320898da..d77bd3745aa 100644
--- a/src/mame/drivers/gsword.c
+++ b/src/mame/drivers/gsword.c
@@ -688,10 +688,9 @@ static MACHINE_CONFIG_START( gsword, gsword_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gsword)
+ MCFG_SCREEN_UPDATE_STATIC(gsword)
MCFG_GFXDECODE(gsword)
MCFG_PALETTE_LENGTH(64*4+64*4)
@@ -733,10 +732,9 @@ static MACHINE_CONFIG_START( josvolly, gsword_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gsword)
+ MCFG_SCREEN_UPDATE_STATIC(gsword)
MCFG_GFXDECODE(gsword)
MCFG_PALETTE_LENGTH(64*4+64*4)
diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c
index bb599ea0808..808a65b4b15 100644
--- a/src/mame/drivers/gticlub.c
+++ b/src/mame/drivers/gticlub.c
@@ -816,10 +816,9 @@ static MACHINE_CONFIG_START( gticlub, gticlub_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(gticlub)
+ MCFG_SCREEN_UPDATE_STATIC(gticlub)
MCFG_PALETTE_LENGTH(65536)
@@ -917,18 +916,16 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state )
MCFG_PALETTE_LENGTH(65536)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(hangplt)
+ MCFG_SCREEN_UPDATE_STATIC(hangplt)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(hangplt)
+ MCFG_SCREEN_UPDATE_STATIC(hangplt)
MCFG_K001604_ADD("k001604_1", hangplt_k001604_intf_l)
MCFG_K001604_ADD("k001604_2", hangplt_k001604_intf_r)
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index 34fca70f1a0..56557e19810 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -243,7 +243,7 @@ static VIDEO_START( guab )
}
-static SCREEN_UPDATE( guab )
+static SCREEN_UPDATE_IND16( guab )
{
int x, y;
struct tms34061_display state;
@@ -797,10 +797,9 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(guab)
+ MCFG_SCREEN_UPDATE_STATIC(guab)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/gumbo.c b/src/mame/drivers/gumbo.c
index 21ecf8c4e92..45ee9de7516 100644
--- a/src/mame/drivers/gumbo.c
+++ b/src/mame/drivers/gumbo.c
@@ -238,10 +238,9 @@ static MACHINE_CONFIG_START( gumbo, gumbo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gumbo)
+ MCFG_SCREEN_UPDATE_STATIC(gumbo)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c
index 31b53394cec..caa66d0d430 100644
--- a/src/mame/drivers/gunbustr.c
+++ b/src/mame/drivers/gunbustr.c
@@ -353,10 +353,9 @@ static MACHINE_CONFIG_START( gunbustr, gunbustr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(gunbustr)
+ MCFG_SCREEN_UPDATE_STATIC(gunbustr)
MCFG_GFXDECODE(gunbustr)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/gundealr.c b/src/mame/drivers/gundealr.c
index ef0aaa426dc..1053c703ed7 100644
--- a/src/mame/drivers/gundealr.c
+++ b/src/mame/drivers/gundealr.c
@@ -421,10 +421,9 @@ static MACHINE_CONFIG_START( gundealr, gundealr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gundealr)
+ MCFG_SCREEN_UPDATE_STATIC(gundealr)
MCFG_GFXDECODE(gundealr)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/gunpey.c b/src/mame/drivers/gunpey.c
index 91e108ae7d8..8328f5d7e38 100644
--- a/src/mame/drivers/gunpey.c
+++ b/src/mame/drivers/gunpey.c
@@ -68,7 +68,7 @@ static VIDEO_START( gunpey )
state->m_blit_buffer = auto_alloc_array(machine, UINT16, 512*512);
}
-static SCREEN_UPDATE( gunpey )
+static SCREEN_UPDATE_RGB32( gunpey )
{
gunpey_state *state = screen.machine().driver_data<gunpey_state>();
UINT16 *blit_buffer = state->m_blit_buffer;
@@ -340,10 +340,9 @@ static MACHINE_CONFIG_START( gunpey, gunpey_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE(gunpey)
+ MCFG_SCREEN_UPDATE_STATIC(gunpey)
MCFG_PALETTE_LENGTH(0x800)
MCFG_PALETTE_INIT(gunpey)
diff --git a/src/mame/drivers/gunsmoke.c b/src/mame/drivers/gunsmoke.c
index ce82694eefe..d215920a1a7 100644
--- a/src/mame/drivers/gunsmoke.c
+++ b/src/mame/drivers/gunsmoke.c
@@ -312,7 +312,6 @@ static MACHINE_CONFIG_START( gunsmoke, gunsmoke_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
@@ -321,7 +320,7 @@ static MACHINE_CONFIG_START( gunsmoke, gunsmoke_state )
MCFG_PALETTE_INIT(gunsmoke)
MCFG_VIDEO_START(gunsmoke)
- MCFG_SCREEN_UPDATE(gunsmoke)
+ MCFG_SCREEN_UPDATE_STATIC(gunsmoke)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gyruss.c b/src/mame/drivers/gyruss.c
index 566e2510cd9..002a5b12eff 100644
--- a/src/mame/drivers/gyruss.c
+++ b/src/mame/drivers/gyruss.c
@@ -561,10 +561,9 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gyruss)
+ MCFG_SCREEN_UPDATE_STATIC(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 02fe9c8d266..90678002777 100644
--- a/src/mame/drivers/halleys.c
+++ b/src/mame/drivers/halleys.c
@@ -1245,7 +1245,7 @@ static VIDEO_START( halleys )
}
-static void copy_scroll_op(bitmap_t &bitmap, UINT16 *source, int sx, int sy)
+static void copy_scroll_op(bitmap_ind16 &bitmap, UINT16 *source, int sx, int sy)
{
//--------------------------------------------------------------------------
@@ -1283,7 +1283,7 @@ static void copy_scroll_op(bitmap_t &bitmap, UINT16 *source, int sx, int sy)
}
-static void copy_scroll_xp(bitmap_t &bitmap, UINT16 *source, int sx, int sy)
+static void copy_scroll_xp(bitmap_ind16 &bitmap, UINT16 *source, int sx, int sy)
{
//--------------------------------------------------------------------------
@@ -1342,7 +1342,7 @@ static void copy_scroll_xp(bitmap_t &bitmap, UINT16 *source, int sx, int sy)
-static void copy_fixed_xp(bitmap_t &bitmap, UINT16 *source)
+static void copy_fixed_xp(bitmap_ind16 &bitmap, UINT16 *source)
{
UINT16 *esi, *edi;
int dst_pitch, ecx, edx;
@@ -1377,7 +1377,7 @@ static void copy_fixed_xp(bitmap_t &bitmap, UINT16 *source)
}
-static void copy_fixed_2b(bitmap_t &bitmap, UINT16 *source)
+static void copy_fixed_2b(bitmap_ind16 &bitmap, UINT16 *source)
{
UINT16 *esi, *edi;
int dst_pitch, ecx, edx;
@@ -1424,7 +1424,7 @@ static void copy_fixed_2b(bitmap_t &bitmap, UINT16 *source)
}
-static void filter_bitmap(running_machine &machine, bitmap_t &bitmap, int mask)
+static void filter_bitmap(running_machine &machine, bitmap_ind16 &bitmap, int mask)
{
halleys_state *state = machine.driver_data<halleys_state>();
int dst_pitch;
@@ -1465,7 +1465,7 @@ static void filter_bitmap(running_machine &machine, bitmap_t &bitmap, int mask)
}
-static SCREEN_UPDATE( halleys )
+static SCREEN_UPDATE_IND16( halleys )
{
halleys_state *state = screen.machine().driver_data<halleys_state>();
int i, j;
@@ -1494,7 +1494,7 @@ static SCREEN_UPDATE( halleys )
}
-static SCREEN_UPDATE( benberob )
+static SCREEN_UPDATE_IND16( benberob )
{
halleys_state *state = screen.machine().driver_data<halleys_state>();
if (state->m_io_ram[0xa0] & 0x80)
@@ -1964,10 +1964,9 @@ static MACHINE_CONFIG_START( halleys, halleys_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.50) /* verified on PCB */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(VIS_MINX, VIS_MAXX, VIS_MINY, VIS_MAXY)
- MCFG_SCREEN_UPDATE(halleys)
+ MCFG_SCREEN_UPDATE_STATIC(halleys)
MCFG_PALETTE_LENGTH(PALETTE_SIZE)
MCFG_PALETTE_INIT(halleys)
@@ -1999,7 +1998,7 @@ static MACHINE_CONFIG_DERIVED( benberob, halleys )
MCFG_TIMER_CALLBACK(benberob_scanline)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(benberob)
+ MCFG_SCREEN_UPDATE_STATIC(benberob)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hanaawas.c b/src/mame/drivers/hanaawas.c
index ba62cbf258f..217e6bce000 100644
--- a/src/mame/drivers/hanaawas.c
+++ b/src/mame/drivers/hanaawas.c
@@ -213,10 +213,9 @@ static MACHINE_CONFIG_START( hanaawas, hanaawas_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(hanaawas)
+ MCFG_SCREEN_UPDATE_STATIC(hanaawas)
MCFG_GFXDECODE(hanaawas)
MCFG_PALETTE_LENGTH(32*8)
diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c
index 799e5ac4790..9f76aa4062f 100644
--- a/src/mame/drivers/harddriv.c
+++ b/src/mame/drivers/harddriv.c
@@ -341,7 +341,8 @@ static const tms34010_config gsp_config_driver =
"screen", /* the screen operated on */
4000000, /* pixel clock */
4, /* pixels per clock */
- harddriv_scanline_driver, /* scanline callback */
+ harddriv_scanline_driver, /* scanline callback (indexed16) */
+ NULL, /* scanline callback (rgb32) */
hdgsp_irq_gen, /* generate interrupt */
hdgsp_write_to_shiftreg, /* write to shiftreg function */
hdgsp_read_from_shiftreg /* read from shiftreg function */
@@ -355,7 +356,8 @@ static const tms34010_config gsp_config_multisync =
"screen", /* the screen operated on */
6000000, /* pixel clock */
2, /* pixels per clock */
- harddriv_scanline_multisync, /* scanline callback */
+ harddriv_scanline_multisync, /* scanline callback (indexed16) */
+ NULL, /* scanline callback (rgb32 */
hdgsp_irq_gen, /* generate interrupt */
hdgsp_write_to_shiftreg, /* write to shiftreg function */
hdgsp_read_from_shiftreg /* read from shiftreg function */
@@ -369,7 +371,8 @@ static const tms34010_config gsp_config_multisync_stunrun =
"screen", /* the screen operated on */
5000000, /* pixel clock */
2, /* pixels per clock */
- harddriv_scanline_multisync, /* scanline callback */
+ harddriv_scanline_multisync, /* scanline callback (indexed16) */
+ NULL, /* scanline callback (rgb32 */
hdgsp_irq_gen, /* generate interrupt */
hdgsp_write_to_shiftreg, /* write to shiftreg function */
hdgsp_read_from_shiftreg /* read from shiftreg function */
@@ -382,7 +385,8 @@ static const tms34010_config msp_config =
"screen", /* the screen operated on */
5000000, /* pixel clock */
2, /* pixels per clock */
- NULL, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ NULL, /* scanline callback (rgb32 */
hdmsp_irq_gen /* generate interrupt */
};
@@ -1136,9 +1140,8 @@ static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(4000000*4, 160*4, 0, 127*4, 417, 0, 384)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(harddriv)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hcastle.c b/src/mame/drivers/hcastle.c
index 3307099f944..51808e852ad 100644
--- a/src/mame/drivers/hcastle.c
+++ b/src/mame/drivers/hcastle.c
@@ -225,10 +225,9 @@ static MACHINE_CONFIG_START( hcastle, hcastle_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second verified by comparison with real board */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hcastle)
+ MCFG_SCREEN_UPDATE_STATIC(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 f01db215a6d..65b806a382c 100644
--- a/src/mame/drivers/hexion.c
+++ b/src/mame/drivers/hexion.c
@@ -250,10 +250,9 @@ static MACHINE_CONFIG_START( hexion, hexion_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(hexion)
+ MCFG_SCREEN_UPDATE_STATIC(hexion)
MCFG_GFXDECODE(hexion)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/higemaru.c b/src/mame/drivers/higemaru.c
index eecabea1a6a..6ebc70c1b59 100644
--- a/src/mame/drivers/higemaru.c
+++ b/src/mame/drivers/higemaru.c
@@ -168,10 +168,9 @@ static MACHINE_CONFIG_START( higemaru, higemaru_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(higemaru)
+ MCFG_SCREEN_UPDATE_STATIC(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 0e26153e5bd..080689516c2 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -110,7 +110,7 @@ static VIDEO_START(tourvisn)
}
-static SCREEN_UPDATE(tourvisn)
+static SCREEN_UPDATE_RGB32(tourvisn)
{
highvdeo_state *state = screen.machine().driver_data<highvdeo_state>();
int x,y,count;
@@ -141,7 +141,7 @@ static SCREEN_UPDATE(tourvisn)
}
/*Later HW, RGB565 instead of RAM-based pens (+ ramdac).*/
-static SCREEN_UPDATE(brasil)
+static SCREEN_UPDATE_RGB32(brasil)
{
highvdeo_state *state = screen.machine().driver_data<highvdeo_state>();
int x,y,count;
@@ -912,10 +912,9 @@ static MACHINE_CONFIG_START( tv_vcf, highvdeo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(tourvisn)
+ MCFG_SCREEN_UPDATE_STATIC(tourvisn)
MCFG_PALETTE_LENGTH(0x100)
@@ -979,10 +978,9 @@ static MACHINE_CONFIG_START( brasil, highvdeo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
- MCFG_SCREEN_UPDATE(brasil)
+ MCFG_SCREEN_UPDATE_STATIC(brasil)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/hikaru.c b/src/mame/drivers/hikaru.c
index 13fb5254c9a..86084497fbc 100644
--- a/src/mame/drivers/hikaru.c
+++ b/src/mame/drivers/hikaru.c
@@ -332,7 +332,7 @@ static VIDEO_START(hikaru)
}
-static SCREEN_UPDATE(hikaru)
+static SCREEN_UPDATE_RGB32(hikaru)
{
return 0;
}
@@ -429,10 +429,9 @@ static MACHINE_CONFIG_START( hikaru, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE(hikaru)
+ MCFG_SCREEN_UPDATE_STATIC(hikaru)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/himesiki.c b/src/mame/drivers/himesiki.c
index 1ad7fa2e6b6..5689e98a0f1 100644
--- a/src/mame/drivers/himesiki.c
+++ b/src/mame/drivers/himesiki.c
@@ -308,10 +308,9 @@ static MACHINE_CONFIG_START( himesiki, himesiki_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE(himesiki)
+ MCFG_SCREEN_UPDATE_STATIC(himesiki)
MCFG_GFXDECODE(himesiki)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c
index 499c75882e6..f7cf9e40705 100644
--- a/src/mame/drivers/hitme.c
+++ b/src/mame/drivers/hitme.c
@@ -69,7 +69,7 @@ static VIDEO_START( barricad )
}
-static SCREEN_UPDATE( hitme )
+static SCREEN_UPDATE_IND16( hitme )
{
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 */
@@ -117,7 +117,7 @@ static SCREEN_UPDATE( hitme )
}
-static SCREEN_UPDATE( barricad )
+static SCREEN_UPDATE_IND16( barricad )
{
hitme_state *state = screen.machine().driver_data<hitme_state>();
tilemap_draw(bitmap, cliprect, state->m_tilemap, 0, 0);
@@ -330,10 +330,9 @@ static MACHINE_CONFIG_START( hitme, hitme_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 19*10)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 19*10-1)
- MCFG_SCREEN_UPDATE(hitme)
+ MCFG_SCREEN_UPDATE_STATIC(hitme)
MCFG_GFXDECODE(hitme)
MCFG_PALETTE_LENGTH(2)
@@ -363,7 +362,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(barricad)
+ MCFG_SCREEN_UPDATE_STATIC(barricad)
MCFG_GFXDECODE(barricad)
diff --git a/src/mame/drivers/hitpoker.c b/src/mame/drivers/hitpoker.c
index 9edd3311e04..7b473e486a4 100644
--- a/src/mame/drivers/hitpoker.c
+++ b/src/mame/drivers/hitpoker.c
@@ -75,7 +75,7 @@ static VIDEO_START(hitpoker)
state->m_colorram = auto_alloc_array(machine, UINT8, 0x2000);
}
-static SCREEN_UPDATE(hitpoker)
+static SCREEN_UPDATE_IND16(hitpoker)
{
hitpoker_state *state = screen.machine().driver_data<hitpoker_state>();
int count = 0;
@@ -494,10 +494,9 @@ static MACHINE_CONFIG_START( hitpoker, hitpoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(648, 480) //setted by the CRTC
MCFG_SCREEN_VISIBLE_AREA(0, 648-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(hitpoker)
+ MCFG_SCREEN_UPDATE_STATIC(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 fb8702fef54..53baf169ac0 100644
--- a/src/mame/drivers/hnayayoi.c
+++ b/src/mame/drivers/hnayayoi.c
@@ -572,10 +572,9 @@ static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(hnayayoi)
+ MCFG_SCREEN_UPDATE_STATIC(hnayayoi)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 3f8581794d0..1991ce87bc1 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -1741,8 +1741,7 @@ 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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(hng64)
+ MCFG_SCREEN_UPDATE_STATIC(hng64)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/holeland.c b/src/mame/drivers/holeland.c
index c0347f52c7c..10bbf81ad52 100644
--- a/src/mame/drivers/holeland.c
+++ b/src/mame/drivers/holeland.c
@@ -286,10 +286,9 @@ static MACHINE_CONFIG_START( holeland, holeland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
- MCFG_SCREEN_UPDATE(holeland)
+ MCFG_SCREEN_UPDATE_STATIC(holeland)
MCFG_GFXDECODE(holeland)
MCFG_PALETTE_LENGTH(256)
@@ -357,10 +356,9 @@ static MACHINE_CONFIG_START( crzrally, holeland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(crzrally)
+ MCFG_SCREEN_UPDATE_STATIC(crzrally)
MCFG_GFXDECODE(crzrally)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c
index 4bdaecb6e6c..6e2273f8e67 100644
--- a/src/mame/drivers/homedata.c
+++ b/src/mame/drivers/homedata.c
@@ -1270,11 +1270,10 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mrokumei)
+ MCFG_SCREEN_UPDATE_STATIC(mrokumei)
MCFG_SCREEN_EOF(homedata)
MCFG_GFXDECODE(mrokumei)
@@ -1340,10 +1339,9 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 256-1-16)
- MCFG_SCREEN_UPDATE(reikaids)
+ MCFG_SCREEN_UPDATE_STATIC(reikaids)
MCFG_SCREEN_EOF(homedata)
MCFG_GFXDECODE(reikaids)
@@ -1391,11 +1389,10 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pteacher)
+ MCFG_SCREEN_UPDATE_STATIC(pteacher)
MCFG_SCREEN_EOF(homedata)
MCFG_GFXDECODE(pteacher)
@@ -1558,10 +1555,9 @@ static MACHINE_CONFIG_START( mirderby, homedata_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mirderby)
+ MCFG_SCREEN_UPDATE_STATIC(mirderby)
MCFG_GFXDECODE(mirderby)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/homerun.c b/src/mame/drivers/homerun.c
index 032ea1a97ca..3a1e9e861f0 100644
--- a/src/mame/drivers/homerun.c
+++ b/src/mame/drivers/homerun.c
@@ -234,10 +234,9 @@ static MACHINE_CONFIG_START( homerun, homerun_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-25)
- MCFG_SCREEN_UPDATE(homerun)
+ MCFG_SCREEN_UPDATE_STATIC(homerun)
MCFG_GFXDECODE(homerun)
MCFG_PALETTE_LENGTH(16*4)
diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c
index 63859bc48c1..8fafefcfd4f 100644
--- a/src/mame/drivers/hornet.c
+++ b/src/mame/drivers/hornet.c
@@ -391,7 +391,7 @@ static void voodoo_vblank_1(device_t *device, int param)
cputag_set_input_line(device->machine(), "maincpu", INPUT_LINE_IRQ1, ASSERT_LINE);
}
-static SCREEN_UPDATE( hornet )
+static SCREEN_UPDATE_RGB32( hornet )
{
hornet_state *state = screen.machine().driver_data<hornet_state>();
device_t *voodoo = screen.machine().device("voodoo0");
@@ -406,7 +406,7 @@ static SCREEN_UPDATE( hornet )
return 0;
}
-static SCREEN_UPDATE( hornet_2board )
+static SCREEN_UPDATE_RGB32( hornet_2board )
{
hornet_state *state = screen.machine().driver_data<hornet_state>();
if (strcmp(screen.tag(), "lscreen") == 0)
@@ -975,10 +975,9 @@ static MACHINE_CONFIG_START( hornet, hornet_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(hornet)
+ MCFG_SCREEN_UPDATE_STATIC(hornet)
MCFG_PALETTE_LENGTH(65536)
@@ -1047,18 +1046,16 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_DEVICE_REMOVE("screen")
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(hornet_2board)
+ MCFG_SCREEN_UPDATE_STATIC(hornet_2board)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(hornet_2board)
+ MCFG_SCREEN_UPDATE_STATIC(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 504cfb851f9..936ab364676 100644
--- a/src/mame/drivers/hotblock.c
+++ b/src/mame/drivers/hotblock.c
@@ -138,7 +138,7 @@ static VIDEO_START(hotblock)
state->save_item(NAME(state->m_pal));
}
-static SCREEN_UPDATE(hotblock)
+static SCREEN_UPDATE_IND16(hotblock)
{
hotblock_state *state = screen.machine().driver_data<hotblock_state>();
int y, x, count;
@@ -219,10 +219,9 @@ static MACHINE_CONFIG_START( hotblock, hotblock_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(hotblock)
+ MCFG_SCREEN_UPDATE_STATIC(hotblock)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/hotstuff.c b/src/mame/drivers/hotstuff.c
index 5121eb61258..7648e667e86 100644
--- a/src/mame/drivers/hotstuff.c
+++ b/src/mame/drivers/hotstuff.c
@@ -20,7 +20,7 @@ VIDEO_START( hotstuff )
/* 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( hotstuff )
+SCREEN_UPDATE_RGB32( hotstuff )
{
hotstuff_state *state = screen.machine().driver_data<hotstuff_state>();
int count, y,yyy,x,xxx;
@@ -82,10 +82,9 @@ static MACHINE_CONFIG_START( hotstuff, hotstuff_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(hotstuff)
+ MCFG_SCREEN_UPDATE_STATIC(hotstuff)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c
index c6da83af289..bffdf762bd2 100644
--- a/src/mame/drivers/hvyunit.c
+++ b/src/mame/drivers/hvyunit.c
@@ -154,7 +154,7 @@ static VIDEO_START( hvyunit )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
}
-static SCREEN_UPDATE( hvyunit )
+static SCREEN_UPDATE_IND16( hvyunit )
{
#define SX_POS 96
#define SY_POS 0
@@ -669,10 +669,9 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(hvyunit)
+ MCFG_SCREEN_UPDATE_STATIC(hvyunit)
MCFG_SCREEN_EOF(hvyunit)
MCFG_GFXDECODE(hvyunit)
diff --git a/src/mame/drivers/hyhoo.c b/src/mame/drivers/hyhoo.c
index f8122cdb2bb..02702c70c8b 100644
--- a/src/mame/drivers/hyhoo.c
+++ b/src/mame/drivers/hyhoo.c
@@ -260,10 +260,9 @@ static MACHINE_CONFIG_START( hyhoo, hyhoo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(hyhoo)
+ MCFG_SCREEN_UPDATE_STATIC(hyhoo)
MCFG_VIDEO_START(hyhoo)
diff --git a/src/mame/drivers/hyperspt.c b/src/mame/drivers/hyperspt.c
index e24699bc63d..9a353ced352 100644
--- a/src/mame/drivers/hyperspt.c
+++ b/src/mame/drivers/hyperspt.c
@@ -298,10 +298,9 @@ static MACHINE_CONFIG_START( hyperspt, hyperspt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hyperspt)
+ MCFG_SCREEN_UPDATE_STATIC(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 4956b772118..a74ad156d47 100644
--- a/src/mame/drivers/hyprduel.c
+++ b/src/mame/drivers/hyprduel.c
@@ -689,10 +689,9 @@ static MACHINE_CONFIG_START( hyprduel, hyprduel_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE)
- MCFG_SCREEN_UPDATE(hyprduel)
+ MCFG_SCREEN_UPDATE_STATIC(hyprduel)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -732,10 +731,9 @@ static MACHINE_CONFIG_START( magerror, hyprduel_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE)
- MCFG_SCREEN_UPDATE(hyprduel)
+ MCFG_SCREEN_UPDATE_STATIC(hyprduel)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index b5a94dc3eee..c86230922f6 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -258,7 +258,7 @@ static VIDEO_START(gp98)
}
-static SCREEN_UPDATE(jingbell)
+static SCREEN_UPDATE_IND16(jingbell)
{
igs009_state *state = screen.machine().driver_data<igs009_state>();
int layers_ctrl = state->m_video_enable ? -1 : 0;
@@ -686,10 +686,9 @@ static MACHINE_CONFIG_START( jingbell, igs009_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE(jingbell)
+ MCFG_SCREEN_UPDATE_STATIC(jingbell)
MCFG_GFXDECODE(jingbell)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index dec10b8b3b7..3f5aae3863f 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -157,7 +157,7 @@ static VIDEO_START( igs011 )
state->m_lhb2_pen_hi = 0;
}
-static SCREEN_UPDATE( igs011 )
+static SCREEN_UPDATE_IND16( igs011 )
{
igs011_state *state = screen.machine().driver_data<igs011_state>();
#ifdef MAME_DEBUG
@@ -3574,10 +3574,9 @@ static MACHINE_CONFIG_START( igs011_base, igs011_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE( igs011 )
+ MCFG_SCREEN_UPDATE_STATIC( igs011 )
MCFG_PALETTE_LENGTH(0x800)
// MCFG_GFXDECODE(igs011)
diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c
index 2bdce583a0f..a4c6a9e66b6 100644
--- a/src/mame/drivers/igs017.c
+++ b/src/mame/drivers/igs017.c
@@ -247,7 +247,7 @@ static VIDEO_START( igs017 )
***************************************************************************/
-static void draw_sprite(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, int sx, int sy, int dimx, int dimy, int flipx, int flipy, int color, int addr)
+static void draw_sprite(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect, int sx, int sy, int dimx, int dimy, int flipx, int flipy, int color, int addr)
{
igs017_state *state = machine.driver_data<igs017_state>();
// prepare GfxElement on the fly
@@ -265,7 +265,7 @@ static void draw_sprite(running_machine &machine, bitmap_t &bitmap,const rectang
sx, sy, 0x1f );
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
igs017_state *state = machine.driver_data<igs017_state>();
UINT8 *s = state->m_spriteram;
@@ -301,7 +301,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
// A simple gfx viewer (toggle with T)
-static int debug_viewer(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static int debug_viewer(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
#ifdef MAME_DEBUG
igs017_state *state = machine.driver_data<igs017_state>();
@@ -344,7 +344,7 @@ static int debug_viewer(running_machine &machine, bitmap_t &bitmap,const rectang
return 0;
}
-static SCREEN_UPDATE( igs017 )
+static SCREEN_UPDATE_IND16( igs017 )
{
igs017_state *state = screen.machine().driver_data<igs017_state>();
int layers_ctrl = -1;
@@ -2321,10 +2321,9 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(igs017)
+ MCFG_SCREEN_UPDATE_STATIC(igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -2391,10 +2390,9 @@ static MACHINE_CONFIG_START( mgcs, igs017_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(igs017)
+ MCFG_SCREEN_UPDATE_STATIC(igs017)
MCFG_GFXDECODE(igs017_flipped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -2436,10 +2434,9 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // VSync 60Hz, HSync 15.3kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE(igs017)
+ MCFG_SCREEN_UPDATE_STATIC(igs017)
MCFG_GFXDECODE(igs017)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -2492,10 +2489,9 @@ static MACHINE_CONFIG_START( mgdha, igs017_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE(igs017)
+ MCFG_SCREEN_UPDATE_STATIC(igs017)
MCFG_GFXDECODE(igs017_swapped)
MCFG_PALETTE_LENGTH(0x100*2)
@@ -2526,10 +2522,9 @@ static MACHINE_CONFIG_START( tjsb, igs017_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(igs017)
+ MCFG_SCREEN_UPDATE_STATIC(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 b118707733c..e0db400cb43 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -163,7 +163,7 @@ static VIDEO_START(igs_majhong)
logerror("Video START OK!\n");
}
-static SCREEN_UPDATE(igs_majhong)
+static SCREEN_UPDATE_IND16(igs_majhong)
{
igs_m027_state *state = screen.machine().driver_data<igs_m027_state>();
//??????????
@@ -401,10 +401,9 @@ static MACHINE_CONFIG_START( igs_majhong, igs_m027_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE( igs_majhong )
+ MCFG_SCREEN_UPDATE_STATIC( igs_majhong )
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/igspoker.c b/src/mame/drivers/igspoker.c
index 042aa43861d..a631683dfae 100644
--- a/src/mame/drivers/igspoker.c
+++ b/src/mame/drivers/igspoker.c
@@ -177,7 +177,7 @@ static VIDEO_START(igs_video)
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static SCREEN_UPDATE(igs_video)
+static SCREEN_UPDATE_IND16(igs_video)
{
igspoker_state *state = screen.machine().driver_data<igspoker_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -196,7 +196,7 @@ static VIDEO_START(cpokerpk)
state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
}
-static SCREEN_UPDATE(cpokerpk)
+static SCREEN_UPDATE_IND16(cpokerpk)
{
igspoker_state *state = screen.machine().driver_data<igspoker_state>();
tilemap_draw(bitmap, cliprect, state->m_fg_tilemap, 0, 0);
@@ -1765,10 +1765,9 @@ static MACHINE_CONFIG_START( igspoker, igspoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(igs_video)
+ MCFG_SCREEN_UPDATE_STATIC(igs_video)
MCFG_GFXDECODE(igspoker)
MCFG_PALETTE_LENGTH(2048)
@@ -1799,7 +1798,7 @@ static MACHINE_CONFIG_DERIVED( number10, igspoker )
MCFG_CPU_IO_MAP(number10_io_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(cpokerpk)
+ MCFG_SCREEN_UPDATE_STATIC(cpokerpk)
MCFG_VIDEO_START(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 63da5115444..f6a3abc2d79 100644
--- a/src/mame/drivers/ikki.c
+++ b/src/mame/drivers/ikki.c
@@ -262,10 +262,9 @@ static MACHINE_CONFIG_START( ikki, ikki_state )
// MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ikki)
+ MCFG_SCREEN_UPDATE_STATIC(ikki)
MCFG_GFXDECODE(ikki)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c
index 589540b3bce..7c2f4ce552f 100644
--- a/src/mame/drivers/imolagp.c
+++ b/src/mame/drivers/imolagp.c
@@ -198,7 +198,7 @@ static VIDEO_START( imolagp )
}
-static SCREEN_UPDATE( imolagp )
+static SCREEN_UPDATE_IND16( imolagp )
{
imolagp_state *state = screen.machine().driver_data<imolagp_state>();
int scroll2 = state->m_scroll ^ 0x03;
@@ -574,10 +574,9 @@ static MACHINE_CONFIG_START( imolagp, imolagp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256,256)
MCFG_SCREEN_VISIBLE_AREA(0+64-16,255,0+16,255)
- MCFG_SCREEN_UPDATE(imolagp)
+ MCFG_SCREEN_UPDATE_STATIC(imolagp)
MCFG_PALETTE_LENGTH(0x20)
MCFG_VIDEO_START(imolagp)
diff --git a/src/mame/drivers/intrscti.c b/src/mame/drivers/intrscti.c
index 1798feb8d4d..bfa4ed03ad5 100644
--- a/src/mame/drivers/intrscti.c
+++ b/src/mame/drivers/intrscti.c
@@ -66,7 +66,7 @@ static VIDEO_START(intrscti)
{
}
-static SCREEN_UPDATE(intrscti)
+static SCREEN_UPDATE_IND16(intrscti)
{
intrscti_state *state = screen.machine().driver_data<intrscti_state>();
int y,x;
@@ -101,10 +101,9 @@ static MACHINE_CONFIG_START( intrscti, intrscti_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 512-1)
- MCFG_SCREEN_UPDATE(intrscti)
+ MCFG_SCREEN_UPDATE_STATIC(intrscti)
MCFG_GFXDECODE(intrscti)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/inufuku.c b/src/mame/drivers/inufuku.c
index d43c2bf9534..39fb92a4589 100644
--- a/src/mame/drivers/inufuku.c
+++ b/src/mame/drivers/inufuku.c
@@ -369,10 +369,9 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(2048, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319-1, 1, 224-1)
- MCFG_SCREEN_UPDATE(inufuku)
+ MCFG_SCREEN_UPDATE_STATIC(inufuku)
MCFG_GFXDECODE(inufuku)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index ed8798606bb..704234df08c 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -287,10 +287,9 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(iqblock)
+ MCFG_SCREEN_UPDATE_STATIC(iqblock)
MCFG_GFXDECODE(iqblock)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/irobot.c b/src/mame/drivers/irobot.c
index 3cd0e017e3d..79657711056 100644
--- a/src/mame/drivers/irobot.c
+++ b/src/mame/drivers/irobot.c
@@ -302,10 +302,9 @@ static MACHINE_CONFIG_START( irobot, irobot_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 29*8-1)
- MCFG_SCREEN_UPDATE(irobot)
+ MCFG_SCREEN_UPDATE_STATIC(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 6b58669d23b..5d956502231 100644
--- a/src/mame/drivers/ironhors.c
+++ b/src/mame/drivers/ironhors.c
@@ -395,10 +395,9 @@ static MACHINE_CONFIG_START( ironhors, ironhors_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ironhors)
+ MCFG_SCREEN_UPDATE_STATIC(ironhors)
MCFG_GFXDECODE(ironhors)
MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
@@ -476,7 +475,7 @@ static MACHINE_CONFIG_DERIVED( farwest, ironhors )
MCFG_GFXDECODE(farwest)
MCFG_VIDEO_START(farwest)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(farwest)
+ MCFG_SCREEN_UPDATE_STATIC(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 d60302820ab..e06a8c9fdbd 100644
--- a/src/mame/drivers/istellar.c
+++ b/src/mame/drivers/istellar.c
@@ -22,16 +22,17 @@ Todo:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "render.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
class istellar_state : public driver_device
{
public:
istellar_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 *m_tile_ram;
UINT8 *m_tile_control_ram;
UINT8 *m_sprite_ram;
@@ -46,7 +47,7 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE( istellar )
+static SCREEN_UPDATE_IND16( istellar )
{
istellar_state *state = screen.machine().driver_data<istellar_state>();
int charx, chary;
@@ -86,8 +87,6 @@ static SCREEN_UPDATE( istellar )
static MACHINE_START( istellar )
{
- istellar_state *state = machine.driver_data<istellar_state>();
- state->m_laserdisc = machine.device("laserdisc");
}
@@ -124,7 +123,7 @@ static WRITE8_HANDLER(z80_0_latch2_write)
static READ8_HANDLER(z80_2_ldp_read)
{
istellar_state *state = space->machine().driver_data<istellar_state>();
- UINT8 readResult = laserdisc_data_r(state->m_laserdisc);
+ UINT8 readResult = state->m_laserdisc->status_r();
logerror("CPU2 : reading LDP : %x\n", readResult);
return readResult;
}
@@ -161,7 +160,7 @@ static WRITE8_HANDLER(z80_2_ldp_write)
{
istellar_state *state = space->machine().driver_data<istellar_state>();
logerror("CPU2 : writing LDP : 0x%x\n", data);
- laserdisc_data_w(state->m_laserdisc,data);
+ state->m_laserdisc->data_w(data);
}
@@ -354,11 +353,11 @@ static MACHINE_CONFIG_START( istellar, istellar_state )
MCFG_MACHINE_START(istellar)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(istellar, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(256, 256, istellar)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(istellar)
@@ -368,7 +367,7 @@ static MACHINE_CONFIG_START( istellar, istellar_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c
index d336f943f07..a4aacad7e3b 100644
--- a/src/mame/drivers/itech32.c
+++ b/src/mame/drivers/itech32.c
@@ -1719,8 +1719,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(itech32)
+ MCFG_SCREEN_UPDATE_STATIC(itech32)
MCFG_VIDEO_START(itech32)
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index 19777af7f0c..65c7b77f808 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -1701,7 +1701,6 @@ static MACHINE_CONFIG_START( itech8_core_lo, itech8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 263)
/* sound hardware */
@@ -1796,7 +1795,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(itech8_2layer)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
MACHINE_CONFIG_END
@@ -1808,7 +1807,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(itech8_grmatch)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_grmatch)
/* palette updater */
MCFG_TIMER_ADD_SCANLINE("palette", grmatch_palette_update, "screen", 0, 0)
@@ -1823,7 +1822,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(itech8_2layer)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
MACHINE_CONFIG_END
@@ -1835,7 +1834,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(itech8_2layer)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
MACHINE_CONFIG_END
@@ -1851,7 +1850,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(slikshot)
+ MCFG_SCREEN_UPDATE_STATIC(slikshot)
MCFG_VIDEO_START(slikshot)
MACHINE_CONFIG_END
@@ -1868,7 +1867,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(slikshot)
+ MCFG_SCREEN_UPDATE_STATIC(slikshot)
MCFG_VIDEO_START(slikshot)
MACHINE_CONFIG_END
@@ -1881,7 +1880,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(itech8_2page)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2page)
MACHINE_CONFIG_END
@@ -1901,7 +1900,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(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
MACHINE_CONFIG_END
@@ -1913,7 +1912,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(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
MACHINE_CONFIG_END
@@ -1929,7 +1928,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(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
MACHINE_CONFIG_END
@@ -1945,7 +1944,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(itech8_2page_large)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2page_large)
MACHINE_CONFIG_END
@@ -1960,7 +1959,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(itech8_2layer)
+ MCFG_SCREEN_UPDATE_STATIC(itech8_2layer)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itgambl2.c b/src/mame/drivers/itgambl2.c
index 50654adabaa..6518c018c7a 100644
--- a/src/mame/drivers/itgambl2.c
+++ b/src/mame/drivers/itgambl2.c
@@ -82,7 +82,7 @@ static VIDEO_START( itgambl2 )
}
/* (dirty) debug code for looking 8bpps blitter-based gfxs */
-static SCREEN_UPDATE( itgambl2 )
+static SCREEN_UPDATE_RGB32( itgambl2 )
{
itgambl2_state *state = screen.machine().driver_data<itgambl2_state>();
int x,y,count;
@@ -269,10 +269,9 @@ static MACHINE_CONFIG_START( itgambl2, itgambl2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE( itgambl2 )
+ MCFG_SCREEN_UPDATE_STATIC( itgambl2 )
MCFG_MACHINE_RESET( itgambl2 )
MCFG_PALETTE_INIT( itgambl2 )
diff --git a/src/mame/drivers/itgambl3.c b/src/mame/drivers/itgambl3.c
index db2203eb717..a4413230735 100644
--- a/src/mame/drivers/itgambl3.c
+++ b/src/mame/drivers/itgambl3.c
@@ -70,7 +70,7 @@ static VIDEO_START( itgambl3 )
}
/* (dirty) debug code for looking 8bpps blitter-based gfxs */
-static SCREEN_UPDATE( itgambl3 )
+static SCREEN_UPDATE_RGB32( itgambl3 )
{
itgambl3_state *state = screen.machine().driver_data<itgambl3_state>();
int x,y,count;
@@ -258,10 +258,9 @@ static MACHINE_CONFIG_START( itgambl3, itgambl3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE( itgambl3 )
+ MCFG_SCREEN_UPDATE_STATIC( itgambl3 )
MCFG_MACHINE_RESET( itgambl3 )
MCFG_PALETTE_INIT( itgambl3 )
diff --git a/src/mame/drivers/itgamble.c b/src/mame/drivers/itgamble.c
index f7db38a59fd..d0fcddf67fb 100644
--- a/src/mame/drivers/itgamble.c
+++ b/src/mame/drivers/itgamble.c
@@ -68,6 +68,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -76,7 +78,6 @@ protected:
// driver_device overrides
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -88,8 +89,9 @@ void itgamble_state::video_start()
{
}
-bool itgamble_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 itgamble_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
+ bitmap.fill(get_black_pen(screen.machine()));
return 0;
}
@@ -211,7 +213,7 @@ static MACHINE_CONFIG_START( itgamble, itgamble_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(itgamble_state, screen_update)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
diff --git a/src/mame/drivers/jack.c b/src/mame/drivers/jack.c
index 126a2ef62da..fd6096e20a5 100644
--- a/src/mame/drivers/jack.c
+++ b/src/mame/drivers/jack.c
@@ -834,10 +834,9 @@ static MACHINE_CONFIG_START( jack, jack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jack)
+ MCFG_SCREEN_UPDATE_STATIC(jack)
MCFG_GFXDECODE(jack)
MCFG_PALETTE_LENGTH(32)
@@ -879,7 +878,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(joinem)
+ MCFG_SCREEN_UPDATE_STATIC(joinem)
MCFG_PALETTE_INIT(joinem)
MCFG_VIDEO_START(joinem)
@@ -898,7 +897,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(joinem)
+ MCFG_SCREEN_UPDATE_STATIC(joinem)
MCFG_PALETTE_INIT(joinem)
MCFG_VIDEO_START(joinem)
diff --git a/src/mame/drivers/jackal.c b/src/mame/drivers/jackal.c
index 61e4c6d662c..5739aee36e0 100644
--- a/src/mame/drivers/jackal.c
+++ b/src/mame/drivers/jackal.c
@@ -382,10 +382,9 @@ static MACHINE_CONFIG_START( jackal, jackal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jackal)
+ MCFG_SCREEN_UPDATE_STATIC(jackal)
MCFG_GFXDECODE(jackal)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/jackie.c b/src/mame/drivers/jackie.c
index 5d3095453a4..e4a638afb20 100644
--- a/src/mame/drivers/jackie.c
+++ b/src/mame/drivers/jackie.c
@@ -174,7 +174,7 @@ static VIDEO_START(jackie)
}
-static SCREEN_UPDATE(jackie)
+static SCREEN_UPDATE_IND16(jackie)
{
jackie_state *state = screen.machine().driver_data<jackie_state>();
int i,j;
@@ -574,10 +574,9 @@ static MACHINE_CONFIG_START( jackie, jackie_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(jackie)
+ MCFG_SCREEN_UPDATE_STATIC(jackie)
MCFG_GFXDECODE(jackie)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/jackpool.c b/src/mame/drivers/jackpool.c
index 543a40f04de..be89bdd9aaa 100644
--- a/src/mame/drivers/jackpool.c
+++ b/src/mame/drivers/jackpool.c
@@ -37,7 +37,7 @@ static VIDEO_START(jackpool)
{
}
-static SCREEN_UPDATE(jackpool)
+static SCREEN_UPDATE_IND16(jackpool)
{
jackpool_state *state = screen.machine().driver_data<jackpool_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -259,10 +259,9 @@ static MACHINE_CONFIG_START( jackpool, jackpool_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(jackpool)
+ MCFG_SCREEN_UPDATE_STATIC(jackpool)
MCFG_EEPROM_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/jaguar.c b/src/mame/drivers/jaguar.c
index d447dc3c00c..f9bf068ba17 100644
--- a/src/mame/drivers/jaguar.c
+++ b/src/mame/drivers/jaguar.c
@@ -1693,8 +1693,7 @@ static MACHINE_CONFIG_START( cojagr3k, cojag_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(COJAG_PIXEL_CLOCK/2, 456, 42, 402, 262, 17, 257)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(cojag)
+ MCFG_SCREEN_UPDATE_STATIC(cojag)
MCFG_VIDEO_START(cojag)
@@ -1742,8 +1741,7 @@ static MACHINE_CONFIG_START( jaguar, driver_device )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_RAW_PARAMS(JAGUAR_CLOCK, 456, 42, 402, 262, 17, 257)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(cojag)
+ MCFG_SCREEN_UPDATE_STATIC(cojag)
MCFG_VIDEO_START(jaguar)
diff --git a/src/mame/drivers/jailbrek.c b/src/mame/drivers/jailbrek.c
index 0b573b3f71f..22d4c24f9ae 100644
--- a/src/mame/drivers/jailbrek.c
+++ b/src/mame/drivers/jailbrek.c
@@ -268,8 +268,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(jailbrek)
+ MCFG_SCREEN_UPDATE_STATIC(jailbrek)
MCFG_PALETTE_INIT(jailbrek)
MCFG_VIDEO_START(jailbrek)
diff --git a/src/mame/drivers/jalmah.c b/src/mame/drivers/jalmah.c
index fbabf1e7367..aeda3f6fa79 100644
--- a/src/mame/drivers/jalmah.c
+++ b/src/mame/drivers/jalmah.c
@@ -347,7 +347,7 @@ static void jalmah_priority_system(running_machine &machine)
//popmessage("%02x %02x %02x %02x",state->m_sc0_prin,state->m_sc1_prin,state->m_sc2_prin,state->m_sc3_prin);
}
-static void draw_sc0_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sc0_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
jalmah_state *state = machine.driver_data<jalmah_state>();
switch(state->m_jm_vregs[0] & 3)
@@ -359,7 +359,7 @@ static void draw_sc0_layer(running_machine &machine, bitmap_t &bitmap, const rec
}
}
-static void draw_sc1_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sc1_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
jalmah_state *state = machine.driver_data<jalmah_state>();
switch(state->m_jm_vregs[1] & 3)
@@ -371,7 +371,7 @@ static void draw_sc1_layer(running_machine &machine, bitmap_t &bitmap, const rec
}
}
-static void draw_sc2_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sc2_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
jalmah_state *state = machine.driver_data<jalmah_state>();
switch(state->m_jm_vregs[2] & 3)
@@ -383,7 +383,7 @@ static void draw_sc2_layer(running_machine &machine, bitmap_t &bitmap, const rec
}
}
-static void draw_sc3_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sc3_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
jalmah_state *state = machine.driver_data<jalmah_state>();
switch(state->m_jm_vregs[3] & 3)
@@ -395,7 +395,7 @@ static void draw_sc3_layer(running_machine &machine, bitmap_t &bitmap, const rec
}
}
-static SCREEN_UPDATE( jalmah )
+static SCREEN_UPDATE_IND16( jalmah )
{
jalmah_state *state = screen.machine().driver_data<jalmah_state>();
UINT16 *jm_scrollram = state->m_jm_scrollram;
@@ -456,7 +456,7 @@ static SCREEN_UPDATE( jalmah )
return 0;
}
-static SCREEN_UPDATE( urashima )
+static SCREEN_UPDATE_IND16( urashima )
{
jalmah_state *state = screen.machine().driver_data<jalmah_state>();
UINT16 *jm_scrollram = state->m_jm_scrollram;
@@ -1387,10 +1387,9 @@ static MACHINE_CONFIG_START( jalmah, jalmah_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jalmah)
+ MCFG_SCREEN_UPDATE_STATIC(jalmah)
MCFG_PALETTE_LENGTH(0x400)
MCFG_MACHINE_RESET(jalmah)
@@ -1413,7 +1412,7 @@ static MACHINE_CONFIG_DERIVED( urashima, jalmah )
MCFG_VIDEO_START(urashima)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(urashima)
+ MCFG_SCREEN_UPDATE_STATIC(urashima)
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/jangou.c b/src/mame/drivers/jangou.c
index c68e041d836..11b469019e6 100644
--- a/src/mame/drivers/jangou.c
+++ b/src/mame/drivers/jangou.c
@@ -120,7 +120,7 @@ static VIDEO_START( jangou )
state->save_item(NAME(state->m_blit_buffer));
}
-static SCREEN_UPDATE( jangou )
+static SCREEN_UPDATE_IND16( jangou )
{
jangou_state *state = screen.machine().driver_data<jangou_state>();
int x, y;
@@ -999,10 +999,9 @@ static MACHINE_CONFIG_START( jangou, jangou_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(jangou)
+ MCFG_SCREEN_UPDATE_STATIC(jangou)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/jantotsu.c b/src/mame/drivers/jantotsu.c
index b81d2149b8d..402e41eca06 100644
--- a/src/mame/drivers/jantotsu.c
+++ b/src/mame/drivers/jantotsu.c
@@ -135,7 +135,7 @@ static VIDEO_START(jantotsu)
state->save_item(NAME(state->m_bitmap));
}
-static SCREEN_UPDATE(jantotsu)
+static SCREEN_UPDATE_RGB32(jantotsu)
{
jantotsu_state *state = screen.machine().driver_data<jantotsu_state>();
int x, y, i;
@@ -513,10 +513,9 @@ static MACHINE_CONFIG_START( jantotsu, jantotsu_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(jantotsu)
+ MCFG_SCREEN_UPDATE_STATIC(jantotsu)
MCFG_PALETTE_INIT(jantotsu)
MCFG_PALETTE_LENGTH(0x20)
diff --git a/src/mame/drivers/jchan.c b/src/mame/drivers/jchan.c
index c4bb45b492f..2fa0b6ef791 100644
--- a/src/mame/drivers/jchan.c
+++ b/src/mame/drivers/jchan.c
@@ -183,8 +183,8 @@ public:
m_subcpu(*this,"sub")
{ }
- bitmap_t *m_sprite_bitmap_1;
- bitmap_t *m_sprite_bitmap_2;
+ bitmap_ind16 *m_sprite_bitmap_1;
+ bitmap_ind16 *m_sprite_bitmap_2;
UINT32* m_sprite_ram32_1;
UINT32* m_sprite_ram32_2;
UINT32* m_sprite_regs32_1;
@@ -339,8 +339,8 @@ static VIDEO_START(jchan)
state->m_sprite_regs32_1 = auto_alloc_array(machine, UINT32, 0x40/4);
state->m_sprite_regs32_2 = auto_alloc_array(machine, UINT32, 0x40/4);
- state->m_sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
- state->m_sprite_bitmap_2 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap_1 = auto_bitmap_ind16_alloc(machine,1024,1024);
+ state->m_sprite_bitmap_2 = auto_bitmap_ind16_alloc(machine,1024,1024);
state->m_spritegen1 = machine.device<sknsspr_device>("spritegen1");
state->m_spritegen2 = machine.device<sknsspr_device>("spritegen2");
@@ -358,7 +358,7 @@ static VIDEO_START(jchan)
-static SCREEN_UPDATE(jchan)
+static SCREEN_UPDATE_IND16(jchan)
{
jchan_state *state = screen.machine().driver_data<jchan_state>();
int x,y;
@@ -370,7 +370,7 @@ static SCREEN_UPDATE(jchan)
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- SCREEN_UPDATE_CALL(jchan_view2);
+ SCREEN_UPDATE16_CALL(jchan_view2);
state->m_sprite_bitmap_1->fill(0x0000, cliprect);
state->m_sprite_bitmap_2->fill(0x0000, cliprect);
@@ -669,10 +669,9 @@ static MACHINE_CONFIG_START( jchan, jchan_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jchan)
+ MCFG_SCREEN_UPDATE_STATIC(jchan)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c
index b6bbf0df6a9..e9d0cbfbf25 100644
--- a/src/mame/drivers/jokrwild.c
+++ b/src/mame/drivers/jokrwild.c
@@ -153,7 +153,7 @@ static VIDEO_START( jokrwild )
}
-static SCREEN_UPDATE( jokrwild )
+static SCREEN_UPDATE_IND16( jokrwild )
{
jokrwild_state *state = screen.machine().driver_data<jokrwild_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -484,10 +484,9 @@ static MACHINE_CONFIG_START( jokrwild, jokrwild_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(jokrwild)
+ MCFG_SCREEN_UPDATE_STATIC(jokrwild)
MCFG_GFXDECODE(jokrwild)
MCFG_PALETTE_INIT(jokrwild)
diff --git a/src/mame/drivers/jollyjgr.c b/src/mame/drivers/jollyjgr.c
index c815c360e25..fa1119c053d 100644
--- a/src/mame/drivers/jollyjgr.c
+++ b/src/mame/drivers/jollyjgr.c
@@ -445,7 +445,7 @@ static VIDEO_START( jollyjgr )
tilemap_set_scroll_cols(state->m_bg_tilemap, 32);
}
-static void draw_bitmap( running_machine &machine, bitmap_t &bitmap )
+static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap )
{
jollyjgr_state *state = machine.driver_data<jollyjgr_state>();
int x, y, count;
@@ -482,7 +482,7 @@ static void draw_bitmap( running_machine &machine, bitmap_t &bitmap )
}
}
-static SCREEN_UPDATE( jollyjgr )
+static SCREEN_UPDATE_IND16( jollyjgr )
{
jollyjgr_state *state = screen.machine().driver_data<jollyjgr_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -538,12 +538,12 @@ static SCREEN_UPDATE( jollyjgr )
return 0;
}
-static SCREEN_UPDATE( fspider )
+static SCREEN_UPDATE_IND16( fspider )
{
jollyjgr_state *state = screen.machine().driver_data<jollyjgr_state>();
// Draw bg and sprites
- SCREEN_UPDATE_CALL(jollyjgr);
+ SCREEN_UPDATE16_CALL(jollyjgr);
/* Draw bullets
16 bytes, 2 bytes per bullet (y,x). 2 player bullets, 6 enemy bullets.
@@ -655,10 +655,9 @@ static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jollyjgr)
+ MCFG_SCREEN_UPDATE_STATIC(jollyjgr)
MCFG_GFXDECODE(jollyjgr)
MCFG_PALETTE_LENGTH(32+8) /* 32 for tilemap and sprites + 8 for the bitmap */
@@ -679,7 +678,7 @@ static MACHINE_CONFIG_DERIVED( fspider, jollyjgr )
MCFG_CPU_PROGRAM_MAP(fspider_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(fspider)
+ MCFG_SCREEN_UPDATE_STATIC(fspider)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jongkyo.c b/src/mame/drivers/jongkyo.c
index 6c4b243887d..ba56375593b 100644
--- a/src/mame/drivers/jongkyo.c
+++ b/src/mame/drivers/jongkyo.c
@@ -59,7 +59,7 @@ static VIDEO_START( jongkyo )
}
-static SCREEN_UPDATE( jongkyo )
+static SCREEN_UPDATE_IND16( jongkyo )
{
jongkyo_state *state = screen.machine().driver_data<jongkyo_state>();
int y;
@@ -497,10 +497,9 @@ static MACHINE_CONFIG_START( jongkyo, jongkyo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 256-8-1)
- MCFG_SCREEN_UPDATE(jongkyo)
+ MCFG_SCREEN_UPDATE_STATIC(jongkyo)
MCFG_PALETTE_LENGTH(0x100)
MCFG_PALETTE_INIT(jongkyo)
diff --git a/src/mame/drivers/jpmimpct.c b/src/mame/drivers/jpmimpct.c
index ad777375303..8e6efa087de 100644
--- a/src/mame/drivers/jpmimpct.c
+++ b/src/mame/drivers/jpmimpct.c
@@ -802,7 +802,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
40000000/16, /* pixel clock */
4, /* pixels per clock */
- jpmimpct_scanline_update, /* scanline updater */
+ NULL, /* scanline updater (indexed16) */
+ jpmimpct_scanline_update, /* scanline updater (rgb32) */
jpmimpct_tms_irq, /* generate interrupt */
jpmimpct_to_shiftreg, /* write to shiftreg function */
jpmimpct_from_shiftreg /* read from shiftreg function */
@@ -831,9 +832,8 @@ static MACHINE_CONFIG_START( jpmimpct, jpmimpct_state )
MCFG_TIMER_ADD( "duart_1_timer", duart_1_timer_event)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
MCFG_PALETTE_LENGTH(256)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c
index 8f348db5a59..9bba92a0537 100644
--- a/src/mame/drivers/jpmsys5.c
+++ b/src/mame/drivers/jpmsys5.c
@@ -190,7 +190,7 @@ static VIDEO_START( jpmsys5v )
tms34061_start(machine, &tms34061intf);
}
-static SCREEN_UPDATE( jpmsys5v )
+static SCREEN_UPDATE_RGB32( jpmsys5v )
{
int x, y;
struct tms34061_display state;
@@ -670,9 +670,8 @@ static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state )
MCFG_MACHINE_RESET(jpmsys5v)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz / 4, 676, 20*4, 147*4, 256, 0, 254)
- MCFG_SCREEN_UPDATE(jpmsys5v)
+ MCFG_SCREEN_UPDATE_STATIC(jpmsys5v)
MCFG_VIDEO_START(jpmsys5v)
diff --git a/src/mame/drivers/jrpacman.c b/src/mame/drivers/jrpacman.c
index 9db7a6530be..e7b9a9a6ec2 100644
--- a/src/mame/drivers/jrpacman.c
+++ b/src/mame/drivers/jrpacman.c
@@ -297,10 +297,9 @@ static MACHINE_CONFIG_START( jrpacman, jrpacman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pacman)
+ MCFG_SCREEN_UPDATE_STATIC(pacman)
MCFG_GFXDECODE(jrpacman)
MCFG_PALETTE_LENGTH(128*4)
diff --git a/src/mame/drivers/jubilee.c b/src/mame/drivers/jubilee.c
index 926a13fbea7..107c926f8b1 100644
--- a/src/mame/drivers/jubilee.c
+++ b/src/mame/drivers/jubilee.c
@@ -131,7 +131,7 @@ static VIDEO_START( jubileep )
}
-static SCREEN_UPDATE( jubileep )
+static SCREEN_UPDATE_IND16( jubileep )
{
jubilee_state *state = screen.machine().driver_data<jubilee_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -420,10 +420,9 @@ static MACHINE_CONFIG_START( jubileep, jubilee_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(jubileep)
+ MCFG_SCREEN_UPDATE_STATIC(jubileep)
MCFG_GFXDECODE(jubileep)
diff --git a/src/mame/drivers/junofrst.c b/src/mame/drivers/junofrst.c
index e0fb1a93f48..e8d18934d3d 100644
--- a/src/mame/drivers/junofrst.c
+++ b/src/mame/drivers/junofrst.c
@@ -441,10 +441,9 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(tutankhm)
+ MCFG_SCREEN_UPDATE_STATIC(tutankhm)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/kaneko16.c b/src/mame/drivers/kaneko16.c
index ea169728b10..26c31fad978 100644
--- a/src/mame/drivers/kaneko16.c
+++ b/src/mame/drivers/kaneko16.c
@@ -1829,10 +1829,9 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(berlwall)
+ MCFG_SCREEN_UPDATE_STATIC(berlwall)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048 + 32768) /* 32768 static colors for the bg */
@@ -1876,10 +1875,9 @@ static MACHINE_CONFIG_START( bakubrkr, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(kaneko16)
+ MCFG_SCREEN_UPDATE_STATIC(kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -1934,10 +1932,9 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -8)
- MCFG_SCREEN_UPDATE(kaneko16)
+ MCFG_SCREEN_UPDATE_STATIC(kaneko16)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -1984,10 +1981,9 @@ static MACHINE_CONFIG_START( gtmr, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(kaneko16)
+ MCFG_SCREEN_UPDATE_STATIC(kaneko16)
MCFG_GFXDECODE(1x8bit_2x4bit)
MCFG_PALETTE_LENGTH(32768)
@@ -2061,10 +2057,9 @@ static MACHINE_CONFIG_START( mgcrystl, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(kaneko16)
+ MCFG_SCREEN_UPDATE_STATIC(kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
@@ -2178,10 +2173,9 @@ static MACHINE_CONFIG_START( shogwarr, kaneko16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1854)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(40, 296-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(kaneko16)
+ MCFG_SCREEN_UPDATE_STATIC(kaneko16)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/kangaroo.c b/src/mame/drivers/kangaroo.c
index e1611735403..d183a437dec 100644
--- a/src/mame/drivers/kangaroo.c
+++ b/src/mame/drivers/kangaroo.c
@@ -446,9 +446,8 @@ static MACHINE_CONFIG_START( nomcu, kangaroo_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 320*2, 0*2, 256*2, 260, 8, 248)
- MCFG_SCREEN_UPDATE(kangaroo)
+ MCFG_SCREEN_UPDATE_STATIC(kangaroo)
MCFG_VIDEO_START(kangaroo)
diff --git a/src/mame/drivers/karnov.c b/src/mame/drivers/karnov.c
index 98e6bbf9913..4d0b9277f5f 100644
--- a/src/mame/drivers/karnov.c
+++ b/src/mame/drivers/karnov.c
@@ -830,10 +830,9 @@ static MACHINE_CONFIG_START( karnov, karnov_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(karnov)
+ MCFG_SCREEN_UPDATE_STATIC(karnov)
MCFG_GFXDECODE(karnov)
MCFG_PALETTE_LENGTH(1024)
@@ -875,10 +874,9 @@ static MACHINE_CONFIG_START( wndrplnt, karnov_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(karnov)
+ MCFG_SCREEN_UPDATE_STATIC(karnov)
MCFG_GFXDECODE(karnov)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/kas89.c b/src/mame/drivers/kas89.c
index 35d997016e8..21b9fad519b 100644
--- a/src/mame/drivers/kas89.c
+++ b/src/mame/drivers/kas89.c
@@ -203,7 +203,8 @@ class kas89_state : public driver_device
{
public:
kas89_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938")
{ }
UINT8 m_mux_data;
@@ -216,6 +217,7 @@ public:
device_t *m_maincpu;
device_t *m_audiocpu;
+ required_device<v9938_device> m_v9938;
};
#define VDP_MEM 0x40000
@@ -225,24 +227,18 @@ public:
* Interrupt handling & Video *
***************************************/
-static void kas89_vdp_interrupt(running_machine &machine, int i)
+static void kas89_vdp_interrupt(device_t *, v99x8_device &device, int i)
{
- cputag_set_input_line (machine, "maincpu", 0, (i ? ASSERT_LINE : CLEAR_LINE));
+ cputag_set_input_line (device.machine(), "maincpu", 0, (i ? ASSERT_LINE : CLEAR_LINE));
}
static TIMER_DEVICE_CALLBACK( kas89_interrupt )
{
+ kas89_state *state = timer.machine().driver_data<kas89_state>();
int scanline = param;
if((scanline % 2) == 0)
- v9938_interrupt(timer.machine(), 0);
-}
-
-
-static VIDEO_START( kas89 )
-{
- v9938_init (machine, 0, *machine.primary_screen, machine.primary_screen->default_bitmap(), MODEL_V9938, VDP_MEM, kas89_vdp_interrupt);
- v9938_reset(0);
+ state->m_v9938->interrupt();
}
@@ -263,7 +259,6 @@ static MACHINE_RESET(kas89)
{
kas89_state *state = machine.driver_data<kas89_state>();
- v9938_reset(0);
state->m_main_nmi_enable = 0;
}
@@ -521,10 +516,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( kas89_io, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_WRITE(v9938_0_vram_w) AM_READ(v9938_0_vram_r)
- AM_RANGE(0x41, 0x41) AM_WRITE(v9938_0_command_w) AM_READ(v9938_0_status_r)
- AM_RANGE(0x42, 0x42) AM_WRITE(v9938_0_palette_w)
- AM_RANGE(0x43, 0x43) AM_WRITE(v9938_0_register_w)
+ AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_MODERN("v9938", v9938_device, read, write)
AM_RANGE(0x80, 0x80) AM_WRITE(mux_w)
AM_RANGE(0x81, 0x81) AM_READ(mux_r)
AM_RANGE(0x82, 0x82) AM_WRITE(control_w) /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/
@@ -795,16 +787,18 @@ static MACHINE_CONFIG_START( kas89, kas89_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
+ MCFG_V9938_ADD("v9938", "screen", VDP_MEM)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(kas89_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(544, 524)
MCFG_SCREEN_VISIBLE_AREA(0, 544 - 1, 0, 480 - 1)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(v9938)
- MCFG_VIDEO_START(kas89)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/kchamp.c b/src/mame/drivers/kchamp.c
index f692a6d6f13..69cbd6525ea 100644
--- a/src/mame/drivers/kchamp.c
+++ b/src/mame/drivers/kchamp.c
@@ -438,10 +438,9 @@ static MACHINE_CONFIG_START( kchampvs, kchamp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kchampvs)
+ MCFG_SCREEN_UPDATE_STATIC(kchampvs)
MCFG_GFXDECODE(kchamp)
MCFG_PALETTE_LENGTH(256)
@@ -489,10 +488,9 @@ static MACHINE_CONFIG_START( kchamp, kchamp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kchamp)
+ MCFG_SCREEN_UPDATE_STATIC(kchamp)
MCFG_GFXDECODE(kchamp)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/kickgoal.c b/src/mame/drivers/kickgoal.c
index 720e325c019..1b50cb49268 100644
--- a/src/mame/drivers/kickgoal.c
+++ b/src/mame/drivers/kickgoal.c
@@ -695,10 +695,9 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(9*8, 55*8-1, 4*8, 60*8-1)
- MCFG_SCREEN_UPDATE(kickgoal)
+ MCFG_SCREEN_UPDATE_STATIC(kickgoal)
MCFG_GFXDECODE(kickgoal)
MCFG_PALETTE_LENGTH(1024)
@@ -733,10 +732,9 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(10*8+2, 54*8-1+2, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(actionhw)
+ MCFG_SCREEN_UPDATE_STATIC(actionhw)
MCFG_GFXDECODE(actionhw)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c
index 2beeae7d665..df0edf0c3a6 100644
--- a/src/mame/drivers/kingdrby.c
+++ b/src/mame/drivers/kingdrby.c
@@ -165,7 +165,7 @@ static const UINT8 hw_sprite[16] =
0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x22, 0x22
};
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kingdrby_state *state = machine.driver_data<kingdrby_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -210,7 +210,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static SCREEN_UPDATE(kingdrby)
+static SCREEN_UPDATE_IND16(kingdrby)
{
kingdrby_state *state = screen.machine().driver_data<kingdrby_state>();
const rectangle &visarea = screen.visible_area();
@@ -1037,10 +1037,9 @@ static MACHINE_CONFIG_START( kingdrby, kingdrby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1) /* controlled by CRTC */
- MCFG_SCREEN_UPDATE(kingdrby)
+ MCFG_SCREEN_UPDATE_STATIC(kingdrby)
MCFG_VIDEO_START(kingdrby)
diff --git a/src/mame/drivers/kingobox.c b/src/mame/drivers/kingobox.c
index acc4c3df6d5..3de2f8817f4 100644
--- a/src/mame/drivers/kingobox.c
+++ b/src/mame/drivers/kingobox.c
@@ -503,10 +503,9 @@ static MACHINE_CONFIG_START( kingofb, kingofb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kingofb)
+ MCFG_SCREEN_UPDATE_STATIC(kingofb)
MCFG_GFXDECODE(kingobox)
MCFG_PALETTE_LENGTH(256+8*2)
@@ -556,10 +555,9 @@ static MACHINE_CONFIG_START( ringking, kingofb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ringking)
+ MCFG_SCREEN_UPDATE_STATIC(ringking)
MCFG_GFXDECODE(rk)
MCFG_PALETTE_LENGTH(256+8*2)
diff --git a/src/mame/drivers/kingpin.c b/src/mame/drivers/kingpin.c
index a23874c41a6..9cf486a9442 100644
--- a/src/mame/drivers/kingpin.c
+++ b/src/mame/drivers/kingpin.c
@@ -144,14 +144,6 @@ static TMS9928A_INTERFACE(kingpin_tms9928a_interface)
DEVCB_LINE(vdp_interrupt)
};
-static SCREEN_UPDATE( kingpin )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
static MACHINE_CONFIG_START( kingpin, kingpin_state )
/* MAIN CPU */
MCFG_CPU_ADD("maincpu", Z80, 3579545)
@@ -166,7 +158,7 @@ static MACHINE_CONFIG_START( kingpin, kingpin_state )
/* VIDEO */
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, kingpin_tms9928a_interface )
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( kingpin )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/kinst.c b/src/mame/drivers/kinst.c
index 0414fe542ea..3f124b11cdc 100644
--- a/src/mame/drivers/kinst.c
+++ b/src/mame/drivers/kinst.c
@@ -230,7 +230,7 @@ static MACHINE_RESET( kinst )
*
*************************************/
-static SCREEN_UPDATE( kinst )
+static SCREEN_UPDATE_IND16( kinst )
{
kinst_state *state = screen.machine().driver_data<kinst_state>();
int y;
@@ -668,10 +668,9 @@ static MACHINE_CONFIG_START( kinst, kinst_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(kinst)
+ MCFG_SCREEN_UPDATE_STATIC(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 4be17f9bc5d..523d3b86725 100644
--- a/src/mame/drivers/klax.c
+++ b/src/mame/drivers/klax.c
@@ -182,11 +182,10 @@ static MACHINE_CONFIG_START( klax, klax_state )
MCFG_PALETTE_LENGTH(512)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(klax)
+ MCFG_SCREEN_UPDATE_STATIC(klax)
MCFG_VIDEO_START(klax)
diff --git a/src/mame/drivers/kncljoe.c b/src/mame/drivers/kncljoe.c
index f7b7da68641..5f01c2df4b3 100644
--- a/src/mame/drivers/kncljoe.c
+++ b/src/mame/drivers/kncljoe.c
@@ -293,10 +293,9 @@ static MACHINE_CONFIG_START( kncljoe, kncljoe_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(kncljoe)
+ MCFG_SCREEN_UPDATE_STATIC(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 5ff8e1d8c35..dd45489dcb5 100644
--- a/src/mame/drivers/koftball.c
+++ b/src/mame/drivers/koftball.c
@@ -85,7 +85,7 @@ static VIDEO_START( koftball )
tilemap_set_transparent_pen(state->m_tilemap_1,0);
}
-static SCREEN_UPDATE( koftball )
+static SCREEN_UPDATE_IND16( koftball )
{
koftball_state *state = screen.machine().driver_data<koftball_state>();
tilemap_draw( bitmap, cliprect, state->m_tilemap_2, 0, 0);
@@ -244,9 +244,8 @@ 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(koftball)
+ MCFG_SCREEN_UPDATE_STATIC(koftball)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_GFXDECODE(koftball)
MCFG_SCREEN_SIZE(64*8, 32*8)
diff --git a/src/mame/drivers/koikoi.c b/src/mame/drivers/koikoi.c
index 81c87533b3d..c5884377c93 100644
--- a/src/mame/drivers/koikoi.c
+++ b/src/mame/drivers/koikoi.c
@@ -132,7 +132,7 @@ static VIDEO_START(koikoi)
state->m_tmap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE(koikoi)
+static SCREEN_UPDATE_IND16(koikoi)
{
koikoi_state *state = screen.machine().driver_data<koikoi_state>();
tilemap_draw(bitmap, cliprect, state->m_tmap, 0, 0);
@@ -370,10 +370,9 @@ static MACHINE_CONFIG_START( koikoi, koikoi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(koikoi)
+ MCFG_SCREEN_UPDATE_STATIC(koikoi)
MCFG_GFXDECODE(koikoi)
MCFG_PALETTE_LENGTH(8*32)
diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c
index b1b8f84a252..912b7d15dcf 100644
--- a/src/mame/drivers/konamigx.c
+++ b/src/mame/drivers/konamigx.c
@@ -1810,10 +1810,9 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
tbyahhoo attract mode desync is caused by another matter. */
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(konamigx)
+ MCFG_SCREEN_UPDATE_STATIC(konamigx)
MCFG_PALETTE_LENGTH(8192)
@@ -1895,14 +1894,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(konamigx_left)
+ MCFG_SCREEN_UPDATE_STATIC(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_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(576, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE(konamigx_right)
+ MCFG_SCREEN_UPDATE_STATIC(konamigx_right)
MCFG_GFXDECODE(type34)
MACHINE_CONFIG_END
@@ -1921,14 +1919,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(konamigx_left)
+ MCFG_SCREEN_UPDATE_STATIC(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_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(128*8, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
- MCFG_SCREEN_UPDATE(konamigx_right)
+ MCFG_SCREEN_UPDATE_STATIC(konamigx_right)
MCFG_PALETTE_LENGTH(8192)
MCFG_GFXDECODE(type4)
diff --git a/src/mame/drivers/konamim2.c b/src/mame/drivers/konamim2.c
index f9a89ec099d..bb8d8ca7bba 100644
--- a/src/mame/drivers/konamim2.c
+++ b/src/mame/drivers/konamim2.c
@@ -233,7 +233,7 @@ static VIDEO_START( m2 )
{
}
-static SCREEN_UPDATE( m2 )
+static SCREEN_UPDATE_IND16( m2 )
{
konamim2_state *state = screen.machine().driver_data<konamim2_state>();
int i, j;
@@ -1171,10 +1171,9 @@ static MACHINE_CONFIG_START( m2, konamim2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(m2)
+ MCFG_SCREEN_UPDATE_STATIC(m2)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
diff --git a/src/mame/drivers/kongambl.c b/src/mame/drivers/kongambl.c
index bfed2773160..46dbcda8542 100644
--- a/src/mame/drivers/kongambl.c
+++ b/src/mame/drivers/kongambl.c
@@ -39,7 +39,7 @@ static VIDEO_START(kongambl)
k056832_set_layer_offs(k056832, 3, 6, 0);
}
-static SCREEN_UPDATE(kongambl)
+static SCREEN_UPDATE_IND16(kongambl)
{
device_t *k056832 = screen.machine().device("k056832");
@@ -147,10 +147,9 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(kongambl)
+ MCFG_SCREEN_UPDATE_STATIC(kongambl)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/kopunch.c b/src/mame/drivers/kopunch.c
index a9b906b2319..4b69883d3a9 100644
--- a/src/mame/drivers/kopunch.c
+++ b/src/mame/drivers/kopunch.c
@@ -202,10 +202,9 @@ static MACHINE_CONFIG_START( kopunch, kopunch_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(kopunch)
+ MCFG_SCREEN_UPDATE_STATIC(kopunch)
MCFG_GFXDECODE(kopunch)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/ksayakyu.c b/src/mame/drivers/ksayakyu.c
index 525a6c96dbd..d3369f4f179 100644
--- a/src/mame/drivers/ksayakyu.c
+++ b/src/mame/drivers/ksayakyu.c
@@ -291,10 +291,9 @@ static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(ksayakyu)
+ MCFG_SCREEN_UPDATE_STATIC(ksayakyu)
MCFG_GFXDECODE(ksayakyu)
MCFG_PALETTE_INIT(ksayakyu)
diff --git a/src/mame/drivers/kungfur.c b/src/mame/drivers/kungfur.c
index 1a34f67426d..aad3edb90fc 100644
--- a/src/mame/drivers/kungfur.c
+++ b/src/mame/drivers/kungfur.c
@@ -81,7 +81,7 @@ g & 40
#define LED_ON 0x0001
#define LED_OFF 0x0000
-static void draw_led(bitmap_t &bitmap, int x, int y,UINT8 value)
+static void draw_led(bitmap_ind16 &bitmap, int x, int y,UINT8 value)
{
bitmap.plot_box(x, y, 6, 10, 0x00000000);
@@ -118,7 +118,7 @@ static void draw_led(bitmap_t &bitmap, int x, int y,UINT8 value)
}
/* actually debugging purpose, it will be converted to the artwork system at some point. */
-static SCREEN_UPDATE( kungfur )
+static SCREEN_UPDATE_IND16( kungfur )
{
kungfur_state *state = screen.machine().driver_data<kungfur_state>();
// popmessage("%02x %02x %02x %02x %02x %02x",io_data[0],io_data[1],io_data[2],io_data[3],io_data[4],io_data[5]);
@@ -368,10 +368,9 @@ static MACHINE_CONFIG_START( kungfur, kungfur_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kungfur)
+ MCFG_SCREEN_UPDATE_STATIC(kungfur)
MCFG_PALETTE_LENGTH(512)
MCFG_VIDEO_START(kungfur)
diff --git a/src/mame/drivers/kyugo.c b/src/mame/drivers/kyugo.c
index 94505a6676c..1cd468592df 100644
--- a/src/mame/drivers/kyugo.c
+++ b/src/mame/drivers/kyugo.c
@@ -558,10 +558,9 @@ static MACHINE_CONFIG_START( gyrodine, kyugo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(kyugo)
+ MCFG_SCREEN_UPDATE_STATIC(kyugo)
MCFG_GFXDECODE(kyugo)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/labyrunr.c b/src/mame/drivers/labyrunr.c
index 37012598d44..639aaa964ba 100644
--- a/src/mame/drivers/labyrunr.c
+++ b/src/mame/drivers/labyrunr.c
@@ -200,10 +200,9 @@ static MACHINE_CONFIG_START( labyrunr, labyrunr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(37*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(labyrunr)
+ MCFG_SCREEN_UPDATE_STATIC(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 f9ef8961517..1dcc795ac26 100644
--- a/src/mame/drivers/ladybug.c
+++ b/src/mame/drivers/ladybug.c
@@ -785,10 +785,9 @@ static MACHINE_CONFIG_START( ladybug, ladybug_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(ladybug)
+ MCFG_SCREEN_UPDATE_STATIC(ladybug)
MCFG_GFXDECODE(ladybug)
MCFG_PALETTE_LENGTH(4*8+4*16)
@@ -826,10 +825,9 @@ static MACHINE_CONFIG_START( sraider, ladybug_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(sraider)
+ MCFG_SCREEN_UPDATE_STATIC(sraider)
MCFG_SCREEN_EOF(sraider)
MCFG_GFXDECODE(sraider)
diff --git a/src/mame/drivers/ladyfrog.c b/src/mame/drivers/ladyfrog.c
index 6ffe6d97cdc..82f34587250 100644
--- a/src/mame/drivers/ladyfrog.c
+++ b/src/mame/drivers/ladyfrog.c
@@ -328,10 +328,9 @@ static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ladyfrog)
+ MCFG_SCREEN_UPDATE_STATIC(ladyfrog)
MCFG_GFXDECODE(ladyfrog)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/laserbas.c b/src/mame/drivers/laserbas.c
index 550a780677a..4e37d109598 100644
--- a/src/mame/drivers/laserbas.c
+++ b/src/mame/drivers/laserbas.c
@@ -60,7 +60,7 @@ static VIDEO_START(laserbas)
state->save_item(NAME(state->m_vram2));
}
-static SCREEN_UPDATE(laserbas)
+static SCREEN_UPDATE_IND16(laserbas)
{
laserbas_state *state = screen.machine().driver_data<laserbas_state>();
int x, y;
@@ -317,11 +317,10 @@ static MACHINE_CONFIG_START( laserbas, laserbas_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(laserbas)
+ MCFG_SCREEN_UPDATE_STATIC(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 a3b1f436571..515ca0b13cd 100644
--- a/src/mame/drivers/laserbat.c
+++ b/src/mame/drivers/laserbat.c
@@ -503,7 +503,7 @@ static VIDEO_START( laserbat )
state->save_item(NAME(state->m_colorram));
}
-static SCREEN_UPDATE( laserbat )
+static SCREEN_UPDATE_IND16( laserbat )
{
laserbat_state *state = screen.machine().driver_data<laserbat_state>();
int y;
@@ -511,9 +511,9 @@ static SCREEN_UPDATE( laserbat )
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
/* update the S2636 chips */
- bitmap_t &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
- bitmap_t &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
- bitmap_t &s2636_3_bitmap = s2636_update(state->m_s2636_3, cliprect);
+ 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);
/* copy the S2636 images into the main bitmap */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -777,10 +777,9 @@ static MACHINE_CONFIG_START( laserbat, laserbat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(laserbat)
+ MCFG_SCREEN_UPDATE_STATIC(laserbat)
MCFG_GFXDECODE(laserbat)
MCFG_PALETTE_LENGTH(1024)
@@ -825,10 +824,9 @@ static MACHINE_CONFIG_START( catnmous, laserbat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(laserbat)
+ MCFG_SCREEN_UPDATE_STATIC(laserbat)
MCFG_GFXDECODE(laserbat)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lasso.c b/src/mame/drivers/lasso.c
index 2fe7f9a5474..2998aabc489 100644
--- a/src/mame/drivers/lasso.c
+++ b/src/mame/drivers/lasso.c
@@ -520,10 +520,9 @@ static MACHINE_CONFIG_START( base, lasso_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57) /* guess, but avoids glitching of Chameleon's high score table */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lasso)
+ MCFG_SCREEN_UPDATE_STATIC(lasso)
MCFG_GFXDECODE(lasso)
MCFG_PALETTE_LENGTH(0x40)
@@ -560,7 +559,7 @@ static MACHINE_CONFIG_DERIVED( chameleo, base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(chameleo)
+ MCFG_SCREEN_UPDATE_STATIC(chameleo)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wwjgtin, base )
@@ -578,7 +577,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(wwjgtin)
+ MCFG_SCREEN_UPDATE_STATIC(wwjgtin)
MCFG_GFXDECODE(wwjgtin) // Has 1 additional layer
MCFG_PALETTE_LENGTH(0x40 + 16*16)
@@ -607,7 +606,7 @@ static MACHINE_CONFIG_DERIVED( pinbo, base )
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
MCFG_VIDEO_START(pinbo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(chameleo)
+ MCFG_SCREEN_UPDATE_STATIC(chameleo)
/* sound hardware */
MCFG_DEVICE_REMOVE("sn76489.1")
diff --git a/src/mame/drivers/lastbank.c b/src/mame/drivers/lastbank.c
index 0f8720c162c..fe4359e1e44 100644
--- a/src/mame/drivers/lastbank.c
+++ b/src/mame/drivers/lastbank.c
@@ -25,7 +25,7 @@ static VIDEO_START( lastbank )
}
-static SCREEN_UPDATE( lastbank )
+static SCREEN_UPDATE_IND16( lastbank )
{
return 0;
}
@@ -121,10 +121,9 @@ static MACHINE_CONFIG_START( lastbank, lastbank_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lastbank)
+ MCFG_SCREEN_UPDATE_STATIC(lastbank)
MCFG_GFXDECODE( lastbank )
diff --git a/src/mame/drivers/lastduel.c b/src/mame/drivers/lastduel.c
index 647eac22828..c8f3cfdd93d 100644
--- a/src/mame/drivers/lastduel.c
+++ b/src/mame/drivers/lastduel.c
@@ -517,10 +517,9 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lastduel)
+ MCFG_SCREEN_UPDATE_STATIC(lastduel)
MCFG_SCREEN_EOF(lastduel)
MCFG_GFXDECODE(lastduel)
@@ -560,10 +559,9 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(madgear)
+ MCFG_SCREEN_UPDATE_STATIC(madgear)
MCFG_SCREEN_EOF(lastduel)
MCFG_GFXDECODE(madgear)
diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c
index 07fe2106604..1b43b8012e2 100644
--- a/src/mame/drivers/lastfght.c
+++ b/src/mame/drivers/lastfght.c
@@ -75,7 +75,7 @@ public:
{ }
/* video-related */
- bitmap_t *m_bitmap[2];
+ bitmap_ind16 m_bitmap[2];
int m_clr_offset;
int m_dest;
int m_hi;
@@ -114,15 +114,15 @@ static VIDEO_START( lastfght )
lastfght_state *state = machine.driver_data<lastfght_state>();
int i;
for (i = 0; i < 2; i++)
- state->m_bitmap[i] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap[i].allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_bitmap[0]));
- state->save_item(NAME(*state->m_bitmap[1]));
+ state->save_item(NAME(state->m_bitmap[0]));
+ state->save_item(NAME(state->m_bitmap[1]));
state->save_item(NAME(state->m_colorram));
}
-static SCREEN_UPDATE( lastfght )
+static SCREEN_UPDATE_IND16( lastfght )
{
lastfght_state *state = screen.machine().driver_data<lastfght_state>();
@@ -158,7 +158,7 @@ static SCREEN_UPDATE( lastfght )
#endif
#endif
- copybitmap(bitmap, *state->m_bitmap[state->m_dest ^ 1], 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_bitmap[state->m_dest ^ 1], 0, 0, 0, 0, cliprect);
return 0;
}
@@ -323,7 +323,7 @@ static WRITE16_HANDLER( lastfght_blit_w )
{
int x, y, addr;
UINT8 *gfxdata = space->machine().region( "gfx1" )->base();
- bitmap_t *dest = state->m_bitmap[state->m_dest];
+ bitmap_ind16 &dest = state->m_bitmap[state->m_dest];
#if 0
logerror("%06x: blit x %03x, y %03x, w %03x, h %03x, sx %03x.%02x, sx1 %03x.%02x, dsx %03x.%02x, sy %03x.%02x, sy1 %03x.%02x, dsy %03x.%02x, sp %02x, sr %02x, data %02x\n", cpu_get_pc(&space->device()),
@@ -345,7 +345,7 @@ static WRITE16_HANDLER( lastfght_blit_w )
data = gfxdata[addr];
if (data && (state->m_x + x >= 0) && (state->m_x + x < 512) && (state->m_y + y >= 0) && (state->m_y + y < 256))
- dest->pix16(state->m_y + y, state->m_x + x) = data;
+ dest.pix16(state->m_y + y, state->m_x + x) = data;
}
}
}
@@ -586,11 +586,10 @@ static MACHINE_CONFIG_START( lastfght, lastfght_state )
MCFG_PALETTE_LENGTH( 256 )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 60 )
- MCFG_SCREEN_UPDATE( lastfght )
+ MCFG_SCREEN_UPDATE_STATIC( lastfght )
MCFG_VIDEO_START( lastfght )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/lazercmd.c b/src/mame/drivers/lazercmd.c
index 1a12a29e26b..8f06e4594a8 100644
--- a/src/mame/drivers/lazercmd.c
+++ b/src/mame/drivers/lazercmd.c
@@ -650,11 +650,10 @@ static MACHINE_CONFIG_START( lazercmd, lazercmd_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lazercmd)
+ MCFG_SCREEN_UPDATE_STATIC(lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
@@ -688,11 +687,10 @@ static MACHINE_CONFIG_START( medlanes, lazercmd_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lazercmd)
+ MCFG_SCREEN_UPDATE_STATIC(lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
@@ -726,11 +724,10 @@ static MACHINE_CONFIG_START( bbonk, lazercmd_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lazercmd)
+ MCFG_SCREEN_UPDATE_STATIC(lazercmd)
MCFG_GFXDECODE(lazercmd)
MCFG_PALETTE_LENGTH(5)
diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c
index afce9c14a5a..d1bc44ea7f5 100644
--- a/src/mame/drivers/legionna.c
+++ b/src/mame/drivers/legionna.c
@@ -1061,12 +1061,11 @@ static MACHINE_CONFIG_START( legionna, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(legionna)
+ MCFG_SCREEN_UPDATE_STATIC(legionna)
MCFG_GFXDECODE(legionna)
MCFG_PALETTE_LENGTH(128*16)
@@ -1094,12 +1093,11 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(legionna)
+ MCFG_SCREEN_UPDATE_STATIC(legionna)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1126,12 +1124,11 @@ static MACHINE_CONFIG_START( godzilla, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(61)
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(godzilla)
+ MCFG_SCREEN_UPDATE_STATIC(godzilla)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1158,12 +1155,11 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_REFRESH_RATE(61)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(godzilla)
+ MCFG_SCREEN_UPDATE_STATIC(godzilla)
MCFG_GFXDECODE(heatbrl)
MCFG_PALETTE_LENGTH(128*16)
@@ -1190,12 +1186,11 @@ static MACHINE_CONFIG_START( grainbow, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(grainbow)
+ MCFG_SCREEN_UPDATE_STATIC(grainbow)
MCFG_GFXDECODE(grainbow)
MCFG_PALETTE_LENGTH(128*16)
@@ -1223,12 +1218,11 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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, 32*8-1)
- MCFG_SCREEN_UPDATE(grainbow)
+ MCFG_SCREEN_UPDATE_STATIC(grainbow)
MCFG_GFXDECODE(cupsoc)
MCFG_PALETTE_LENGTH(128*16)
@@ -1264,12 +1258,11 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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, 32*8-1)
- MCFG_SCREEN_UPDATE(grainbow)
+ MCFG_SCREEN_UPDATE_STATIC(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 c930ba2deee..5f4c78f5a63 100644
--- a/src/mame/drivers/lemmings.c
+++ b/src/mame/drivers/lemmings.c
@@ -280,10 +280,9 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lemmings)
+ MCFG_SCREEN_UPDATE_STATIC(lemmings)
MCFG_SCREEN_EOF(lemmings)
MCFG_GFXDECODE(lemmings)
diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c
index d0461cd01dc..ab5f6267876 100644
--- a/src/mame/drivers/lethal.c
+++ b/src/mame/drivers/lethal.c
@@ -671,10 +671,9 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(216, 504-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(lethalen)
+ MCFG_SCREEN_UPDATE_STATIC(lethalen)
MCFG_PALETTE_LENGTH(7168+1)
diff --git a/src/mame/drivers/lethalj.c b/src/mame/drivers/lethalj.c
index b227b468f15..ee99b75f4f7 100644
--- a/src/mame/drivers/lethalj.c
+++ b/src/mame/drivers/lethalj.c
@@ -602,9 +602,8 @@ static MACHINE_CONFIG_START( gameroom, lethalj_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 701, 0, 512, 263, 0, 236)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(lethalj)
diff --git a/src/mame/drivers/lgp.c b/src/mame/drivers/lgp.c
index d64fd7c161d..f2e3674f4e2 100644
--- a/src/mame/drivers/lgp.c
+++ b/src/mame/drivers/lgp.c
@@ -66,16 +66,17 @@ Dumping Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "render.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
class lgp_state : public driver_device
{
public:
lgp_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 *m_tile_ram;
UINT8 *m_tile_control_ram;
emu_timer *m_irq_timer;
@@ -88,7 +89,7 @@ public:
/* VIDEO GOODS */
-static SCREEN_UPDATE( lgp )
+static SCREEN_UPDATE_IND16( lgp )
{
lgp_state *state = screen.machine().driver_data<lgp_state>();
int charx, chary;
@@ -124,13 +125,13 @@ static SCREEN_UPDATE( lgp )
static READ8_HANDLER(ldp_read)
{
lgp_state *state = space->machine().driver_data<lgp_state>();
- return laserdisc_data_r(state->m_laserdisc);
+ return state->m_laserdisc->status_r();
}
static WRITE8_HANDLER(ldp_write)
{
lgp_state *state = space->machine().driver_data<lgp_state>();
- laserdisc_data_w(state->m_laserdisc,data);
+ state->m_laserdisc->data_w(data);
}
@@ -346,7 +347,6 @@ static INTERRUPT_GEN( vblank_callback_lgp )
static MACHINE_START( lgp )
{
lgp_state *state = machine.driver_data<lgp_state>();
- state->m_laserdisc = machine.device("laserdisc");
state->m_irq_timer = machine.scheduler().timer_alloc(FUNC(irq_stop));
}
@@ -366,11 +366,11 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
MCFG_MACHINE_START(lgp)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(lgp, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(256, 256, lgp)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_PALETTE_LENGTH(256)
/* MCFG_PALETTE_INIT(lgp) */
@@ -380,7 +380,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c
index d00df995ee9..523839d3654 100644
--- a/src/mame/drivers/liberate.c
+++ b/src/mame/drivers/liberate.c
@@ -847,10 +847,9 @@ static MACHINE_CONFIG_START( liberate, liberate_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 529ms Vblank duration?? */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(liberate)
+ MCFG_SCREEN_UPDATE_STATIC(liberate)
MCFG_GFXDECODE(liberate)
MCFG_PALETTE_LENGTH(33)
@@ -880,7 +879,7 @@ static MACHINE_CONFIG_DERIVED( boomrang, liberate )
MCFG_VIDEO_START(boomrang)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(boomrang)
+ MCFG_SCREEN_UPDATE_STATIC(boomrang)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( prosoccr, liberate )
@@ -899,7 +898,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(prosoccr)
+ MCFG_SCREEN_UPDATE_STATIC(prosoccr)
MCFG_GFXDECODE(prosoccr)
@@ -927,10 +926,9 @@ static MACHINE_CONFIG_START( prosport, liberate_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1529) /* 529ms Vblank duration?? */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(prosport)
+ MCFG_SCREEN_UPDATE_STATIC(prosport)
MCFG_GFXDECODE(prosport)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/liberatr.c b/src/mame/drivers/liberatr.c
index b4ad7a94d02..0ff32f2a95d 100644
--- a/src/mame/drivers/liberatr.c
+++ b/src/mame/drivers/liberatr.c
@@ -398,7 +398,7 @@ static MACHINE_CONFIG_START( liberatr, liberatr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(liberatr_state, screen_update)
MCFG_SCREEN_SIZE(256,256)
MCFG_SCREEN_VISIBLE_AREA(8, 247, 13, 244)
diff --git a/src/mame/drivers/limenko.c b/src/mame/drivers/limenko.c
index b1e781c4c62..f257d85a78d 100644
--- a/src/mame/drivers/limenko.c
+++ b/src/mame/drivers/limenko.c
@@ -48,8 +48,8 @@ public:
UINT32 *m_videoreg;
UINT32 *m_mainram;
int m_spriteram_bit;
- bitmap_t *m_sprites_bitmap;
- bitmap_t *m_sprites_bitmap_pri;
+ bitmap_ind16 m_sprites_bitmap;
+ bitmap_ind8 m_sprites_bitmap_pri;
int m_prev_sprites_count;
UINT8 m_spotty_sound_cmd;
};
@@ -125,8 +125,8 @@ static WRITE32_HANDLER( spriteram_buffer_w )
clip.min_y = 0;
clip.max_y = 239;
- state->m_sprites_bitmap_pri->fill(0, clip);
- state->m_sprites_bitmap->fill(0, clip);
+ state->m_sprites_bitmap_pri.fill(0, clip);
+ state->m_sprites_bitmap.fill(0, clip);
// toggle spriterams location in the memory map
state->m_spriteram_bit ^= 1;
@@ -256,7 +256,7 @@ static TILE_GET_INFO( get_fg_tile_info )
SET_TILE_INFO(0,tile,color,0);
}
-static void draw_single_sprite(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+static void draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int priority)
{
@@ -331,7 +331,7 @@ static void draw_single_sprite(bitmap_t &dest_bmp,const rectangle &clip,const gf
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
UINT16 *dest = &dest_bmp.pix16(y);
- UINT8 *pri = &state->m_sprites_bitmap_pri->pix8(y);
+ UINT8 *pri = &state->m_sprites_bitmap_pri.pix8(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -402,20 +402,20 @@ static void draw_sprites(running_machine &machine, UINT32 *sprites, const rectan
/* prepare GfxElement on the fly */
gfx_element_build_temporary(&gfx, machine, gfxdata, width, height, width, 0, 256, 0);
- draw_single_sprite(*state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y,pri);
+ draw_single_sprite(state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y,pri);
// wrap around x
- draw_single_sprite(*state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x-512,y,pri);
+ draw_single_sprite(state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x-512,y,pri);
// wrap around y
- draw_single_sprite(*state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y-512,pri);
+ draw_single_sprite(state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y-512,pri);
// wrap around x and y
- draw_single_sprite(*state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x-512,y-512,pri);
+ draw_single_sprite(state->m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x-512,y-512,pri);
}
}
-static void copy_sprites(running_machine &machine, bitmap_t &bitmap, bitmap_t &sprites_bitmap, bitmap_t &priority_bitmap, const rectangle &cliprect)
+static void copy_sprites(running_machine &machine, bitmap_ind16 &bitmap, bitmap_ind16 &sprites_bitmap, bitmap_ind8 &priority_bitmap, const rectangle &cliprect)
{
limenko_state *state = machine.driver_data<limenko_state>();
int y;
@@ -424,7 +424,7 @@ static void copy_sprites(running_machine &machine, bitmap_t &bitmap, bitmap_t &s
UINT16 *source = &sprites_bitmap.pix16(y);
UINT16 *dest = &bitmap.pix16(y);
UINT8 *dest_pri = &priority_bitmap.pix8(y);
- UINT8 *source_pri = &state->m_sprites_bitmap_pri->pix8(y);
+ UINT8 *source_pri = &state->m_sprites_bitmap_pri.pix8(y);
int x;
for( x=cliprect.min_x; x<=cliprect.max_x; x++ )
@@ -448,11 +448,11 @@ static VIDEO_START( limenko )
tilemap_set_transparent_pen(state->m_md_tilemap,0);
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
- state->m_sprites_bitmap = auto_bitmap_alloc(machine,384,240,BITMAP_FORMAT_INDEXED16);
- state->m_sprites_bitmap_pri = auto_bitmap_alloc(machine,384,240,BITMAP_FORMAT_INDEXED8);
+ state->m_sprites_bitmap.allocate(384,240);
+ state->m_sprites_bitmap_pri.allocate(384,240);
}
-static SCREEN_UPDATE( limenko )
+static SCREEN_UPDATE_IND16( limenko )
{
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 ?)
@@ -476,7 +476,7 @@ static SCREEN_UPDATE( limenko )
tilemap_draw(bitmap,cliprect,state->m_fg_tilemap,0,1);
if(state->m_videoreg[0] & 8)
- copy_sprites(screen.machine(), bitmap, *state->m_sprites_bitmap, screen.machine().priority_bitmap, cliprect);
+ copy_sprites(screen.machine(), bitmap, state->m_sprites_bitmap, screen.machine().priority_bitmap, cliprect);
return 0;
}
@@ -678,10 +678,9 @@ static MACHINE_CONFIG_START( limenko, limenko_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE(limenko)
+ MCFG_SCREEN_UPDATE_STATIC(limenko)
MCFG_GFXDECODE(limenko)
MCFG_PALETTE_LENGTH(0x1000)
@@ -706,10 +705,9 @@ static MACHINE_CONFIG_START( spotty, limenko_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE(limenko)
+ MCFG_SCREEN_UPDATE_STATIC(limenko)
MCFG_GFXDECODE(limenko)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/littlerb.c b/src/mame/drivers/littlerb.c
index 9a5c92f9f40..e32002ac1e7 100644
--- a/src/mame/drivers/littlerb.c
+++ b/src/mame/drivers/littlerb.c
@@ -403,7 +403,7 @@ static INPUT_PORTS_START( littlerb )
INPUT_PORTS_END
-static void draw_sprite(running_machine &machine, bitmap_t &bitmap, int xsize,int ysize, int offset, int xpos, int ypos, int pal )
+static void draw_sprite(running_machine &machine, bitmap_ind16 &bitmap, int xsize,int ysize, int offset, int xpos, int ypos, int pal )
{
littlerb_state *state = machine.driver_data<littlerb_state>();
UINT16* spritegfx = state->m_region4;
@@ -442,7 +442,7 @@ static void draw_sprite(running_machine &machine, bitmap_t &bitmap, int xsize,in
}
/* sprite format / offset could be completely wrong, this is just based on our (currently incorrect) vram access */
-static SCREEN_UPDATE(littlerb)
+static SCREEN_UPDATE_IND16(littlerb)
{
littlerb_state *state = screen.machine().driver_data<littlerb_state>();
int x,y,offs, code;
@@ -489,10 +489,9 @@ static MACHINE_CONFIG_START( littlerb, littlerb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 256-1)
- MCFG_SCREEN_UPDATE(littlerb)
+ MCFG_SCREEN_UPDATE_STATIC(littlerb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/lkage.c b/src/mame/drivers/lkage.c
index b1a3d2ab6aa..b2422380a75 100644
--- a/src/mame/drivers/lkage.c
+++ b/src/mame/drivers/lkage.c
@@ -576,10 +576,9 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lkage)
+ MCFG_SCREEN_UPDATE_STATIC(lkage)
MCFG_GFXDECODE(lkage)
MCFG_PALETTE_LENGTH(1024)
@@ -623,10 +622,9 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lkage)
+ MCFG_SCREEN_UPDATE_STATIC(lkage)
MCFG_GFXDECODE(lkage)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lockon.c b/src/mame/drivers/lockon.c
index 97b8ab1e790..b8192750551 100644
--- a/src/mame/drivers/lockon.c
+++ b/src/mame/drivers/lockon.c
@@ -541,9 +541,8 @@ static MACHINE_CONFIG_START( lockon, lockon_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(lockon)
+ MCFG_SCREEN_UPDATE_STATIC(lockon)
MCFG_SCREEN_EOF(lockon)
MCFG_GFXDECODE(lockon)
diff --git a/src/mame/drivers/looping.c b/src/mame/drivers/looping.c
index 1b48948f41b..4dec193f7d3 100644
--- a/src/mame/drivers/looping.c
+++ b/src/mame/drivers/looping.c
@@ -248,7 +248,7 @@ static WRITE8_HANDLER( looping_colorram_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const UINT8 *source;
looping_state *state = machine.driver_data<looping_state>();
@@ -279,7 +279,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static SCREEN_UPDATE( looping )
+static SCREEN_UPDATE_IND16( looping )
{
looping_state *state = screen.machine().driver_data<looping_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -637,9 +637,8 @@ static MACHINE_CONFIG_START( looping, looping_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(looping)
+ MCFG_SCREEN_UPDATE_STATIC(looping)
MCFG_GFXDECODE(looping)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/lordgun.c b/src/mame/drivers/lordgun.c
index 2580d0c7615..44e751a4c7c 100644
--- a/src/mame/drivers/lordgun.c
+++ b/src/mame/drivers/lordgun.c
@@ -679,10 +679,9 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0,0x1c0-1, 0,0xe0-1)
- MCFG_SCREEN_UPDATE(lordgun)
+ MCFG_SCREEN_UPDATE_STATIC(lordgun)
MCFG_GFXDECODE(lordgun)
MCFG_PALETTE_LENGTH(0x800 * 8) // 0x800 real colors, repeated per priority level
@@ -723,10 +722,9 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0,0x1c0-1, 0,0xe0-1)
- MCFG_SCREEN_UPDATE(lordgun)
+ MCFG_SCREEN_UPDATE_STATIC(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 7ccf974e14c..c2262b9194c 100644
--- a/src/mame/drivers/lsasquad.c
+++ b/src/mame/drivers/lsasquad.c
@@ -640,10 +640,9 @@ static MACHINE_CONFIG_START( lsasquad, lsasquad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lsasquad)
+ MCFG_SCREEN_UPDATE_STATIC(lsasquad)
MCFG_GFXDECODE(lsasquad)
MCFG_PALETTE_LENGTH(512)
@@ -697,7 +696,6 @@ static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
@@ -705,7 +703,7 @@ static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(RRRR_GGGG_BBBB)
- MCFG_SCREEN_UPDATE(daikaiju)
+ MCFG_SCREEN_UPDATE_STATIC(daikaiju)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ltcasino.c b/src/mame/drivers/ltcasino.c
index d1026995e06..027ce53e133 100644
--- a/src/mame/drivers/ltcasino.c
+++ b/src/mame/drivers/ltcasino.c
@@ -632,7 +632,7 @@ static GFXDECODE_START( ltcasino )
GFXDECODE_END
-static SCREEN_UPDATE(ltcasino)
+static SCREEN_UPDATE_IND16(ltcasino)
{
ltcasino_state *state = screen.machine().driver_data<ltcasino_state>();
tilemap_draw(bitmap,cliprect,state->m_tilemap,0,0);
@@ -650,10 +650,9 @@ static MACHINE_CONFIG_START( ltcasino, ltcasino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(6*8, 58*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(ltcasino)
+ MCFG_SCREEN_UPDATE_STATIC(ltcasino)
MCFG_GFXDECODE(ltcasino)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c
index 68992b02f17..ddb27752d0d 100644
--- a/src/mame/drivers/luckgrln.c
+++ b/src/mame/drivers/luckgrln.c
@@ -261,7 +261,7 @@ static VIDEO_START(luckgrln)
tilemap_set_transparent_pen( state->m_reel4_tilemap, 0 );
}
-static SCREEN_UPDATE(luckgrln)
+static SCREEN_UPDATE_IND16(luckgrln)
{
luckgrln_state *state = screen.machine().driver_data<luckgrln_state>();
int y,x;
@@ -987,10 +987,9 @@ static MACHINE_CONFIG_START( luckgrln, luckgrln_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(luckgrln)
+ MCFG_SCREEN_UPDATE_STATIC(luckgrln)
MCFG_GFXDECODE(luckgrln)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/lucky74.c b/src/mame/drivers/lucky74.c
index fe5c41ad5b3..9c17889165d 100644
--- a/src/mame/drivers/lucky74.c
+++ b/src/mame/drivers/lucky74.c
@@ -1250,10 +1250,9 @@ static MACHINE_CONFIG_START( lucky74, lucky74_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lucky74)
+ MCFG_SCREEN_UPDATE_STATIC(lucky74)
MCFG_GFXDECODE(lucky74)
diff --git a/src/mame/drivers/lvcards.c b/src/mame/drivers/lvcards.c
index 11d050a6806..b7d6b10a6fa 100644
--- a/src/mame/drivers/lvcards.c
+++ b/src/mame/drivers/lvcards.c
@@ -477,10 +477,9 @@ static MACHINE_CONFIG_START( lvcards, lvcards_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(lvcards)
+ MCFG_SCREEN_UPDATE_STATIC(lvcards)
MCFG_GFXDECODE(lvcards)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c
index 4f8c3d1b751..c1c00600fdf 100644
--- a/src/mame/drivers/lwings.c
+++ b/src/mame/drivers/lwings.c
@@ -806,10 +806,9 @@ static MACHINE_CONFIG_START( lwings, lwings_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(lwings)
+ MCFG_SCREEN_UPDATE_STATIC(lwings)
MCFG_SCREEN_EOF(lwings)
MCFG_GFXDECODE(lwings)
@@ -853,7 +852,7 @@ static MACHINE_CONFIG_DERIVED( trojan, lwings )
MCFG_VIDEO_START(trojan)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(trojan)
+ MCFG_SCREEN_UPDATE_STATIC(trojan)
/* sound hardware */
MCFG_SOUND_ADD("5205", MSM5205, XTAL_455kHz) /* verified on PCB */
diff --git a/src/mame/drivers/m10.c b/src/mame/drivers/m10.c
index 92b51bd49f8..2dd8967fd10 100644
--- a/src/mame/drivers/m10.c
+++ b/src/mame/drivers/m10.c
@@ -846,9 +846,8 @@ static MACHINE_CONFIG_START( m10, m10_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(IREMM10_PIXEL_CLOCK, IREMM10_HTOTAL, IREMM10_HBEND, IREMM10_HBSTART, IREMM10_VTOTAL, IREMM10_VBEND, IREMM10_VBSTART)
- MCFG_SCREEN_UPDATE(m10)
+ MCFG_SCREEN_UPDATE_STATIC(m10)
MCFG_GFXDECODE(m10)
MCFG_PALETTE_LENGTH(2*8)
@@ -893,9 +892,8 @@ static MACHINE_CONFIG_START( m15, m10_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(IREMM15_PIXEL_CLOCK, IREMM15_HTOTAL, IREMM15_HBEND, IREMM15_HBSTART, IREMM15_VTOTAL, IREMM15_VBEND, IREMM15_VBSTART)
- MCFG_SCREEN_UPDATE(m15)
+ MCFG_SCREEN_UPDATE_STATIC(m15)
MCFG_PALETTE_LENGTH(2*8)
diff --git a/src/mame/drivers/m107.c b/src/mame/drivers/m107.c
index 486b7130de5..52f64d1c8c3 100644
--- a/src/mame/drivers/m107.c
+++ b/src/mame/drivers/m107.c
@@ -789,10 +789,9 @@ static MACHINE_CONFIG_START( firebarr, m107_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE(m107)
+ MCFG_SCREEN_UPDATE_STATIC(m107)
MCFG_GFXDECODE(firebarr)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/m14.c b/src/mame/drivers/m14.c
index 872f3de7e5f..f1d9744d8ba 100644
--- a/src/mame/drivers/m14.c
+++ b/src/mame/drivers/m14.c
@@ -120,7 +120,7 @@ static VIDEO_START( m14 )
state->m_m14_tilemap = tilemap_create(machine, m14_get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( m14 )
+static SCREEN_UPDATE_IND16( m14 )
{
m14_state *state = screen.machine().driver_data<m14_state>();
@@ -344,10 +344,9 @@ static MACHINE_CONFIG_START( m14, m14_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(m14)
+ MCFG_SCREEN_UPDATE_STATIC(m14)
MCFG_GFXDECODE(m14)
MCFG_PALETTE_LENGTH(0x20)
MCFG_PALETTE_INIT(m14)
diff --git a/src/mame/drivers/m52.c b/src/mame/drivers/m52.c
index ac3dd4bd1ef..fb401837aa0 100644
--- a/src/mame/drivers/m52.c
+++ b/src/mame/drivers/m52.c
@@ -407,8 +407,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m52)
+ MCFG_SCREEN_UPDATE_STATIC(m52)
MCFG_PALETTE_INIT(m52)
MCFG_VIDEO_START(m52)
diff --git a/src/mame/drivers/m57.c b/src/mame/drivers/m57.c
index cb278d61ffa..803b07dd426 100644
--- a/src/mame/drivers/m57.c
+++ b/src/mame/drivers/m57.c
@@ -236,10 +236,9 @@ static MACHINE_CONFIG_START( m57, m57_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */)
/* the Lode Runner manual (similar but different hardware) */
/* talks about 55Hz and 1790ms vblank duration. */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(m57)
+ MCFG_SCREEN_UPDATE_STATIC(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 6108ef7d65d..c38ea68ecb8 100644
--- a/src/mame/drivers/m58.c
+++ b/src/mame/drivers/m58.c
@@ -201,8 +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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(yard)
+ MCFG_SCREEN_UPDATE_STATIC(yard)
MCFG_PALETTE_INIT(yard)
MCFG_VIDEO_START(yard)
diff --git a/src/mame/drivers/m62.c b/src/mame/drivers/m62.c
index c45197c3431..31195954a99 100644
--- a/src/mame/drivers/m62.c
+++ b/src/mame/drivers/m62.c
@@ -970,10 +970,9 @@ static MACHINE_CONFIG_START( ldrun, m62_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* frames per second and vblank duration from the Lode Runner manual */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ldrun)
+ MCFG_SCREEN_UPDATE_STATIC(ldrun)
MCFG_GFXDECODE(ldrun)
MCFG_PALETTE_LENGTH(512)
@@ -997,7 +996,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(kungfum)
+ MCFG_SCREEN_UPDATE_STATIC(kungfum)
MCFG_VIDEO_START(kungfum)
MACHINE_CONFIG_END
@@ -1014,7 +1013,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(battroad)
+ MCFG_SCREEN_UPDATE_STATIC(battroad)
MCFG_GFXDECODE(battroad)
MCFG_PALETTE_LENGTH(544)
@@ -1032,7 +1031,7 @@ static MACHINE_CONFIG_DERIVED( ldrun2, ldrun )
MCFG_VIDEO_START(ldrun2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ldrun)
+ MCFG_SCREEN_UPDATE_STATIC(ldrun)
MACHINE_CONFIG_END
@@ -1047,7 +1046,7 @@ static MACHINE_CONFIG_DERIVED( ldrun3, ldrun )
MCFG_GFXDECODE(ldrun3)
MCFG_VIDEO_START(ldrun2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ldrun3)
+ MCFG_SCREEN_UPDATE_STATIC(ldrun3)
MACHINE_CONFIG_END
@@ -1062,7 +1061,7 @@ static MACHINE_CONFIG_DERIVED( ldrun4, ldrun )
MCFG_GFXDECODE(ldrun3)
MCFG_VIDEO_START(ldrun4)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ldrun4)
+ MCFG_SCREEN_UPDATE_STATIC(ldrun4)
MACHINE_CONFIG_END
@@ -1079,7 +1078,7 @@ static MACHINE_CONFIG_DERIVED( lotlot, ldrun )
MCFG_PALETTE_INIT(lotlot)
MCFG_VIDEO_START(lotlot)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(lotlot)
+ MCFG_SCREEN_UPDATE_STATIC(lotlot)
MACHINE_CONFIG_END
@@ -1095,7 +1094,7 @@ static MACHINE_CONFIG_DERIVED( kidniki, ldrun )
MCFG_VIDEO_START(kidniki)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(kidniki)
+ MCFG_SCREEN_UPDATE_STATIC(kidniki)
MACHINE_CONFIG_END
@@ -1110,7 +1109,7 @@ static MACHINE_CONFIG_DERIVED( spelunkr, ldrun )
MCFG_VIDEO_START(spelunkr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(spelunkr)
+ MCFG_SCREEN_UPDATE_STATIC(spelunkr)
MACHINE_CONFIG_END
@@ -1127,7 +1126,7 @@ static MACHINE_CONFIG_DERIVED( spelunk2, ldrun )
MCFG_PALETTE_INIT(spelunk2)
MCFG_VIDEO_START(spelunk2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(spelunk2)
+ MCFG_SCREEN_UPDATE_STATIC(spelunk2)
MACHINE_CONFIG_END
@@ -1142,7 +1141,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(youjyudn)
+ MCFG_SCREEN_UPDATE_STATIC(youjyudn)
MCFG_GFXDECODE(youjyudn)
MCFG_VIDEO_START(youjyudn)
@@ -1158,7 +1157,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(horizon)
+ MCFG_SCREEN_UPDATE_STATIC(horizon)
MCFG_VIDEO_START(horizon)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c
index bf4c6319379..6d4a4bac789 100644
--- a/src/mame/drivers/m63.c
+++ b/src/mame/drivers/m63.c
@@ -297,7 +297,7 @@ static VIDEO_START( m63 )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
m63_state *state = machine.driver_data<m63_state>();
int offs;
@@ -338,7 +338,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE( m63 )
+static SCREEN_UPDATE_IND16( m63 )
{
m63_state *state = screen.machine().driver_data<m63_state>();
@@ -772,10 +772,9 @@ static MACHINE_CONFIG_START( m63, m63_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(m63)
+ MCFG_SCREEN_UPDATE_STATIC(m63)
MCFG_GFXDECODE(m63)
MCFG_PALETTE_LENGTH(256+4)
@@ -817,10 +816,9 @@ static MACHINE_CONFIG_START( fghtbskt, m63_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(m63)
+ MCFG_SCREEN_UPDATE_STATIC(m63)
MCFG_GFXDECODE(fghtbskt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c
index ddbe3c62797..0e428284247 100644
--- a/src/mame/drivers/m72.c
+++ b/src/mame/drivers/m72.c
@@ -1874,8 +1874,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(m72)
@@ -1930,8 +1929,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(m72)
@@ -1968,8 +1966,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(xmultipl)
@@ -2010,8 +2007,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(m72)
@@ -2052,8 +2048,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(hharry)
@@ -2094,8 +2089,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(m72)
@@ -2136,8 +2130,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(rtype2)
@@ -2178,8 +2171,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(majtitle)
+ MCFG_SCREEN_UPDATE_STATIC(majtitle)
MCFG_VIDEO_START(majtitle)
@@ -2220,8 +2212,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(hharry)
@@ -2262,8 +2253,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(hharryu)
@@ -2304,8 +2294,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(m72)
@@ -2346,8 +2335,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(poundfor)
@@ -2388,8 +2376,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(m72)
+ MCFG_SCREEN_UPDATE_STATIC(m72)
MCFG_VIDEO_START(poundfor)
diff --git a/src/mame/drivers/m79amb.c b/src/mame/drivers/m79amb.c
index 8aef6c3aeb6..06cd9dc5165 100644
--- a/src/mame/drivers/m79amb.c
+++ b/src/mame/drivers/m79amb.c
@@ -80,7 +80,7 @@ static WRITE8_HANDLER( ramtek_videoram_w )
state->m_videoram[offset] = data & ~*state->m_mask;
}
-static SCREEN_UPDATE( ramtek )
+static SCREEN_UPDATE_RGB32( ramtek )
{
m79amb_state *state = screen.machine().driver_data<m79amb_state>();
offs_t offs;
@@ -214,10 +214,9 @@ static MACHINE_CONFIG_START( m79amb, m79amb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE(ramtek)
+ MCFG_SCREEN_UPDATE_STATIC(ramtek)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/m90.c b/src/mame/drivers/m90.c
index 8049cbf0a7f..9f734fa56b3 100644
--- a/src/mame/drivers/m90.c
+++ b/src/mame/drivers/m90.c
@@ -730,10 +730,9 @@ static MACHINE_CONFIG_START( m90, m90_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8, 47*8-1)
- MCFG_SCREEN_UPDATE(m90)
+ MCFG_SCREEN_UPDATE_STATIC(m90)
MCFG_GFXDECODE(m90)
MCFG_PALETTE_LENGTH(512)
@@ -820,7 +819,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(bomblord)
+ MCFG_SCREEN_UPDATE_STATIC(bomblord)
MCFG_VIDEO_START(bomblord)
MACHINE_CONFIG_END
@@ -839,7 +838,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(dynablsb)
+ MCFG_SCREEN_UPDATE_STATIC(dynablsb)
MCFG_VIDEO_START(dynablsb)
diff --git a/src/mame/drivers/m92.c b/src/mame/drivers/m92.c
index 6f649d6a35f..e26d5e92c23 100644
--- a/src/mame/drivers/m92.c
+++ b/src/mame/drivers/m92.c
@@ -917,10 +917,9 @@ static MACHINE_CONFIG_START( m92, m92_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE(m92)
+ MCFG_SCREEN_UPDATE_STATIC(m92)
MCFG_GFXDECODE(m92)
MCFG_PALETTE_LENGTH(2048)
@@ -1004,10 +1003,9 @@ static MACHINE_CONFIG_START( ppan, m92_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
- MCFG_SCREEN_UPDATE(ppan)
+ MCFG_SCREEN_UPDATE_STATIC(ppan)
MCFG_GFXDECODE(m92)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/macrossp.c b/src/mame/drivers/macrossp.c
index 52d93366637..79f1b348313 100644
--- a/src/mame/drivers/macrossp.c
+++ b/src/mame/drivers/macrossp.c
@@ -642,10 +642,9 @@ static MACHINE_CONFIG_START( macrossp, macrossp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 0*16, 15*16-1)
- MCFG_SCREEN_UPDATE(macrossp)
+ MCFG_SCREEN_UPDATE_STATIC(macrossp)
MCFG_SCREEN_EOF(macrossp)
MCFG_GFXDECODE(macrossp)
diff --git a/src/mame/drivers/macs.c b/src/mame/drivers/macs.c
index 29638247e0e..1109eed879e 100644
--- a/src/mame/drivers/macs.c
+++ b/src/mame/drivers/macs.c
@@ -482,10 +482,9 @@ static MACHINE_CONFIG_START( macs, macs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(128*8, 128*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 128*8-1, 0*8, 128*8-1)
- MCFG_SCREEN_UPDATE(st0016)
+ MCFG_SCREEN_UPDATE_STATIC(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 9346efabad1..5460ac84788 100644
--- a/src/mame/drivers/madmotor.c
+++ b/src/mame/drivers/madmotor.c
@@ -267,10 +267,9 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration taken from Burger Time */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(madmotor)
+ MCFG_SCREEN_UPDATE_STATIC(madmotor)
MCFG_GFXDECODE(madmotor)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/magic10.c b/src/mame/drivers/magic10.c
index 67fde5bf315..f457e9ce0ab 100644
--- a/src/mame/drivers/magic10.c
+++ b/src/mame/drivers/magic10.c
@@ -183,7 +183,7 @@ static VIDEO_START( magic10 )
tilemap_set_transparent_pen(state->m_layer2_tilemap, 0);
}
-static SCREEN_UPDATE( magic10 )
+static SCREEN_UPDATE_IND16( magic10 )
{
magic10_state *state = screen.machine().driver_data<magic10_state>();
/*TODO: understand where this comes from. */
@@ -724,10 +724,9 @@ static MACHINE_CONFIG_START( magic10, magic10_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(magic10)
+ MCFG_SCREEN_UPDATE_STATIC(magic10)
MCFG_PALETTE_LENGTH(0x100)
MCFG_GFXDECODE(magic10)
diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c
index 06fb9f42f20..a5f70ac9fa3 100644
--- a/src/mame/drivers/magicard.c
+++ b/src/mame/drivers/magicard.c
@@ -379,7 +379,7 @@ static VIDEO_START(magicard)
}
-static SCREEN_UPDATE(magicard)
+static SCREEN_UPDATE_RGB32(magicard)
{
magicard_state *state = screen.machine().driver_data<magicard_state>();
int x,y;
@@ -710,10 +710,9 @@ static MACHINE_CONFIG_START( magicard, magicard_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1) //dynamic resolution,TODO
- MCFG_SCREEN_UPDATE(magicard)
+ MCFG_SCREEN_UPDATE_STATIC(magicard)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c
index 1bbc1977e63..412177e3fec 100644
--- a/src/mame/drivers/magicfly.c
+++ b/src/mame/drivers/magicfly.c
@@ -513,7 +513,7 @@ static VIDEO_START( 7mezzo )
state->m_bg_tilemap = tilemap_create(machine, get_7mezzo_tile_info, tilemap_scan_rows, 8, 8, 32, 29);
}
-static SCREEN_UPDATE( magicfly )
+static SCREEN_UPDATE_IND16( magicfly )
{
magicfly_state *state = screen.machine().driver_data<magicfly_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -809,10 +809,9 @@ static MACHINE_CONFIG_START( magicfly, magicfly_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(magicfly)
+ MCFG_SCREEN_UPDATE_STATIC(magicfly)
MCFG_GFXDECODE(magicfly)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/magictg.c b/src/mame/drivers/magictg.c
index 9b9681cfb2e..da8b78c9664 100644
--- a/src/mame/drivers/magictg.c
+++ b/src/mame/drivers/magictg.c
@@ -258,7 +258,7 @@ static VIDEO_START( magictg )
}
-static SCREEN_UPDATE( magictg )
+static SCREEN_UPDATE_RGB32( magictg )
{
magictg_state* state = screen.machine().driver_data<magictg_state>();
return voodoo_update(state->m_voodoo[0], bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
@@ -946,12 +946,11 @@ static MACHINE_CONFIG_START( magictg, magictg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 447)
MCFG_VIDEO_START(magictg)
- MCFG_SCREEN_UPDATE(magictg)
+ MCFG_SCREEN_UPDATE_STATIC(magictg)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/magmax.c b/src/mame/drivers/magmax.c
index 56693a9fee8..6aaefb88d54 100644
--- a/src/mame/drivers/magmax.c
+++ b/src/mame/drivers/magmax.c
@@ -368,10 +368,9 @@ static MACHINE_CONFIG_START( magmax, magmax_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(magmax)
+ MCFG_SCREEN_UPDATE_STATIC(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 1559e8e2e37..89bea6c1ed6 100644
--- a/src/mame/drivers/mainevt.c
+++ b/src/mame/drivers/mainevt.c
@@ -477,10 +477,9 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mainevt)
+ MCFG_SCREEN_UPDATE_STATIC(mainevt)
MCFG_PALETTE_LENGTH(256)
@@ -538,10 +537,9 @@ static MACHINE_CONFIG_START( devstors, mainevt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(dv)
+ MCFG_SCREEN_UPDATE_STATIC(dv)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mainsnk.c b/src/mame/drivers/mainsnk.c
index eae3a11ce74..8b4a9537935 100644
--- a/src/mame/drivers/mainsnk.c
+++ b/src/mame/drivers/mainsnk.c
@@ -405,10 +405,9 @@ static MACHINE_CONFIG_START( mainsnk, mainsnk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE(mainsnk)
+ MCFG_SCREEN_UPDATE_STATIC(mainsnk)
MCFG_GFXDECODE(mainsnk)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/majorpkr.c b/src/mame/drivers/majorpkr.c
index e301c8467e1..5df9310d52c 100644
--- a/src/mame/drivers/majorpkr.c
+++ b/src/mame/drivers/majorpkr.c
@@ -521,7 +521,7 @@ static VIDEO_START(majorpkr)
}
-static SCREEN_UPDATE(majorpkr)
+static SCREEN_UPDATE_IND16(majorpkr)
{
majorpkr_state *state = screen.machine().driver_data<majorpkr_state>();
@@ -1037,7 +1037,6 @@ static MACHINE_CONFIG_START( majorpkr, majorpkr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(52.786)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE((47+1)*16, (36+1)*8) /* through CRTC registers: 768 x 296 */
MCFG_SCREEN_VISIBLE_AREA(0, (36*16)-1, 0, (28*8)-1) /* through CRTC registers: 560(+16) x 224 */
@@ -1045,7 +1044,7 @@ static MACHINE_CONFIG_START( majorpkr, majorpkr_state )
MCFG_PALETTE_LENGTH(0x100 * 16)
MCFG_VIDEO_START(majorpkr)
- MCFG_SCREEN_UPDATE(majorpkr)
+ MCFG_SCREEN_UPDATE_STATIC(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 88870a809e0..2216ad3d0c6 100644
--- a/src/mame/drivers/malzak.c
+++ b/src/mame/drivers/malzak.c
@@ -409,10 +409,9 @@ static MACHINE_CONFIG_START( malzak, malzak_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(SAA5050_VBLANK))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(480, 512) /* vert size is a guess */
MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 479)
- MCFG_SCREEN_UPDATE(malzak)
+ MCFG_SCREEN_UPDATE_STATIC(malzak)
MCFG_GFXDECODE(malzak)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/mappy.c b/src/mame/drivers/mappy.c
index a970b6af883..9cd7baeb8a8 100644
--- a/src/mame/drivers/mappy.c
+++ b/src/mame/drivers/mappy.c
@@ -1658,9 +1658,8 @@ static MACHINE_CONFIG_START( superpac, mappy_state )
MCFG_PALETTE_LENGTH(64*4+64*4)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(superpac)
+ MCFG_SCREEN_UPDATE_STATIC(superpac)
MCFG_PALETTE_INIT(superpac)
MCFG_VIDEO_START(superpac)
@@ -1732,9 +1731,8 @@ static MACHINE_CONFIG_START( phozon, mappy_state )
MCFG_PALETTE_LENGTH(64*4+64*4)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(phozon)
+ MCFG_SCREEN_UPDATE_STATIC(phozon)
MCFG_PALETTE_INIT(phozon)
MCFG_VIDEO_START(phozon)
@@ -1773,9 +1771,8 @@ static MACHINE_CONFIG_START( mappy, mappy_state )
MCFG_PALETTE_LENGTH(64*4+16*16)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(mappy)
+ MCFG_SCREEN_UPDATE_STATIC(mappy)
MCFG_PALETTE_INIT(mappy)
MCFG_VIDEO_START(mappy)
diff --git a/src/mame/drivers/marineb.c b/src/mame/drivers/marineb.c
index 6921fd09ab1..b042802edb6 100644
--- a/src/mame/drivers/marineb.c
+++ b/src/mame/drivers/marineb.c
@@ -559,10 +559,9 @@ static MACHINE_CONFIG_START( marineb, marineb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(marineb)
+ MCFG_SCREEN_UPDATE_STATIC(marineb)
MCFG_GFXDECODE(marineb)
MCFG_PALETTE_LENGTH(256)
@@ -584,7 +583,7 @@ static MACHINE_CONFIG_DERIVED( changes, marineb )
/* video hardware */
MCFG_GFXDECODE(changes)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(changes)
+ MCFG_SCREEN_UPDATE_STATIC(changes)
MACHINE_CONFIG_END
@@ -595,7 +594,7 @@ static MACHINE_CONFIG_DERIVED( springer, marineb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(springer)
+ MCFG_SCREEN_UPDATE_STATIC(springer)
MACHINE_CONFIG_END
@@ -606,7 +605,7 @@ static MACHINE_CONFIG_DERIVED( hoccer, marineb )
/* video hardware */
MCFG_GFXDECODE(hoccer)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(hoccer)
+ MCFG_SCREEN_UPDATE_STATIC(hoccer)
MACHINE_CONFIG_END
@@ -620,7 +619,7 @@ static MACHINE_CONFIG_DERIVED( wanted, marineb )
/* video hardware */
MCFG_GFXDECODE(wanted)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(springer)
+ MCFG_SCREEN_UPDATE_STATIC(springer)
/* sound hardware */
MCFG_SOUND_REPLACE("ay1", AY8910, 1500000)
@@ -638,7 +637,7 @@ static MACHINE_CONFIG_DERIVED( hopprobo, marineb )
/* video hardware */
MCFG_GFXDECODE(hopprobo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(hopprobo)
+ MCFG_SCREEN_UPDATE_STATIC(hopprobo)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/marinedt.c b/src/mame/drivers/marinedt.c
index dade9a3747b..3f7745ab127 100644
--- a/src/mame/drivers/marinedt.c
+++ b/src/mame/drivers/marinedt.c
@@ -107,9 +107,9 @@ public:
UINT8 * m_tx_tileram;
/* video-related */
- bitmap_t *m_tile;
- bitmap_t *m_obj1;
- bitmap_t *m_obj2;
+ bitmap_ind16 *m_tile;
+ bitmap_ind16 *m_obj1;
+ bitmap_ind16 *m_obj2;
tilemap_t *m_tx_tilemap;
UINT8 m_obj1_a;
@@ -487,9 +487,9 @@ static VIDEO_START( marinedt )
tilemap_set_scrolldx(state->m_tx_tilemap, 0, 4*8);
tilemap_set_scrolldy(state->m_tx_tilemap, 0, -4*8);
- state->m_tile = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, machine.primary_screen->format());
- state->m_obj1 = auto_bitmap_alloc(machine, 32, 32, machine.primary_screen->format());
- state->m_obj2 = auto_bitmap_alloc(machine, 32, 32, machine.primary_screen->format());
+ state->m_tile = auto_bitmap_ind16_alloc(machine, 32 * 8, 32 * 8);
+ state->m_obj1 = auto_bitmap_ind16_alloc(machine, 32, 32);
+ state->m_obj2 = auto_bitmap_ind16_alloc(machine, 32, 32);
}
@@ -506,7 +506,7 @@ static VIDEO_START( marinedt )
#define OBJ_FLIPX(a) ((state->m_pf & 0x02) == 0)
#define OBJ_FLIPY(a) ((a) & 0x80)
-static SCREEN_UPDATE( marinedt )
+static SCREEN_UPDATE_IND16( marinedt )
{
marinedt_state *state = screen.machine().driver_data<marinedt_state>();
int sx, sy;
@@ -672,10 +672,9 @@ static MACHINE_CONFIG_START( marinedt, marinedt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(marinedt)
+ MCFG_SCREEN_UPDATE_STATIC(marinedt)
MCFG_GFXDECODE(marinedt)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/mario.c b/src/mame/drivers/mario.c
index 6822c161b52..6056db34aaf 100644
--- a/src/mame/drivers/mario.c
+++ b/src/mame/drivers/mario.c
@@ -344,9 +344,8 @@ static MACHINE_CONFIG_START( mario_base, mario_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(mario)
+ MCFG_SCREEN_UPDATE_STATIC(mario)
MCFG_GFXDECODE(mario)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/markham.c b/src/mame/drivers/markham.c
index 44f5b7561f4..e9737ef6039 100644
--- a/src/mame/drivers/markham.c
+++ b/src/mame/drivers/markham.c
@@ -189,10 +189,9 @@ static MACHINE_CONFIG_START( markham, markham_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(markham)
+ MCFG_SCREEN_UPDATE_STATIC(markham)
MCFG_GFXDECODE(markham)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c
index 3d40827c36f..9698a1f077e 100644
--- a/src/mame/drivers/mastboy.c
+++ b/src/mame/drivers/mastboy.c
@@ -470,7 +470,7 @@ static VIDEO_START(mastboy)
gfx_element_set_source(machine.gfx[0], state->m_vram);
}
-static SCREEN_UPDATE(mastboy)
+static SCREEN_UPDATE_IND16(mastboy)
{
mastboy_state *state = screen.machine().driver_data<mastboy_state>();
int y,x,i;
@@ -891,10 +891,9 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(6000000.0f / 384.0f / 282.0f)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(mastboy)
+ MCFG_SCREEN_UPDATE_STATIC(mastboy)
MCFG_GFXDECODE(mastboy)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/matmania.c b/src/mame/drivers/matmania.c
index 457d069e460..2daba97df1e 100644
--- a/src/mame/drivers/matmania.c
+++ b/src/mame/drivers/matmania.c
@@ -326,10 +326,9 @@ static MACHINE_CONFIG_START( matmania, matmania_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(matmania)
+ MCFG_SCREEN_UPDATE_STATIC(matmania)
MCFG_GFXDECODE(matmania)
MCFG_PALETTE_LENGTH(64+16)
@@ -428,10 +427,9 @@ static MACHINE_CONFIG_START( maniach, matmania_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(maniach)
+ MCFG_SCREEN_UPDATE_STATIC(maniach)
MCFG_GFXDECODE(maniach)
MCFG_PALETTE_LENGTH(64+16)
diff --git a/src/mame/drivers/maxaflex.c b/src/mame/drivers/maxaflex.c
index e34df8ba75f..2ee41a29e05 100644
--- a/src/mame/drivers/maxaflex.c
+++ b/src/mame/drivers/maxaflex.c
@@ -411,11 +411,10 @@ static MACHINE_CONFIG_START( a600xl, maxaflex_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y)
MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ)
MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ)
- MCFG_SCREEN_UPDATE(atari)
+ MCFG_SCREEN_UPDATE_STATIC(atari)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(atari)
diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c
index efbeb98de33..927969bc3e9 100644
--- a/src/mame/drivers/maygayv1.c
+++ b/src/mame/drivers/maygayv1.c
@@ -280,7 +280,7 @@ static VIDEO_START( maygayv1 )
}
-static SCREEN_UPDATE( maygayv1 )
+static SCREEN_UPDATE_IND16( maygayv1 )
{
maygayv1_state *state = screen.machine().driver_data<maygayv1_state>();
i82716_t &i82716 = state->m_i82716;
@@ -1044,10 +1044,9 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(640, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 300 - 1)
- MCFG_SCREEN_UPDATE(maygayv1)
+ MCFG_SCREEN_UPDATE_STATIC(maygayv1)
MCFG_SCREEN_EOF(maygayv1)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c
index 26ba85b7187..034ce9f11bf 100644
--- a/src/mame/drivers/mayumi.c
+++ b/src/mame/drivers/mayumi.c
@@ -61,7 +61,7 @@ static WRITE8_HANDLER( mayumi_videoram_w )
tilemap_mark_tile_dirty(state->m_tilemap, offset & 0x7ff);
}
-static SCREEN_UPDATE( mayumi )
+static SCREEN_UPDATE_IND16( mayumi )
{
mayumi_state *state = screen.machine().driver_data<mayumi_state>();
tilemap_draw(bitmap, cliprect, state->m_tilemap, 0, 0);
@@ -382,10 +382,9 @@ static MACHINE_CONFIG_START( mayumi, mayumi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 62*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mayumi)
+ MCFG_SCREEN_UPDATE_STATIC(mayumi)
MCFG_GFXDECODE(mayumi)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c
index 3a11b44be14..91de6b48603 100644
--- a/src/mame/drivers/mazerbla.c
+++ b/src/mame/drivers/mazerbla.c
@@ -60,7 +60,7 @@ public:
size_t m_videoram_size;
/* video-related */
- bitmap_t * m_tmpbitmaps[4];
+ bitmap_ind16 m_tmpbitmaps[4];
UINT8 m_vcu_video_reg[4];
UINT32 m_vcu_gfx_addr;
@@ -158,20 +158,20 @@ static VIDEO_START( mazerbla )
state->m_dbg_lookup = 4;
#endif
- state->m_tmpbitmaps[0] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmaps[1] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmaps[2] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmaps[3] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmaps[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmaps[1].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmaps[2].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmaps[3].allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_tmpbitmaps[0]));
- state->save_item(NAME(*state->m_tmpbitmaps[1]));
- state->save_item(NAME(*state->m_tmpbitmaps[2]));
- state->save_item(NAME(*state->m_tmpbitmaps[3]));
+ state->save_item(NAME(state->m_tmpbitmaps[0]));
+ state->save_item(NAME(state->m_tmpbitmaps[1]));
+ state->save_item(NAME(state->m_tmpbitmaps[2]));
+ state->save_item(NAME(state->m_tmpbitmaps[3]));
}
#ifdef UNUSED_DEFINITION
-SCREEN_UPDATE( test_vcu )
+SCREEN_UPDATE_IND16( test_vcu )
{
mazerbla_state *state = screen.machine().driver_data<mazerbla_state>();
int *planes_enabled = state->m_planes_enabled;
@@ -194,17 +194,17 @@ SCREEN_UPDATE( test_vcu )
if (planes_enabled[2])
copybitmap_trans(bitmap, state->m_tmpbitmaps[2], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[2]->fill(color_base);
+ state->m_tmpbitmaps[2].fill(color_base);
if (planes_enabled[1])
copybitmap_trans(bitmap, state->m_tmpbitmaps[1], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[1]->fill(color_base);
+ state->m_tmpbitmaps[1].fill(color_base);
if (planes_enabled[0])
copybitmap_trans(bitmap, state->m_tmpbitmaps[0], 0, 0, 0, 0,cliprect, color_base);
- state->m_tmpbitmaps[0]->fill(color_base);
+ state->m_tmpbitmaps[0].fill(color_base);
if (screen.machine().input().code_pressed_once(KEYCODE_1)) /* plane 1 */
planes_enabled[0] ^= 1;
@@ -270,7 +270,7 @@ SCREEN_UPDATE( test_vcu )
#endif
-static SCREEN_UPDATE( mazerbla )
+static SCREEN_UPDATE_IND16( mazerbla )
{
mazerbla_state *state = screen.machine().driver_data<mazerbla_state>();
// UINT32 color_base = 0;
@@ -283,10 +283,10 @@ static SCREEN_UPDATE( mazerbla )
// 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, 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);
return 0;
}
@@ -464,7 +464,7 @@ static READ8_HANDLER( vcu_set_gfx_addr_r )
}
if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256) )
- state->m_tmpbitmaps[state->m_plane]->pix16(state->m_ypos + y, state->m_xpos + x) = col;
+ state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col;
bits += 2;
}
@@ -493,7 +493,7 @@ static READ8_HANDLER( vcu_set_gfx_addr_r )
/* color = 4 MSB = front PEN, 4 LSB = background PEN */
if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256))
- state->m_tmpbitmaps[state->m_plane]->pix16(state->m_ypos + y, state->m_xpos + x) = data ? color_base | ((state->m_color1 & 0xf0) >> 4): color_base | ((state->m_color1 & 0x0f));
+ state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = data ? color_base | ((state->m_color1 & 0xf0) >> 4): color_base | ((state->m_color1 & 0x0f));
bits += 1;
}
@@ -521,7 +521,7 @@ static READ8_HANDLER( vcu_set_gfx_addr_r )
col = color_base | data;
if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256))
- state->m_tmpbitmaps[state->m_plane]->pix16(state->m_ypos + y, state->m_xpos + x) = col;
+ state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col;
bits += 4;
}
@@ -622,7 +622,7 @@ static READ8_HANDLER( vcu_set_clr_addr_r )
}
if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256))
- state->m_tmpbitmaps[state->m_plane]->pix16(state->m_ypos + y, state->m_xpos + x) = col;
+ state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col;
bits += 2;
}
@@ -1524,10 +1524,9 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(mazerbla)
+ MCFG_SCREEN_UPDATE_STATIC(mazerbla)
MCFG_PALETTE_LENGTH(256)
@@ -1565,10 +1564,9 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(mazerbla)
+ MCFG_SCREEN_UPDATE_STATIC(mazerbla)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mcatadv.c b/src/mame/drivers/mcatadv.c
index b800e70880d..a5bf3aec9d5 100644
--- a/src/mame/drivers/mcatadv.c
+++ b/src/mame/drivers/mcatadv.c
@@ -458,10 +458,9 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(mcatadv)
+ MCFG_SCREEN_UPDATE_STATIC(mcatadv)
MCFG_SCREEN_EOF(mcatadv) // Buffer Spriteram
MCFG_GFXDECODE(mcatadv)
diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c
index 3efb9ec6cec..89217f1c753 100644
--- a/src/mame/drivers/mcr.c
+++ b/src/mame/drivers/mcr.c
@@ -1629,10 +1629,9 @@ static MACHINE_CONFIG_START( mcr_90009, mcr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1)
- MCFG_SCREEN_UPDATE(mcr)
+ MCFG_SCREEN_UPDATE_STATIC(mcr)
MCFG_GFXDECODE(mcr)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c
index f50a9b13fe3..240c9aeaa07 100644
--- a/src/mame/drivers/mcr3.c
+++ b/src/mame/drivers/mcr3.c
@@ -1108,10 +1108,9 @@ static MACHINE_CONFIG_START( mcrmono, mcr3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 0*16, 30*16-1)
- MCFG_SCREEN_UPDATE(mcr3)
+ MCFG_SCREEN_UPDATE_STATIC(mcr3)
MCFG_GFXDECODE(mcr3)
MCFG_PALETTE_LENGTH(64)
@@ -1156,7 +1155,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(spyhunt)
+ MCFG_SCREEN_UPDATE_STATIC(spyhunt)
MCFG_GFXDECODE(spyhunt)
MCFG_PALETTE_LENGTH(64+4)
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index 66fddc09e66..5c41fe05491 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -987,10 +987,9 @@ static MACHINE_CONFIG_START( zwackery, mcr68_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
- MCFG_SCREEN_UPDATE(zwackery)
+ MCFG_SCREEN_UPDATE_STATIC(zwackery)
MCFG_GFXDECODE(zwackery)
MCFG_PALETTE_LENGTH(4096)
@@ -1017,10 +1016,9 @@ static MACHINE_CONFIG_START( mcr68, mcr68_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 30*16)
MCFG_SCREEN_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
- MCFG_SCREEN_UPDATE(mcr68)
+ MCFG_SCREEN_UPDATE_STATIC(mcr68)
MCFG_GFXDECODE(mcr68)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/meadows.c b/src/mame/drivers/meadows.c
index 52b49a315ac..fed9c7fc011 100644
--- a/src/mame/drivers/meadows.c
+++ b/src/mame/drivers/meadows.c
@@ -659,10 +659,9 @@ static MACHINE_CONFIG_START( meadows, meadows_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(meadows)
+ MCFG_SCREEN_UPDATE_STATIC(meadows)
MCFG_GFXDECODE(meadows)
MCFG_PALETTE_LENGTH(2)
@@ -693,10 +692,9 @@ static MACHINE_CONFIG_START( minferno, meadows_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 24*8-1)
- MCFG_SCREEN_UPDATE(meadows)
+ MCFG_SCREEN_UPDATE_STATIC(meadows)
MCFG_GFXDECODE(minferno)
MCFG_PALETTE_LENGTH(2)
@@ -723,10 +721,9 @@ static MACHINE_CONFIG_START( bowl3d, meadows_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(meadows)
+ MCFG_SCREEN_UPDATE_STATIC(meadows)
MCFG_GFXDECODE(meadows)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index 639c5033fa2..6e103633998 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -201,7 +201,7 @@ static VIDEO_START(mediagx)
}
}
-static void draw_char(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx, int ch, int att, int x, int y)
+static void draw_char(bitmap_rgb32 &bitmap, const rectangle &cliprect, const gfx_element *gfx, int ch, int att, int x, int y)
{
int i,j;
const UINT8 *dp;
@@ -227,7 +227,7 @@ static void draw_char(bitmap_t &bitmap, const rectangle &cliprect, const gfx_ele
}
}
-static void draw_framebuffer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_framebuffer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
mediagx_state *state = machine.driver_data<mediagx_state>();
int i, j;
@@ -320,7 +320,7 @@ static void draw_framebuffer(running_machine &machine, bitmap_t &bitmap, const r
}
}
-static void draw_cga(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_cga(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
mediagx_state *state = machine.driver_data<mediagx_state>();
int i, j;
@@ -344,7 +344,7 @@ static void draw_cga(running_machine &machine, bitmap_t &bitmap, const rectangle
}
}
-static SCREEN_UPDATE(mediagx)
+static SCREEN_UPDATE_RGB32(mediagx)
{
mediagx_state *state = screen.machine().driver_data<mediagx_state>();
bitmap.fill(0, cliprect);
@@ -1160,10 +1160,9 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_SCREEN_UPDATE(mediagx)
+ MCFG_SCREEN_UPDATE_STATIC(mediagx)
MCFG_GFXDECODE(CGA)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/megaplay.c b/src/mame/drivers/megaplay.c
index cc85248810c..4ee90dc0a71 100644
--- a/src/mame/drivers/megaplay.c
+++ b/src/mame/drivers/megaplay.c
@@ -617,12 +617,12 @@ static VIDEO_START(megplay)
// VIDEO_START_CALL(megaplay_normal);
}
-static SCREEN_UPDATE(megplay)
+static SCREEN_UPDATE_RGB32(megplay)
{
//printf("megplay vu\n");
- SCREEN_UPDATE_CALL(megadriv);
-// SCREEN_UPDATE_CALL(megaplay_normal);
- SCREEN_UPDATE_CALL(megaplay_bios);
+ SCREEN_UPDATE32_CALL(megadriv);
+// SCREEN_UPDATE32_CALL(megaplay_normal);
+ SCREEN_UPDATE32_CALL(megaplay_bios);
return 0;
}
@@ -665,7 +665,7 @@ static MACHINE_CONFIG_START( megaplay, mplay_state )
/* New update functions to handle the extra layer */
MCFG_VIDEO_START(megplay)
MCFG_SCREEN_MODIFY("megadriv")
- MCFG_SCREEN_UPDATE(megplay)
+ MCFG_SCREEN_UPDATE_STATIC(megplay)
MCFG_SCREEN_EOF( megaplay )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megasys1.c b/src/mame/drivers/megasys1.c
index 1e4109f3ff4..812508c912a 100644
--- a/src/mame/drivers/megasys1.c
+++ b/src/mame/drivers/megasys1.c
@@ -1477,10 +1477,9 @@ static MACHINE_CONFIG_START( system_A, megasys1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(megasys1)
+ MCFG_SCREEN_UPDATE_STATIC(megasys1)
MCFG_SCREEN_EOF(megasys1)
MCFG_GFXDECODE(ABC)
@@ -1538,10 +1537,9 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(megasys1)
+ MCFG_SCREEN_UPDATE_STATIC(megasys1)
MCFG_SCREEN_EOF(megasys1)
MCFG_GFXDECODE(ABC)
@@ -1611,10 +1609,9 @@ static MACHINE_CONFIG_START( system_D, megasys1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(megasys1)
+ MCFG_SCREEN_UPDATE_STATIC(megasys1)
MCFG_SCREEN_EOF(megasys1)
MCFG_GFXDECODE(ABC)
@@ -1675,10 +1672,9 @@ static MACHINE_CONFIG_START( system_Z, megasys1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(megasys1)
+ MCFG_SCREEN_UPDATE_STATIC(megasys1)
MCFG_GFXDECODE(Z)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index d7c4368c4d5..0f376a45f72 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -442,15 +442,15 @@ static VIDEO_START(mtnew)
}
//attotime::never
-static SCREEN_UPDATE(mtnew)
+static SCREEN_UPDATE_RGB32(mtnew)
{
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)
- SCREEN_UPDATE_CALL(megadriv);
+ SCREEN_UPDATE32_CALL(megadriv);
else
- SCREEN_UPDATE_CALL(megatech_md_sms);
+ SCREEN_UPDATE32_CALL(megatech_md_sms);
return 0;
}
@@ -490,15 +490,14 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
MCFG_DEFAULT_LAYOUT(layout_dualhovu)
MCFG_SCREEN_ADD("menu", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(342,262)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(megatech_bios)
+ MCFG_SCREEN_UPDATE_STATIC(megatech_bios)
MCFG_SCREEN_EOF(megatech_bios)
MCFG_SCREEN_MODIFY("megadriv")
- MCFG_SCREEN_UPDATE(mtnew)
+ MCFG_SCREEN_UPDATE_STATIC(mtnew)
MCFG_SCREEN_EOF(mtnew)
/* sound hardware */
diff --git a/src/mame/drivers/megazone.c b/src/mame/drivers/megazone.c
index 6c2161d3549..75b604ebd8d 100644
--- a/src/mame/drivers/megazone.c
+++ b/src/mame/drivers/megazone.c
@@ -283,10 +283,9 @@ static MACHINE_CONFIG_START( megazone, megazone_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(megazone)
+ MCFG_SCREEN_UPDATE_STATIC(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 5b7b4b3fd22..e37829a24b4 100644
--- a/src/mame/drivers/meijinsn.c
+++ b/src/mame/drivers/meijinsn.c
@@ -283,7 +283,7 @@ static PALETTE_INIT( meijinsn )
}
-static SCREEN_UPDATE(meijinsn)
+static SCREEN_UPDATE_IND16(meijinsn)
{
meijinsn_state *state = screen.machine().driver_data<meijinsn_state>();
int offs;
@@ -366,10 +366,9 @@ static MACHINE_CONFIG_START( meijinsn, meijinsn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12, 243, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(meijinsn)
+ MCFG_SCREEN_UPDATE_STATIC(meijinsn)
MCFG_PALETTE_LENGTH(32)
MCFG_PALETTE_INIT(meijinsn)
diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c
index 4132428807c..d8d29a2d110 100644
--- a/src/mame/drivers/merit.c
+++ b/src/mame/drivers/merit.c
@@ -1153,14 +1153,6 @@ static INPUT_PORTS_START( couplep )
INPUT_PORTS_END
-static SCREEN_UPDATE( merit )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
static const ppi8255_interface ppi8255_intf[2] =
{
{
@@ -1236,9 +1228,8 @@ static MACHINE_CONFIG_START( pitboss, merit_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(merit)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/meritm.c b/src/mame/drivers/meritm.c
index 367fec46741..e0ce835aef0 100644
--- a/src/mame/drivers/meritm.c
+++ b/src/mame/drivers/meritm.c
@@ -127,21 +127,23 @@ class meritm_state : public driver_device
{
public:
meritm_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_v9938_0(*this, "v9938_0"),
+ m_v9938_1(*this, "v9938_1") { }
UINT8* m_ram;
device_t *m_z80pio[2];
int m_vint;
int m_interrupt_vdp0_state;
int m_interrupt_vdp1_state;
- bitmap_t *m_vdp0_bitmap;
- bitmap_t *m_vdp1_bitmap;
int m_layer0_enabled;
int m_layer1_enabled;
int m_bank;
int m_psd_a15;
UINT16 m_questions_loword_address;
ds1204_t m_ds1204;
+ required_device<v9938_device> m_v9938_0;
+ required_device<v9938_device> m_v9938_1;
};
@@ -318,28 +320,28 @@ static int meritm_touch_coord_transform(running_machine &machine, int *touch_x,
static TIMER_DEVICE_CALLBACK( meritm_interrupt )
{
- //meritm_state *state = timer.machine().driver_data<meritm_state>();
+ meritm_state *state = timer.machine().driver_data<meritm_state>();
int scanline = param;
if((scanline % 2) == 0)
{
- v9938_set_sprite_limit(0, 0);
- v9938_set_resolution(0, RENDER_HIGH);
- v9938_interrupt(timer.machine(), 0);
+ state->m_v9938_0->set_sprite_limit(0);
+ state->m_v9938_0->set_resolution(RENDER_HIGH);
+ state->m_v9938_0->interrupt();
- v9938_set_sprite_limit(1, 0);
- v9938_set_resolution(1, RENDER_HIGH);
- v9938_interrupt(timer.machine(), 1);
+ state->m_v9938_1->set_sprite_limit(0);
+ state->m_v9938_1->set_resolution(RENDER_HIGH);
+ state->m_v9938_1->interrupt();
}
}
-static void meritm_vdp0_interrupt(running_machine &machine, int i)
+static void meritm_vdp0_interrupt(device_t *, v99x8_device &device, int i)
{
/* this is not used as the v9938 interrupt callbacks are broken
interrupts seem to be fired quite randomly */
}
-static void meritm_vdp1_interrupt(running_machine &machine, int i)
+static void meritm_vdp1_interrupt(device_t *, v99x8_device &device, int i)
{
/* this is not used as the v9938 interrupt callbacks are broken
interrupts seem to be fired quite randomly */
@@ -351,24 +353,13 @@ static VIDEO_START( meritm )
meritm_state *state = machine.driver_data<meritm_state>();
state->m_layer0_enabled = state->m_layer1_enabled = 1;
- state->m_vdp0_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- v9938_init (machine, 0, *machine.primary_screen, *state->m_vdp0_bitmap, MODEL_V9938, 0x20000, meritm_vdp0_interrupt);
- v9938_reset(0);
-
- state->m_vdp1_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- v9938_init (machine, 1, *machine.primary_screen, *state->m_vdp1_bitmap, MODEL_V9938, 0x20000, meritm_vdp1_interrupt);
- v9938_reset(1);
-
state->m_vint = 0x18;
state_save_register_global(machine, state->m_vint);
state_save_register_global(machine, state->m_interrupt_vdp0_state);
state_save_register_global(machine, state->m_interrupt_vdp1_state);
- state_save_register_global_bitmap(machine, state->m_vdp0_bitmap);
- state_save_register_global_bitmap(machine, state->m_vdp1_bitmap);
-
}
-static SCREEN_UPDATE( meritm )
+static SCREEN_UPDATE_IND16( meritm )
{
meritm_state *state = screen.machine().driver_data<meritm_state>();
if(screen.machine().input().code_pressed_once(KEYCODE_Q))
@@ -386,12 +377,12 @@ static SCREEN_UPDATE( meritm )
if ( state->m_layer0_enabled )
{
- copybitmap(bitmap, *state->m_vdp0_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_v9938_0->get_bitmap(), 0, 0, 0, 0, cliprect);
}
if ( state->m_layer1_enabled )
{
- copybitmap_trans(bitmap, *state->m_vdp1_bitmap, 0, 0, -6, -12, cliprect, v9938_get_transpen(1));
+ copybitmap_trans(bitmap, state->m_v9938_1->get_bitmap(), 0, 0, -6, -12, cliprect, state->m_v9938_1->get_transpen());
}
return 0;
}
@@ -585,14 +576,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( meritm_crt250_io_map, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READWRITE(v9938_0_vram_r, v9938_0_vram_w)
- AM_RANGE(0x11, 0x11) AM_READWRITE(v9938_0_status_r, v9938_0_command_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(v9938_0_palette_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(v9938_0_register_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(v9938_1_vram_r, v9938_1_vram_w)
- AM_RANGE(0x21, 0x21) AM_READWRITE(v9938_1_status_r, v9938_1_command_w)
- AM_RANGE(0x22, 0x22) AM_WRITE(v9938_1_palette_w)
- AM_RANGE(0x23, 0x23) AM_WRITE(v9938_1_register_w)
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_MODERN("v9938_0", v9938_device, read, write)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE_MODERN("v9938_1", v9938_device, read, write)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
@@ -603,14 +588,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( meritm_crt250_crt258_io_map, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READWRITE(v9938_0_vram_r, v9938_0_vram_w)
- AM_RANGE(0x11, 0x11) AM_READWRITE(v9938_0_status_r, v9938_0_command_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(v9938_0_palette_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(v9938_0_register_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(v9938_1_vram_r, v9938_1_vram_w)
- AM_RANGE(0x21, 0x21) AM_READWRITE(v9938_1_status_r, v9938_1_command_w)
- AM_RANGE(0x22, 0x22) AM_WRITE(v9938_1_palette_w)
- AM_RANGE(0x23, 0x23) AM_WRITE(v9938_1_register_w)
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_MODERN("v9938_0", v9938_device, read, write)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE_MODERN("v9938_1", v9938_device, read, write)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
@@ -630,14 +609,8 @@ static ADDRESS_MAP_START( meritm_io_map, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(meritm_psd_a15_w)
AM_RANGE(0x01, 0x01) AM_WRITE(watchdog_reset_w)
- AM_RANGE(0x10, 0x10) AM_READWRITE(v9938_0_vram_r, v9938_0_vram_w)
- AM_RANGE(0x11, 0x11) AM_READWRITE(v9938_0_status_r, v9938_0_command_w)
- AM_RANGE(0x12, 0x12) AM_WRITE(v9938_0_palette_w)
- AM_RANGE(0x13, 0x13) AM_WRITE(v9938_0_register_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(v9938_1_vram_r, v9938_1_vram_w)
- AM_RANGE(0x21, 0x21) AM_READWRITE(v9938_1_status_r, v9938_1_command_w)
- AM_RANGE(0x22, 0x22) AM_WRITE(v9938_1_palette_w)
- AM_RANGE(0x23, 0x23) AM_WRITE(v9938_1_register_w)
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_MODERN("v9938_0", v9938_device, read, write)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE_MODERN("v9938_1", v9938_device, read, write)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
@@ -1092,14 +1065,19 @@ static MACHINE_CONFIG_START( meritm_crt250, meritm_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_V9938_ADD("v9938_0", "screen", 0x20000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(meritm_vdp0_interrupt)
+
+ MCFG_V9938_ADD("v9938_1", "screen", 0x20000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(meritm_vdp1_interrupt)
+
MCFG_SCREEN_ADD("screen",RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(meritm)
+ MCFG_SCREEN_UPDATE_STATIC(meritm)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT( v9938 )
diff --git a/src/mame/drivers/mermaid.c b/src/mame/drivers/mermaid.c
index 92219f2b109..e709a52a24e 100644
--- a/src/mame/drivers/mermaid.c
+++ b/src/mame/drivers/mermaid.c
@@ -469,10 +469,9 @@ static MACHINE_CONFIG_START( mermaid, mermaid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mermaid)
+ MCFG_SCREEN_UPDATE_STATIC(mermaid)
MCFG_SCREEN_EOF(mermaid)
MCFG_GFXDECODE(mermaid)
diff --git a/src/mame/drivers/metalmx.c b/src/mame/drivers/metalmx.c
index c6027409317..2f1a50c1455 100644
--- a/src/mame/drivers/metalmx.c
+++ b/src/mame/drivers/metalmx.c
@@ -278,7 +278,7 @@ static VIDEO_START( metalmx )
}
-static SCREEN_UPDATE( metalmx )
+static SCREEN_UPDATE_IND16( metalmx )
{
/* TODO: TMS34020 should take care of this */
metalmx_state *state = screen.machine().driver_data<metalmx_state>();
@@ -720,7 +720,8 @@ static const tms34010_config gsp_config =
"screen", /* the screen operated on */
4000000, /* pixel clock */
2, /* pixels per clock */
- NULL, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ NULL, /* scanline callback (rgb32) */
tms_interrupt, /* generate interrupt */
};
@@ -763,10 +764,9 @@ static MACHINE_CONFIG_START( metalmx, metalmx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(metalmx)
+ MCFG_SCREEN_UPDATE_STATIC(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 ca072e6c438..9f1871a2a02 100644
--- a/src/mame/drivers/metlclsh.c
+++ b/src/mame/drivers/metlclsh.c
@@ -310,10 +310,9 @@ static MACHINE_CONFIG_START( metlclsh, metlclsh_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
- MCFG_SCREEN_UPDATE(metlclsh)
+ MCFG_SCREEN_UPDATE_STATIC(metlclsh)
MCFG_GFXDECODE(metlclsh)
MCFG_PALETTE_LENGTH(3 * 16)
diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c
index 272584c2111..9027aa8116a 100644
--- a/src/mame/drivers/metro.c
+++ b/src/mame/drivers/metro.c
@@ -3514,9 +3514,8 @@ static MACHINE_CONFIG_START( balcube, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3546,8 +3545,7 @@ static MACHINE_CONFIG_START( daitoa, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3577,8 +3575,7 @@ static MACHINE_CONFIG_START( msgogo, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3608,8 +3605,7 @@ static MACHINE_CONFIG_START( bangball, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3638,9 +3634,8 @@ static MACHINE_CONFIG_START( batlbubl, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3674,8 +3669,7 @@ static MACHINE_CONFIG_START( daitorid, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3714,8 +3708,7 @@ static MACHINE_CONFIG_START( dharma, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -3753,8 +3746,7 @@ static MACHINE_CONFIG_START( karatour, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -3792,8 +3784,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14220)
MCFG_PALETTE_LENGTH(8192)
@@ -3831,8 +3822,7 @@ static MACHINE_CONFIG_START( lastfort, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART + 40, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -3869,8 +3859,7 @@ static MACHINE_CONFIG_START( lastforg, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART + 40, VTOTAL, VBEND, 224) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -3902,8 +3891,7 @@ static MACHINE_CONFIG_START( dokyusei, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
@@ -3936,8 +3924,7 @@ static MACHINE_CONFIG_START( dokyusp, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, 384, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
@@ -3971,8 +3958,7 @@ static MACHINE_CONFIG_START( gakusai, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
@@ -4006,8 +3992,7 @@ static MACHINE_CONFIG_START( gakusai2, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
@@ -4045,8 +4030,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART + 40, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -4084,8 +4068,7 @@ static MACHINE_CONFIG_START( poitto, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART + 40, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -4124,8 +4107,7 @@ static MACHINE_CONFIG_START( pururun, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -4164,8 +4146,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART + 40, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -4203,8 +4184,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14100)
MCFG_PALETTE_LENGTH(8192)
@@ -4237,8 +4217,7 @@ static MACHINE_CONFIG_START( mouja, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
@@ -4279,8 +4258,7 @@ static MACHINE_CONFIG_START( blzntrnd, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(blzntrnd)
MCFG_PALETTE_LENGTH(8192)
@@ -4324,8 +4302,7 @@ static MACHINE_CONFIG_START( gstrik2, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(gstrik2)
MCFG_PALETTE_LENGTH(8192)
@@ -4394,8 +4371,7 @@ static MACHINE_CONFIG_START( puzzlet, metro_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, 224) // was 58fps?
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(metro)
+ MCFG_SCREEN_UPDATE_STATIC(metro)
MCFG_GFXDECODE(14300)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/mexico86.c b/src/mame/drivers/mexico86.c
index a3c3f7a6dc6..f195a6c92b3 100644
--- a/src/mame/drivers/mexico86.c
+++ b/src/mame/drivers/mexico86.c
@@ -497,10 +497,9 @@ static MACHINE_CONFIG_START( mexico86, mexico86_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mexico86)
+ MCFG_SCREEN_UPDATE_STATIC(mexico86)
MCFG_GFXDECODE(mexico86)
MCFG_PALETTE_LENGTH(256)
@@ -527,7 +526,7 @@ static MACHINE_CONFIG_DERIVED( knightb, mexico86 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(kikikai)
+ MCFG_SCREEN_UPDATE_STATIC(kikikai)
MACHINE_CONFIG_END
@@ -542,7 +541,7 @@ static MACHINE_CONFIG_DERIVED( kikikai, knightb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(kikikai)
+ MCFG_SCREEN_UPDATE_STATIC(kikikai)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mgolf.c b/src/mame/drivers/mgolf.c
index 98904a8814c..58ac2825c6a 100644
--- a/src/mame/drivers/mgolf.c
+++ b/src/mame/drivers/mgolf.c
@@ -54,7 +54,7 @@ static VIDEO_START( mgolf )
}
-static SCREEN_UPDATE( mgolf )
+static SCREEN_UPDATE_IND16( mgolf )
{
mgolf_state *state = screen.machine().driver_data<mgolf_state>();
int i;
@@ -331,10 +331,9 @@ static MACHINE_CONFIG_START( mgolf, mgolf_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
- MCFG_SCREEN_UPDATE(mgolf)
+ MCFG_SCREEN_UPDATE_STATIC(mgolf)
MCFG_GFXDECODE(mgolf)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/mhavoc.c b/src/mame/drivers/mhavoc.c
index 7b259fdee7f..7fee9f38efc 100644
--- a/src/mame/drivers/mhavoc.c
+++ b/src/mame/drivers/mhavoc.c
@@ -492,7 +492,7 @@ static MACHINE_CONFIG_START( mhavoc, mhavoc_state )
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 300, 0, 260)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_mhavoc)
diff --git a/src/mame/drivers/micro3d.c b/src/mame/drivers/micro3d.c
index 665f45482ed..0ff82c6afe0 100644
--- a/src/mame/drivers/micro3d.c
+++ b/src/mame/drivers/micro3d.c
@@ -293,7 +293,8 @@ static const tms34010_config vgb_config =
"screen", /* the screen operated on */
XTAL_40MHz / 8, /* pixel clock */
4, /* pixels per clock */
- micro3d_scanline_update, /* scanline updater */
+ micro3d_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
micro3d_tms_interrupt, /* Generate interrupt */
NULL,
NULL
@@ -358,9 +359,8 @@ static MACHINE_CONFIG_START( micro3d, micro3d_state )
MCFG_PALETTE_LENGTH(4096)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/8*4, 192*4, 0, 144*4, 434, 0, 400)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(micro3d)
MCFG_VIDEO_RESET(micro3d)
diff --git a/src/mame/drivers/midas.c b/src/mame/drivers/midas.c
index 96dda7384ff..32f27ac2aba 100644
--- a/src/mame/drivers/midas.c
+++ b/src/mame/drivers/midas.c
@@ -70,7 +70,7 @@ public:
static VIDEO_START( midas );
-static SCREEN_UPDATE( midas );
+static SCREEN_UPDATE_IND16( midas );
static TILE_GET_INFO( get_tile_info )
@@ -91,7 +91,7 @@ static VIDEO_START( midas )
tilemap_set_transparent_pen(state->m_tmap, 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
midas_state *state = machine.driver_data<midas_state>();
UINT16 *s = state->m_gfxram + 0x8000;
@@ -175,7 +175,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static SCREEN_UPDATE( midas )
+static SCREEN_UPDATE_IND16( midas )
{
midas_state *state = screen.machine().driver_data<midas_state>();
int layers_ctrl = -1;
@@ -700,10 +700,9 @@ static MACHINE_CONFIG_START( livequiz, midas_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(midas)
+ MCFG_SCREEN_UPDATE_STATIC(midas)
MCFG_GFXDECODE(midas)
MCFG_PALETTE_LENGTH(0x10000)
@@ -735,10 +734,9 @@ static MACHINE_CONFIG_START( hammer, midas_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(midas)
+ MCFG_SCREEN_UPDATE_STATIC(midas)
MCFG_GFXDECODE(midas)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/midtunit.c b/src/mame/drivers/midtunit.c
index cd8bcf5690b..d699f099b13 100644
--- a/src/mame/drivers/midtunit.c
+++ b/src/mame/drivers/midtunit.c
@@ -587,7 +587,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
PIXEL_CLOCK, /* pixel clock */
2, /* pixels per clock */
- midtunit_scanline_update, /* scanline updater */
+ midtunit_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
midtunit_to_shiftreg, /* write to shiftreg function */
midtunit_from_shiftreg /* read from shiftreg function */
@@ -615,9 +616,8 @@ static MACHINE_CONFIG_START( tunit_core, midtunit_state )
MCFG_PALETTE_LENGTH(32768)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK * 2, 505, 0, 399, 289, 0, 253)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(midtunit)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midvunit.c b/src/mame/drivers/midvunit.c
index 7135f2a25da..83b691fb11f 100644
--- a/src/mame/drivers/midvunit.c
+++ b/src/mame/drivers/midvunit.c
@@ -1033,8 +1033,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(midvunit)
+ MCFG_SCREEN_UPDATE_STATIC(midvunit)
MCFG_VIDEO_START(midvunit)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midwunit.c b/src/mame/drivers/midwunit.c
index 0a3403cc776..d0edeea3f99 100644
--- a/src/mame/drivers/midwunit.c
+++ b/src/mame/drivers/midwunit.c
@@ -619,7 +619,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
PIXEL_CLOCK, /* pixel clock */
1, /* pixels per clock */
- midtunit_scanline_update, /* scanline updater */
+ midtunit_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
midtunit_to_shiftreg, /* write to shiftreg function */
midtunit_from_shiftreg /* read from shiftreg function */
@@ -646,9 +647,8 @@ static MACHINE_CONFIG_START( wunit, midwunit_state )
MCFG_PALETTE_LENGTH(32768)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 505, 0, 399, 289, 0, 253)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(midwunit)
diff --git a/src/mame/drivers/midxunit.c b/src/mame/drivers/midxunit.c
index 8666be53391..3bc8b968ac3 100644
--- a/src/mame/drivers/midxunit.c
+++ b/src/mame/drivers/midxunit.c
@@ -243,7 +243,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
PIXEL_CLOCK, /* pixel clock */
1, /* pixels per clock */
- midxunit_scanline_update, /* scanline updater */
+ midxunit_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
midtunit_to_shiftreg, /* write to shiftreg function */
midtunit_from_shiftreg /* read from shiftreg function */
@@ -271,9 +272,8 @@ static MACHINE_CONFIG_START( midxunit, midxunit_state )
MCFG_PALETTE_LENGTH(32768)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 505, 0, 399, 289, 0, 253)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(midxunit)
/* sound hardware */
diff --git a/src/mame/drivers/midyunit.c b/src/mame/drivers/midyunit.c
index c5657d65bac..def36562689 100644
--- a/src/mame/drivers/midyunit.c
+++ b/src/mame/drivers/midyunit.c
@@ -969,7 +969,8 @@ static const tms34010_config zunit_tms_config =
"screen", /* the screen operated on */
MEDRES_PIXEL_CLOCK, /* pixel clock */
2, /* pixels per clock */
- midyunit_scanline_update, /* scanline updater */
+ midyunit_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
midyunit_to_shiftreg, /* write to shiftreg function */
midyunit_from_shiftreg /* read from shiftreg function */
@@ -981,7 +982,8 @@ static const tms34010_config yunit_tms_config =
"screen", /* the screen operated on */
STDRES_PIXEL_CLOCK, /* pixel clock */
2, /* pixels per clock */
- midyunit_scanline_update, /* scanline updater */
+ midyunit_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
NULL, /* generate interrupt */
midyunit_to_shiftreg, /* write to shiftreg function */
midyunit_from_shiftreg /* read from shiftreg function */
@@ -1010,9 +1012,8 @@ static MACHINE_CONFIG_START( zunit, midyunit_state )
MCFG_PALETTE_LENGTH(8192)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MEDRES_PIXEL_CLOCK*2, 673, 0, 511, 433, 0, 399)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MCFG_VIDEO_START(midzunit)
@@ -1043,9 +1044,8 @@ static MACHINE_CONFIG_START( yunit_core, midyunit_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(STDRES_PIXEL_CLOCK*2, 505, 0, 399, 289, 0, 253)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index d6d6225773f..a26142af808 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -1105,8 +1105,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(midzeus)
+ MCFG_SCREEN_UPDATE_STATIC(midzeus)
MCFG_VIDEO_START(midzeus)
@@ -1144,8 +1143,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(midzeus2)
+ MCFG_SCREEN_UPDATE_STATIC(midzeus2)
MCFG_VIDEO_START(midzeus2)
diff --git a/src/mame/drivers/mikie.c b/src/mame/drivers/mikie.c
index 51a1dfca825..f7c17d68092 100644
--- a/src/mame/drivers/mikie.c
+++ b/src/mame/drivers/mikie.c
@@ -276,10 +276,9 @@ static MACHINE_CONFIG_START( mikie, mikie_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mikie)
+ MCFG_SCREEN_UPDATE_STATIC(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 b4e43376605..52b1d05c366 100644
--- a/src/mame/drivers/mil4000.c
+++ b/src/mame/drivers/mil4000.c
@@ -179,7 +179,7 @@ static VIDEO_START(mil4000)
tilemap_set_transparent_pen(state->m_sc3_tilemap,0);
}
-static SCREEN_UPDATE(mil4000)
+static SCREEN_UPDATE_IND16(mil4000)
{
mil4000_state *state = screen.machine().driver_data<mil4000_state>();
tilemap_draw(bitmap,cliprect,state->m_sc0_tilemap,0,0);
@@ -374,10 +374,9 @@ static MACHINE_CONFIG_START( mil4000, mil4000_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(mil4000)
+ MCFG_SCREEN_UPDATE_STATIC(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 3786369419b..942e4bcba6f 100644
--- a/src/mame/drivers/miniboy7.c
+++ b/src/mame/drivers/miniboy7.c
@@ -208,7 +208,7 @@ static VIDEO_START( miniboy7 )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 37, 37);
}
-static SCREEN_UPDATE( miniboy7 )
+static SCREEN_UPDATE_IND16( miniboy7 )
{
miniboy7_state *state = screen.machine().driver_data<miniboy7_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -456,10 +456,9 @@ static MACHINE_CONFIG_START( miniboy7, miniboy7_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(miniboy7)
+ MCFG_SCREEN_UPDATE_STATIC(miniboy7)
MCFG_GFXDECODE(miniboy7)
diff --git a/src/mame/drivers/minivadr.c b/src/mame/drivers/minivadr.c
index caebb839a88..96aa47db0d0 100644
--- a/src/mame/drivers/minivadr.c
+++ b/src/mame/drivers/minivadr.c
@@ -31,7 +31,7 @@ public:
*
*************************************/
-static SCREEN_UPDATE( minivadr )
+static SCREEN_UPDATE_RGB32( minivadr )
{
minivadr_state *state = screen.machine().driver_data<minivadr_state>();
offs_t offs;
@@ -89,10 +89,9 @@ static MACHINE_CONFIG_START( minivadr, minivadr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(minivadr)
+ MCFG_SCREEN_UPDATE_STATIC(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 f4a1314271b..14ce253facd 100644
--- a/src/mame/drivers/mirage.c
+++ b/src/mame/drivers/mirage.c
@@ -69,26 +69,26 @@ public:
static VIDEO_START( mirage )
{
- machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap(machine);
+ machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap();
}
-static SCREEN_UPDATE( mirage )
+static SCREEN_UPDATE_RGB32( mirage )
{
mirage_state *state = screen.machine().driver_data<mirage_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
flip_screen_set(screen.machine(), BIT(flip, 7));
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
bitmap.fill(256, cliprect); /* not verified */
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0800, 0x0800, 0x200, 0x1ff);
+ 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);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0800, 0x200, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0800, 0x200, 0x1ff);
return 0;
}
@@ -330,10 +330,9 @@ static MACHINE_CONFIG_START( mirage, mirage_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mirage)
+ MCFG_SCREEN_UPDATE_STATIC(mirage)
MCFG_SCREEN_EOF(mirage)
MCFG_VIDEO_START(mirage)
diff --git a/src/mame/drivers/mirax.c b/src/mame/drivers/mirax.c
index 1e14b871009..abc273db2c1 100644
--- a/src/mame/drivers/mirax.c
+++ b/src/mame/drivers/mirax.c
@@ -90,7 +90,7 @@ static VIDEO_START(mirax)
{
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
mirax_state *state = machine.driver_data<mirax_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -118,7 +118,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static SCREEN_UPDATE(mirax)
+static SCREEN_UPDATE_IND16(mirax)
{
mirax_state *state = screen.machine().driver_data<mirax_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -406,10 +406,9 @@ static MACHINE_CONFIG_START( mirax, mirax_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mirax)
+ MCFG_SCREEN_UPDATE_STATIC(mirax)
MCFG_PALETTE_LENGTH(0x40)
MCFG_PALETTE_INIT(mirax)
diff --git a/src/mame/drivers/missb2.c b/src/mame/drivers/missb2.c
index e08a2a7b5d8..8a12edeae7c 100644
--- a/src/mame/drivers/missb2.c
+++ b/src/mame/drivers/missb2.c
@@ -35,7 +35,7 @@ public:
/* Video Hardware */
-static SCREEN_UPDATE( missb2 )
+static SCREEN_UPDATE_IND16( missb2 )
{
missb2_state *state = screen.machine().driver_data<missb2_state>();
int offs;
@@ -476,10 +476,9 @@ static MACHINE_CONFIG_START( missb2, missb2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(missb2)
+ MCFG_SCREEN_UPDATE_STATIC(missb2)
MCFG_GFXDECODE(missb2)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c
index 0c9964dce98..c4d7bf0ce51 100644
--- a/src/mame/drivers/missile.c
+++ b/src/mame/drivers/missile.c
@@ -664,7 +664,7 @@ static UINT8 read_vram(address_space *space, offs_t address)
*
*************************************/
-static SCREEN_UPDATE( missile )
+static SCREEN_UPDATE_IND16( missile )
{
missile_state *state = screen.machine().driver_data<missile_state>();
UINT8 *videoram = state->m_videoram;
@@ -1038,9 +1038,8 @@ static MACHINE_CONFIG_START( missile, missile_state )
MCFG_PALETTE_LENGTH(8)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(missile)
+ MCFG_SCREEN_UPDATE_STATIC(missile)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mitchell.c b/src/mame/drivers/mitchell.c
index f4024660253..49d73d6b481 100644
--- a/src/mame/drivers/mitchell.c
+++ b/src/mame/drivers/mitchell.c
@@ -1135,10 +1135,9 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(pang)
+ MCFG_SCREEN_UPDATE_STATIC(pang)
MCFG_GFXDECODE(mgakuen)
MCFG_PALETTE_LENGTH(1024) /* less colors than the others */
@@ -1174,7 +1173,6 @@ static MACHINE_CONFIG_START( pang, mitchell_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
@@ -1182,7 +1180,7 @@ static MACHINE_CONFIG_START( pang, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(pang)
- MCFG_SCREEN_UPDATE(pang)
+ MCFG_SCREEN_UPDATE_STATIC(pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1275,7 +1273,6 @@ static MACHINE_CONFIG_START( mstworld, mitchell_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
@@ -1283,7 +1280,7 @@ static MACHINE_CONFIG_START( mstworld, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(pang)
- MCFG_SCREEN_UPDATE(pang)
+ MCFG_SCREEN_UPDATE_STATIC(pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1308,7 +1305,6 @@ static MACHINE_CONFIG_START( marukin, mitchell_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
@@ -1316,7 +1312,7 @@ static MACHINE_CONFIG_START( marukin, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(pang)
- MCFG_SCREEN_UPDATE(pang)
+ MCFG_SCREEN_UPDATE_STATIC(pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1361,7 +1357,6 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.09) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
@@ -1369,7 +1364,7 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(pang)
- MCFG_SCREEN_UPDATE(pang)
+ MCFG_SCREEN_UPDATE_STATIC(pang)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mjkjidai.c b/src/mame/drivers/mjkjidai.c
index 9780bdcbda9..6c7484c3a04 100644
--- a/src/mame/drivers/mjkjidai.c
+++ b/src/mame/drivers/mjkjidai.c
@@ -393,10 +393,9 @@ static MACHINE_CONFIG_START( mjkjidai, mjkjidai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 61*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mjkjidai)
+ MCFG_SCREEN_UPDATE_STATIC(mjkjidai)
MCFG_GFXDECODE(mjkjidai)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/mjsister.c b/src/mame/drivers/mjsister.c
index 1a03b1dff9d..9760b7362f3 100644
--- a/src/mame/drivers/mjsister.c
+++ b/src/mame/drivers/mjsister.c
@@ -21,8 +21,8 @@ public:
: driver_device(mconfig, type, tag) { }
/* video-related */
- bitmap_t *m_tmpbitmap0;
- bitmap_t *m_tmpbitmap1;
+ bitmap_ind16 *m_tmpbitmap0;
+ bitmap_ind16 *m_tmpbitmap1;
int m_flip_screen;
int m_video_enable;
int m_screen_redraw;
@@ -61,8 +61,8 @@ public:
static VIDEO_START( mjsister )
{
mjsister_state *state = machine.driver_data<mjsister_state>();
- state->m_tmpbitmap0 = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
- state->m_tmpbitmap1 = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
+ state->m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine, 256, 256);
+ state->m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine, 256, 256);
state->save_item(NAME(state->m_videoram0));
state->save_item(NAME(state->m_videoram1));
@@ -118,7 +118,7 @@ static WRITE8_HANDLER( mjsister_videoram_w )
}
}
-static SCREEN_UPDATE( mjsister )
+static SCREEN_UPDATE_IND16( mjsister )
{
mjsister_state *state = screen.machine().driver_data<mjsister_state>();
int flip = state->m_flip_screen;
@@ -508,10 +508,9 @@ static MACHINE_CONFIG_START( mjsister, mjsister_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256+4, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+4, 8, 247)
- MCFG_SCREEN_UPDATE(mjsister)
+ MCFG_SCREEN_UPDATE_STATIC(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 aed12e3d30f..a139584be91 100644
--- a/src/mame/drivers/mlanding.c
+++ b/src/mame/drivers/mlanding.c
@@ -58,7 +58,7 @@ static VIDEO_START(mlanding)
// 256: Cockpit
// 512: control centre screen
// 768: plane landing sequence
-static SCREEN_UPDATE(mlanding)
+static SCREEN_UPDATE_IND16(mlanding)
{
mlanding_state *state = screen.machine().driver_data<mlanding_state>();
int x, y;
@@ -771,12 +771,11 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
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(mlanding)
+ MCFG_SCREEN_UPDATE_STATIC(mlanding)
MCFG_PALETTE_LENGTH(512*16)
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index 0ceb09d1ebf..1b5ab6381d6 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -1521,8 +1521,7 @@ 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_FORMAT(BITMAP_FORMAT_RGB15)
- MCFG_SCREEN_UPDATE(model1)
+ MCFG_SCREEN_UPDATE_STATIC(model1)
MCFG_SCREEN_EOF(model1)
MCFG_PALETTE_LENGTH(8192)
@@ -1567,8 +1566,7 @@ 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_FORMAT(BITMAP_FORMAT_RGB15)
- MCFG_SCREEN_UPDATE(model1)
+ MCFG_SCREEN_UPDATE_STATIC(model1)
MCFG_SCREEN_EOF(model1)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c
index 2ac4bc5a23e..3bd9bb48ae9 100644
--- a/src/mame/drivers/model2.c
+++ b/src/mame/drivers/model2.c
@@ -2035,10 +2035,9 @@ static MACHINE_CONFIG_START( model2o, model2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(model2)
+ MCFG_SCREEN_UPDATE_STATIC(model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2094,10 +2093,9 @@ static MACHINE_CONFIG_START( model2a, model2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(model2)
+ MCFG_SCREEN_UPDATE_STATIC(model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2199,10 +2197,9 @@ static MACHINE_CONFIG_START( model2b, model2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(model2)
+ MCFG_SCREEN_UPDATE_STATIC(model2)
MCFG_PALETTE_LENGTH(8192)
@@ -2247,10 +2244,9 @@ static MACHINE_CONFIG_START( model2c, model2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(62*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(model2)
+ MCFG_SCREEN_UPDATE_STATIC(model2)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index 7dd9767a06b..f756dbb4e10 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -5180,11 +5180,10 @@ static MACHINE_CONFIG_START( model3_10, model3_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(512, 400)
- MCFG_SCREEN_UPDATE(model3)
+ MCFG_SCREEN_UPDATE_STATIC(model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5220,11 +5219,10 @@ static MACHINE_CONFIG_START( model3_15, model3_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE(model3)
+ MCFG_SCREEN_UPDATE_STATIC(model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5260,11 +5258,10 @@ static MACHINE_CONFIG_START( model3_20, model3_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE(model3)
+ MCFG_SCREEN_UPDATE_STATIC(model3)
MCFG_PALETTE_LENGTH(32768)
MCFG_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
@@ -5300,12 +5297,11 @@ static MACHINE_CONFIG_START( model3_21, model3_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 383)
MCFG_SCREEN_SIZE(496, 400)
- MCFG_SCREEN_UPDATE(model3)
+ MCFG_SCREEN_UPDATE_STATIC(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 089ea08b0bb..0b70415a7d0 100644
--- a/src/mame/drivers/mogura.c
+++ b/src/mame/drivers/mogura.c
@@ -78,7 +78,7 @@ static VIDEO_START( mogura )
state->m_tilemap = tilemap_create(machine, get_mogura_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
}
-static SCREEN_UPDATE( mogura )
+static SCREEN_UPDATE_IND16( mogura )
{
mogura_state *state = screen.machine().driver_data<mogura_state>();
const rectangle &visarea = screen.visible_area();
@@ -215,10 +215,9 @@ static MACHINE_CONFIG_START( mogura, mogura_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // ?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(mogura)
+ MCFG_SCREEN_UPDATE_STATIC(mogura)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mole.c b/src/mame/drivers/mole.c
index 0fd8b9fe6d9..74710af6503 100644
--- a/src/mame/drivers/mole.c
+++ b/src/mame/drivers/mole.c
@@ -120,7 +120,7 @@ static WRITE8_HANDLER( mole_flipscreen_w )
flip_screen_set(space->machine(), data & 0x01);
}
-static SCREEN_UPDATE( mole )
+static SCREEN_UPDATE_IND16( mole )
{
mole_state *state = screen.machine().driver_data<mole_state>();
@@ -328,10 +328,9 @@ static MACHINE_CONFIG_START( mole, mole_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 25*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
- MCFG_SCREEN_UPDATE(mole)
+ MCFG_SCREEN_UPDATE_STATIC(mole)
MCFG_GFXDECODE(mole)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/momoko.c b/src/mame/drivers/momoko.c
index 204df2da24e..107536779ba 100644
--- a/src/mame/drivers/momoko.c
+++ b/src/mame/drivers/momoko.c
@@ -277,10 +277,9 @@ static MACHINE_CONFIG_START( momoko, momoko_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 29*8-1)
- MCFG_SCREEN_UPDATE(momoko)
+ MCFG_SCREEN_UPDATE_STATIC(momoko)
MCFG_GFXDECODE(momoko)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/monzagp.c b/src/mame/drivers/monzagp.c
index 8beeaa3bc94..dfc7f642e7a 100644
--- a/src/mame/drivers/monzagp.c
+++ b/src/mame/drivers/monzagp.c
@@ -62,7 +62,7 @@ static VIDEO_START(monzagp)
state->m_vram = auto_alloc_array(machine, UINT8, 0x10000);
}
-static SCREEN_UPDATE(monzagp)
+static SCREEN_UPDATE_IND16(monzagp)
{
monzagp_state *state = screen.machine().driver_data<monzagp_state>();
int x,y;
@@ -260,10 +260,9 @@ static MACHINE_CONFIG_START( monzagp, monzagp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(monzagp)
+ MCFG_SCREEN_UPDATE_STATIC(monzagp)
MCFG_PALETTE_LENGTH(0x200)
MCFG_PALETTE_INIT(monzagp)
diff --git a/src/mame/drivers/moo.c b/src/mame/drivers/moo.c
index 9dfe4e3e7f5..8a03a8e1fe6 100644
--- a/src/mame/drivers/moo.c
+++ b/src/mame/drivers/moo.c
@@ -538,10 +538,9 @@ static MACHINE_CONFIG_START( moo, moo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(moo)
+ MCFG_SCREEN_UPDATE_STATIC(moo)
MCFG_PALETTE_LENGTH(2048)
@@ -582,10 +581,9 @@ static MACHINE_CONFIG_START( moobl, moo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1200)) // should give IRQ4 sufficient time to update scroll registers
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(moo)
+ MCFG_SCREEN_UPDATE_STATIC(moo)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/mosaic.c b/src/mame/drivers/mosaic.c
index 728057fdccd..24fa554c2b0 100644
--- a/src/mame/drivers/mosaic.c
+++ b/src/mame/drivers/mosaic.c
@@ -282,10 +282,9 @@ static MACHINE_CONFIG_START( mosaic, mosaic_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mosaic)
+ MCFG_SCREEN_UPDATE_STATIC(mosaic)
MCFG_GFXDECODE(mosaic)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/mouser.c b/src/mame/drivers/mouser.c
index 9507cbe92c5..7877046898e 100644
--- a/src/mame/drivers/mouser.c
+++ b/src/mame/drivers/mouser.c
@@ -225,10 +225,9 @@ static MACHINE_CONFIG_START( mouser, mouser_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mouser)
+ MCFG_SCREEN_UPDATE_STATIC(mouser)
MCFG_GFXDECODE(mouser)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/mpoker.c b/src/mame/drivers/mpoker.c
index a8ce66228d5..5a02475f871 100644
--- a/src/mame/drivers/mpoker.c
+++ b/src/mame/drivers/mpoker.c
@@ -191,7 +191,7 @@ static VIDEO_START(mpoker)
}
-static SCREEN_UPDATE(mpoker)
+static SCREEN_UPDATE_IND16(mpoker)
{
mpoker_state *state = screen.machine().driver_data<mpoker_state>();
int y,x;
@@ -589,10 +589,9 @@ static MACHINE_CONFIG_START( mpoker, mpoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(mpoker)
+ MCFG_SCREEN_UPDATE_STATIC(mpoker)
MCFG_GFXDECODE(mpoker)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/mpu4.c b/src/mame/drivers/mpu4.c
index eb621fe3b10..e5e0bef79fa 100644
--- a/src/mame/drivers/mpu4.c
+++ b/src/mame/drivers/mpu4.c
@@ -2971,7 +2971,7 @@ MACHINE_CONFIG_START( mpu4base, mpu4_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(mpu4_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c
index 08d570204fa..8e334379b42 100644
--- a/src/mame/drivers/mpu4vid.c
+++ b/src/mame/drivers/mpu4vid.c
@@ -447,7 +447,7 @@ static const gfx_layout mpu4_vid_char_16x16_layout =
-static SCREEN_UPDATE(mpu4_vid)
+static SCREEN_UPDATE_RGB32(mpu4_vid)
{
mpu4_state *state = screen.machine().driver_data<mpu4_state>();
int x, y/*, count = 0*/;
@@ -2148,7 +2148,7 @@ static PALETTE_INIT( dealem )
}
-static SCREEN_UPDATE(dealem)
+static SCREEN_UPDATE_IND16(dealem)
{
mpu4_state *state = screen.machine().driver_data<mpu4_state>();
int x,y;
@@ -2340,12 +2340,11 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE((63*8)+(17*8), (37*8)+17) // note this directly affects the scanline counters used below, and thus the timing of everything
MCFG_SCREEN_VISIBLE_AREA(0, (63*8)+(0)-1, 0, (37*8)+0-1)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_UPDATE(mpu4_vid)
+ MCFG_SCREEN_UPDATE_STATIC(mpu4_vid)
MCFG_CPU_ADD("video", M68000, VIDEO_MASTER_CLOCK )
MCFG_CPU_PROGRAM_MAP(mpu4_68k_map)
@@ -2421,11 +2420,10 @@ static MACHINE_CONFIG_START( dealem, mpu4_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(dealem)
+ MCFG_SCREEN_UPDATE_STATIC(dealem)
MCFG_GFXDECODE(dealem)
diff --git a/src/mame/drivers/mquake.c b/src/mame/drivers/mquake.c
index 6d319947c20..fa228156e8e 100644
--- a/src/mame/drivers/mquake.c
+++ b/src/mame/drivers/mquake.c
@@ -354,10 +354,9 @@ static MACHINE_CONFIG_START( mquake, amiga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(amiga)
+ MCFG_SCREEN_UPDATE_STATIC(amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT(amiga)
diff --git a/src/mame/drivers/mrdo.c b/src/mame/drivers/mrdo.c
index 5b77d06d753..5e52807dbab 100644
--- a/src/mame/drivers/mrdo.c
+++ b/src/mame/drivers/mrdo.c
@@ -174,9 +174,8 @@ static MACHINE_CONFIG_START( mrdo, mrdo_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/4, 312, 8, 248, 262, 32, 224)
- MCFG_SCREEN_UPDATE(mrdo)
+ MCFG_SCREEN_UPDATE_STATIC(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 456a00f1ebe..edee318eb00 100644
--- a/src/mame/drivers/mrflea.c
+++ b/src/mame/drivers/mrflea.c
@@ -383,10 +383,9 @@ static MACHINE_CONFIG_START( mrflea, mrflea_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mrflea)
+ MCFG_SCREEN_UPDATE_STATIC(mrflea)
MCFG_GFXDECODE(mrflea)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/mrjong.c b/src/mame/drivers/mrjong.c
index aac08d3ef26..65a489c3751 100644
--- a/src/mame/drivers/mrjong.c
+++ b/src/mame/drivers/mrjong.c
@@ -190,10 +190,9 @@ static MACHINE_CONFIG_START( mrjong, mrjong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(mrjong)
+ MCFG_SCREEN_UPDATE_STATIC(mrjong)
MCFG_GFXDECODE(mrjong)
MCFG_PALETTE_LENGTH(4*32)
diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c
index 3856b85aaf1..a42396f43e6 100644
--- a/src/mame/drivers/ms32.c
+++ b/src/mame/drivers/ms32.c
@@ -1429,10 +1429,9 @@ static MACHINE_CONFIG_START( ms32, ms32_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(ms32)
+ MCFG_SCREEN_UPDATE_STATIC(ms32)
MCFG_GFXDECODE(ms32)
MCFG_PALETTE_LENGTH(0x10000)
diff --git a/src/mame/drivers/msisaac.c b/src/mame/drivers/msisaac.c
index 92b9bb9fbd6..ea1065a653b 100644
--- a/src/mame/drivers/msisaac.c
+++ b/src/mame/drivers/msisaac.c
@@ -504,10 +504,9 @@ static MACHINE_CONFIG_START( msisaac, msisaac_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(msisaac)
+ MCFG_SCREEN_UPDATE_STATIC(msisaac)
MCFG_GFXDECODE(msisaac)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/mugsmash.c b/src/mame/drivers/mugsmash.c
index c3c41cab74a..f63ca213a1a 100644
--- a/src/mame/drivers/mugsmash.c
+++ b/src/mame/drivers/mugsmash.c
@@ -422,10 +422,9 @@ static MACHINE_CONFIG_START( mugsmash, mugsmash_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(mugsmash)
+ MCFG_SCREEN_UPDATE_STATIC(mugsmash)
MCFG_GFXDECODE(mugsmash)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c
index 11ac7eab71c..ed23eb54ffd 100644
--- a/src/mame/drivers/multfish.c
+++ b/src/mame/drivers/multfish.c
@@ -241,7 +241,7 @@ static VIDEO_START(multfish)
tilemap_set_scroll_cols(state->m_reel_tilemap, 64);
}
-static SCREEN_UPDATE(multfish)
+static SCREEN_UPDATE_IND16(multfish)
{
multfish_state *state = screen.machine().driver_data<multfish_state>();
int i;
@@ -1034,10 +1034,9 @@ static MACHINE_CONFIG_START( multfish, multfish_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(multfish)
+ MCFG_SCREEN_UPDATE_STATIC(multfish)
MCFG_GFXDECODE(multfish)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/multigam.c b/src/mame/drivers/multigam.c
index 0ea2181b31d..66ee262d6ec 100644
--- a/src/mame/drivers/multigam.c
+++ b/src/mame/drivers/multigam.c
@@ -1090,7 +1090,7 @@ static VIDEO_START( multigam )
{
}
-static SCREEN_UPDATE( multigam )
+static SCREEN_UPDATE_IND16( multigam )
{
/* render the ppu */
ppu2c0x_render(screen.machine().device("ppu"), bitmap, 0, 0, 0, 0);
@@ -1181,10 +1181,9 @@ static MACHINE_CONFIG_START( multigam, multigam_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(multigam)
+ MCFG_SCREEN_UPDATE_STATIC(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 0d6e30f0ae3..514ef7adfe1 100644
--- a/src/mame/drivers/munchmo.c
+++ b/src/mame/drivers/munchmo.c
@@ -341,10 +341,9 @@ static MACHINE_CONFIG_START( mnchmobl, munchmo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256+32+32, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+32+32,0, 255-16)
- MCFG_SCREEN_UPDATE(mnchmobl)
+ MCFG_SCREEN_UPDATE_STATIC(mnchmobl)
MCFG_GFXDECODE(mnchmobl)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/murogem.c b/src/mame/drivers/murogem.c
index 15c27949d49..b4b58f92e54 100644
--- a/src/mame/drivers/murogem.c
+++ b/src/mame/drivers/murogem.c
@@ -199,7 +199,7 @@ GFXDECODE_END
static PALETTE_INIT(murogem)
{}
-static SCREEN_UPDATE(murogem)
+static SCREEN_UPDATE_IND16(murogem)
{
murogem_state *state = screen.machine().driver_data<murogem_state>();
int xx,yy,count;
@@ -250,10 +250,9 @@ static MACHINE_CONFIG_START( murogem, murogem_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(murogem)
+ MCFG_SCREEN_UPDATE_STATIC(murogem)
MCFG_GFXDECODE(murogem)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/murogmbl.c b/src/mame/drivers/murogmbl.c
index ef734903497..de6fd3c9c87 100644
--- a/src/mame/drivers/murogmbl.c
+++ b/src/mame/drivers/murogmbl.c
@@ -90,7 +90,7 @@ static VIDEO_START(murogmbl)
}
-static SCREEN_UPDATE(murogmbl)
+static SCREEN_UPDATE_IND16(murogmbl)
{
murogmbl_state *state = screen.machine().driver_data<murogmbl_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -187,12 +187,11 @@ static MACHINE_CONFIG_START( murogmbl, murogmbl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(murogmbl)
+ MCFG_SCREEN_UPDATE_STATIC(murogmbl)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/mustache.c b/src/mame/drivers/mustache.c
index f3cc8e8a47f..ffd2af9362e 100644
--- a/src/mame/drivers/mustache.c
+++ b/src/mame/drivers/mustache.c
@@ -201,10 +201,9 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56.747)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 31*8-1)
- MCFG_SCREEN_UPDATE(mustache)
+ MCFG_SCREEN_UPDATE_STATIC(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 1ea56f3a9ef..a80227d5570 100644
--- a/src/mame/drivers/mw8080bw.c
+++ b/src/mame/drivers/mw8080bw.c
@@ -232,9 +232,8 @@ MACHINE_CONFIG_START( mw8080bw_root, mw8080bw_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART)
- MCFG_SCREEN_UPDATE(mw8080bw)
+ MCFG_SCREEN_UPDATE_STATIC(mw8080bw)
MACHINE_CONFIG_END
@@ -2286,7 +2285,7 @@ static MACHINE_CONFIG_DERIVED( spcenctr, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(spcenctr)
+ MCFG_SCREEN_UPDATE_STATIC(spcenctr)
/* audio hardware */
MCFG_FRAGMENT_ADD(spcenctr_audio)
@@ -2374,7 +2373,7 @@ static MACHINE_CONFIG_DERIVED( phantom2, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(phantom2)
+ MCFG_SCREEN_UPDATE_STATIC(phantom2)
MCFG_SCREEN_EOF(phantom2)
/* add shifter */
@@ -2730,7 +2729,7 @@ MACHINE_CONFIG_DERIVED( invaders, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(invaders)
+ MCFG_SCREEN_UPDATE_STATIC(invaders)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
diff --git a/src/mame/drivers/mwarr.c b/src/mame/drivers/mwarr.c
index 502c0cbd717..895ebc36ded 100644
--- a/src/mame/drivers/mwarr.c
+++ b/src/mame/drivers/mwarr.c
@@ -395,7 +395,7 @@ static VIDEO_START( mwarr )
state->save_item(NAME(state->m_sprites_buffer));
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mwarr_state *state = machine.driver_data<mwarr_state>();
const UINT16 *source = state->m_sprites_buffer + 0x800 - 4;
@@ -466,7 +466,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE( mwarr )
+static SCREEN_UPDATE_IND16( mwarr )
{
mwarr_state *state = screen.machine().driver_data<mwarr_state>();
int i;
@@ -555,10 +555,9 @@ static MACHINE_CONFIG_START( mwarr, mwarr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mwarr)
+ MCFG_SCREEN_UPDATE_STATIC(mwarr)
MCFG_GFXDECODE(mwarr)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c
index 9d8edaed765..e06e59c9f0c 100644
--- a/src/mame/drivers/mystwarr.c
+++ b/src/mame/drivers/mystwarr.c
@@ -1016,10 +1016,9 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state )
// MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(mystwarr)
+ MCFG_SCREEN_UPDATE_STATIC(mystwarr)
MCFG_PALETTE_LENGTH(2048)
@@ -1055,7 +1054,7 @@ static MACHINE_CONFIG_DERIVED( viostorm, mystwarr )
/* video hardware */
MCFG_VIDEO_START(viostorm)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(metamrph)
+ MCFG_SCREEN_UPDATE_STATIC(metamrph)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
@@ -1080,7 +1079,7 @@ static MACHINE_CONFIG_DERIVED( metamrph, mystwarr )
/* video hardware */
MCFG_VIDEO_START(metamrph)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(metamrph)
+ MCFG_SCREEN_UPDATE_STATIC(metamrph)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(900))
@@ -1106,7 +1105,7 @@ static MACHINE_CONFIG_DERIVED( dadandrn, mystwarr )
/* video hardware */
MCFG_VIDEO_START(dadandrn)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(dadandrn)
+ MCFG_SCREEN_UPDATE_STATIC(dadandrn)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
@@ -1135,7 +1134,7 @@ static MACHINE_CONFIG_DERIVED( gaiapols, mystwarr )
/* video hardware */
MCFG_VIDEO_START(gaiapols)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(dadandrn)
+ MCFG_SCREEN_UPDATE_STATIC(dadandrn)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
@@ -1162,8 +1161,7 @@ static MACHINE_CONFIG_DERIVED( martchmp, mystwarr )
MCFG_VIDEO_START(martchmp)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(martchmp)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_STATIC(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 a448da1f9bf..7e09a713199 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -520,10 +520,9 @@ static MACHINE_CONFIG_START( spacefev, n8080_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE(spacefev)
+ MCFG_SCREEN_UPDATE_STATIC(spacefev)
MCFG_PALETTE_LENGTH(8)
MCFG_PALETTE_INIT(n8080)
@@ -551,10 +550,9 @@ static MACHINE_CONFIG_START( sheriff, n8080_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE(sheriff)
+ MCFG_SCREEN_UPDATE_STATIC(sheriff)
MCFG_PALETTE_LENGTH(8)
MCFG_PALETTE_INIT(n8080)
@@ -582,10 +580,9 @@ static MACHINE_CONFIG_START( helifire, n8080_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
- MCFG_SCREEN_UPDATE(helifire)
+ MCFG_SCREEN_UPDATE_STATIC(helifire)
MCFG_SCREEN_EOF(helifire)
MCFG_PALETTE_LENGTH(8 + 0x400)
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index 3e807db71de..c8fe62df572 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -613,10 +613,9 @@ static MACHINE_CONFIG_START( namcofl, namcofl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCOFL_HTOTAL, NAMCOFL_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1)
- MCFG_SCREEN_UPDATE(namcofl)
+ MCFG_SCREEN_UPDATE_STATIC(namcofl)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/namcoic.c b/src/mame/drivers/namcoic.c
index bafe174ede4..14964993423 100644
--- a/src/mame/drivers/namcoic.c
+++ b/src/mame/drivers/namcoic.c
@@ -89,7 +89,7 @@ namco_tilemap_init( running_machine &machine, int gfxbank, void *maskBaseAddr,
} /* namco_tilemap_init */
void
-namco_tilemap_draw( bitmap_t &bitmap, const rectangle &cliprect, int pri )
+namco_tilemap_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
int i;
for( i=0; i<6; i++ )
@@ -266,7 +266,7 @@ WRITE32_HANDLER( namco_tilemapvideoram32_le_w )
/**************************************************************************************/
static void zdrawgfxzoom(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int scalex, int scaley, int zpos )
{
@@ -338,7 +338,7 @@ static void zdrawgfxzoom(
if( ex>sx )
{ /* skip if inner loop doesn't draw anything */
int y;
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
if( priority_bitmap.valid() )
{
for( y=sy; y<ey; y++ )
@@ -407,8 +407,16 @@ static void zdrawgfxzoom(
}
} /* zdrawgfxzoom */
+static void zdrawgfxzoom(
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
+ int scalex, int scaley, int zpos )
+{
+ /* nop */
+}
+
void
-namcos2_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri, int control )
+namcos2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
{
int offset = (control & 0x000f) * (128*4);
int loop;
@@ -488,7 +496,7 @@ namcos2_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle
} /* namcos2_draw_sprites */
void
-namcos2_draw_sprites_metalhawk(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+namcos2_draw_sprites_metalhawk(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
/**
* word#0
@@ -713,8 +721,9 @@ static int mGfxC355; /* gfx bank for sprites */
* 0x10000 sprite attr (page1)
* 0x14000 sprite list (page1)
*/
+template<class _BitmapClass>
static void
-draw_spriteC355(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT16 *pSource, int pri, int zpos )
+draw_spriteC355(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, const UINT16 *pSource, int pri, int zpos )
{
UINT16 *spriteram16 = machine.generic.spriteram.u16;
unsigned screen_height_remaining, screen_width_remaining;
@@ -920,9 +929,10 @@ namco_obj_init( running_machine &machine, int gfxbank, int palXOR, int (*codeToT
memset( mSpritePos,0x00,sizeof(mSpritePos) );
} /* namcosC355_init */
+template<class _BitmapClass>
static void
DrawObjectList(running_machine &machine,
- bitmap_t &bitmap,
+ _BitmapClass &bitmap,
const rectangle &cliprect,
int pri,
const UINT16 *pSpriteList16,
@@ -939,7 +949,25 @@ DrawObjectList(running_machine &machine,
} /* DrawObjectList */
void
-namco_obj_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+namco_obj_draw(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
+{
+// int offs = spriteram16[0x18000/2]; /* end-of-sprite-list */
+ if( pri==0 )
+ {
+ machine.priority_bitmap.fill(0, cliprect );
+ }
+// if( offs==0 )
+ { /* boot */
+ DrawObjectList(machine, bitmap,cliprect,pri,&machine.generic.spriteram.u16[0x02000/2], &machine.generic.spriteram.u16[0x00000/2] );
+ }
+// else
+ {
+ DrawObjectList(machine, bitmap,cliprect,pri,&machine.generic.spriteram.u16[0x14000/2], &machine.generic.spriteram.u16[0x10000/2] );
+ }
+} /* namco_obj_draw */
+
+void
+namco_obj_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri )
{
// int offs = spriteram16[0x18000/2]; /* end-of-sprite-list */
if( pri==0 )
@@ -1210,7 +1238,7 @@ UnpackRozParam( const UINT16 *pSource, struct RozParam *pRozParam )
static void
DrawRozHelper(
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
tilemap_t *tmap,
const rectangle &clip,
const struct RozParam *rozInfo )
@@ -1221,8 +1249,8 @@ DrawRozHelper(
(namcos2_gametype != NAMCOFL_FINAL_LAP_R))
{
UINT32 size_mask = rozInfo->size-1;
- bitmap_t &srcbitmap = tilemap_get_pixmap( tmap );
- bitmap_t &flagsbitmap = tilemap_get_flagsmap( tmap );
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap( tmap );
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap( tmap );
UINT32 startx = rozInfo->startx + clip.min_x * rozInfo->incxx + clip.min_y * rozInfo->incyx;
UINT32 starty = rozInfo->starty + clip.min_x * rozInfo->incxy + clip.min_y * rozInfo->incyy;
int sx = clip.min_x;
@@ -1268,7 +1296,7 @@ DrawRozHelper(
} /* DrawRozHelper */
static void
-DrawRozScanline( bitmap_t &bitmap, int line, int which, int pri, const rectangle &cliprect )
+DrawRozScanline( bitmap_ind16 &bitmap, int line, int which, int pri, const rectangle &cliprect )
{
if( line>=cliprect.min_y && line<=cliprect.max_y )
{
@@ -1298,7 +1326,7 @@ DrawRozScanline( bitmap_t &bitmap, int line, int which, int pri, const rectangle
} /* DrawRozScanline */
void
-namco_roz_draw( bitmap_t &bitmap, const rectangle &cliprect, int pri )
+namco_roz_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
int mode = rozcontrol16[0]; /* 0x8000 or 0x1000 */
int which, special = 1;
@@ -1596,13 +1624,13 @@ namco_road_set_transparent_color(pen_t pen)
}
void
-namco_road_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+namco_road_draw(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
const UINT8 *clut = (const UINT8 *)machine.region("user3")->base();
unsigned yscroll;
int i;
- bitmap_t &SourceBitmap = tilemap_get_pixmap(mpRoadTilemap);
+ bitmap_ind16 &SourceBitmap = tilemap_get_pixmap(mpRoadTilemap);
yscroll = mpRoadRAM[0x1fdfe/2];
for( i=cliprect.min_y; i<=cliprect.max_y; i++ )
diff --git a/src/mame/drivers/namcona1.c b/src/mame/drivers/namcona1.c
index 8e261121ab7..b8f8cc4ccb1 100644
--- a/src/mame/drivers/namcona1.c
+++ b/src/mame/drivers/namcona1.c
@@ -1044,10 +1044,9 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8, 38*8-1-8, 4*8, 32*8-1)
- MCFG_SCREEN_UPDATE(namcona1)
+ MCFG_SCREEN_UPDATE_STATIC(namcona1)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namconb1.c b/src/mame/drivers/namconb1.c
index 6c3580b18c9..2d5f49f18b3 100644
--- a/src/mame/drivers/namconb1.c
+++ b/src/mame/drivers/namconb1.c
@@ -1034,10 +1034,9 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
- MCFG_SCREEN_UPDATE(namconb1)
+ MCFG_SCREEN_UPDATE_STATIC(namconb1)
MCFG_GFXDECODE(namconb1)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1067,10 +1066,9 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
- MCFG_SCREEN_UPDATE(namconb2)
+ MCFG_SCREEN_UPDATE_STATIC(namconb2)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namcond1.c b/src/mame/drivers/namcond1.c
index 2fab8f38f29..fa07b1a3806 100644
--- a/src/mame/drivers/namcond1.c
+++ b/src/mame/drivers/namcond1.c
@@ -312,10 +312,9 @@ static MACHINE_CONFIG_START( namcond1, namcond1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.0)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(288, 224) // maximum display resolution (512x512 in theory)
MCFG_SCREEN_VISIBLE_AREA(0, 287, 0, 223) // default visible area
- MCFG_SCREEN_UPDATE(ygv608)
+ MCFG_SCREEN_UPDATE_STATIC(ygv608)
MCFG_GFXDECODE(namcond1)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/namcops2.c b/src/mame/drivers/namcops2.c
index b2ccc453436..1d92eb3519f 100644
--- a/src/mame/drivers/namcops2.c
+++ b/src/mame/drivers/namcops2.c
@@ -35,6 +35,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -42,7 +44,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -50,7 +51,7 @@ void namcops2_state::video_start()
{
}
-bool namcops2_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 namcops2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -77,7 +78,7 @@ static MACHINE_CONFIG_START( system246, namcops2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
+ MCFG_SCREEN_UPDATE_DRIVER(namcops2_state, screen_update)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c
index 0052fb2c8d0..05da2c6b152 100644
--- a/src/mame/drivers/namcos1.c
+++ b/src/mame/drivers/namcos1.c
@@ -1113,10 +1113,9 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(namcos1)
+ MCFG_SCREEN_UPDATE_STATIC(namcos1)
MCFG_SCREEN_EOF(namcos1)
MCFG_GFXDECODE(namcos1)
diff --git a/src/mame/drivers/namcos2.c b/src/mame/drivers/namcos2.c
index 2f223418f4d..83f4ef16214 100644
--- a/src/mame/drivers/namcos2.c
+++ b/src/mame/drivers/namcos2.c
@@ -1633,10 +1633,9 @@ static MACHINE_CONFIG_START( default, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(namcos2_default)
+ MCFG_SCREEN_UPDATE_STATIC(namcos2_default)
MCFG_GFXDECODE(namcos2)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1710,10 +1709,9 @@ static MACHINE_CONFIG_START( gollygho, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(namcos2_default)
+ MCFG_SCREEN_UPDATE_STATIC(namcos2_default)
MCFG_GFXDECODE(namcos2)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1760,10 +1758,9 @@ static MACHINE_CONFIG_START( finallap, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(finallap)
+ MCFG_SCREEN_UPDATE_STATIC(finallap)
MCFG_GFXDECODE(finallap)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1810,10 +1807,9 @@ static MACHINE_CONFIG_START( sgunner, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(sgunner)
+ MCFG_SCREEN_UPDATE_STATIC(sgunner)
MCFG_GFXDECODE(sgunner)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1860,10 +1856,9 @@ static MACHINE_CONFIG_START( luckywld, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(luckywld)
+ MCFG_SCREEN_UPDATE_STATIC(luckywld)
MCFG_GFXDECODE(luckywld)
MCFG_PALETTE_LENGTH(0x2000)
@@ -1910,10 +1905,9 @@ static MACHINE_CONFIG_START( metlhawk, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(metlhawk)
+ MCFG_SCREEN_UPDATE_STATIC(metlhawk)
MCFG_GFXDECODE(metlhawk)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namcos21.c b/src/mame/drivers/namcos21.c
index 77cbce90114..c4e860a4571 100644
--- a/src/mame/drivers/namcos21.c
+++ b/src/mame/drivers/namcos21.c
@@ -1561,10 +1561,9 @@ static MACHINE_CONFIG_START( s21base, namcos21_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE(namcos21)
+ MCFG_SCREEN_UPDATE_STATIC(namcos21)
MCFG_GFXDECODE(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
@@ -1633,10 +1632,9 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE(namcos21)
+ MCFG_SCREEN_UPDATE_STATIC(namcos21)
MCFG_GFXDECODE(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
@@ -1692,10 +1690,9 @@ static MACHINE_CONFIG_START( winrun_c140_typeB, namcos21_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(NAMCOS21_POLY_FRAME_WIDTH,NAMCOS21_POLY_FRAME_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
- MCFG_SCREEN_UPDATE(namcos21)
+ MCFG_SCREEN_UPDATE_STATIC(namcos21)
MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c
index 6d2eb8d9a44..2a55043f909 100644
--- a/src/mame/drivers/namcos22.c
+++ b/src/mame/drivers/namcos22.c
@@ -3010,8 +3010,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(namcos22s)
+ MCFG_SCREEN_UPDATE_STATIC(namcos22s)
MCFG_PALETTE_LENGTH(NAMCOS22_PALETTE_SIZE)
MCFG_GFXDECODE(super)
@@ -3260,8 +3259,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(namcos22)
+ MCFG_SCREEN_UPDATE_STATIC(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 e565198f8c6..702e609e9bc 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1654,7 +1654,7 @@ static void render_scanline(void *dest, INT32 scanline, const poly_extent *exten
float du = extent->param[1].dpdx;
float dv = extent->param[2].dpdx;
float dl = extent->param[3].dpdx;
- bitmap_t *bitmap = (bitmap_t *)dest;
+ bitmap_rgb32 *bitmap = (bitmap_rgb32 *)dest;
UINT32 *img = &bitmap->pix32(scanline, extent->startx);
for(int x = extent->startx; x < extent->stopx; x++) {
@@ -2064,7 +2064,7 @@ static int render_poly_compare(const void *i1, const void *i2)
return p1->zkey < p2->zkey ? 1 : p1->zkey > p2->zkey ? -1 : 0;
}
-static void render_flush(running_machine &machine, bitmap_t &bitmap)
+static void render_flush(running_machine &machine, bitmap_rgb32 &bitmap)
{
namcos23_state *state = machine.driver_data<namcos23_state>();
render_t &render = state->m_render;
@@ -2088,7 +2088,7 @@ static void render_flush(running_machine &machine, bitmap_t &bitmap)
render.poly_count = 0;
}
-static void render_run(running_machine &machine, bitmap_t &bitmap)
+static void render_run(running_machine &machine, bitmap_rgb32 &bitmap)
{
namcos23_state *state = machine.driver_data<namcos23_state>();
render_t &render = state->m_render;
@@ -2133,7 +2133,7 @@ static VIDEO_START( ss23 )
state->m_render.polymgr = poly_alloc(machine, 10000, sizeof(namcos23_render_data), POLYFLAG_NO_WORK_QUEUE);
}
-static SCREEN_UPDATE( ss23 )
+static SCREEN_UPDATE_RGB32( ss23 )
{
namcos23_state *state = screen.machine().driver_data<namcos23_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -2897,10 +2897,9 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(S23_VSYNC1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(ss23)
+ MCFG_SCREEN_UPDATE_STATIC(ss23)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2943,10 +2942,9 @@ static MACHINE_CONFIG_START( s23, namcos23_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(S23_VSYNC1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(ss23)
+ MCFG_SCREEN_UPDATE_STATIC(ss23)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2985,10 +2983,9 @@ static MACHINE_CONFIG_START( ss23, namcos23_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(S23_VSYNC1)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not in any way accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(ss23)
+ MCFG_SCREEN_UPDATE_STATIC(ss23)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/namcos86.c b/src/mame/drivers/namcos86.c
index df6ea13fde2..342854b9d86 100644
--- a/src/mame/drivers/namcos86.c
+++ b/src/mame/drivers/namcos86.c
@@ -1013,10 +1013,9 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(namcos86)
+ MCFG_SCREEN_UPDATE_STATIC(namcos86)
MCFG_SCREEN_EOF(namcos86)
MCFG_GFXDECODE(namcos86)
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 8136d84b9e3..3a9200e5340 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -2524,10 +2524,9 @@ static MACHINE_CONFIG_START( naomi_aw_base, dc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE(dc)
+ MCFG_SCREEN_UPDATE_STATIC(dc)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/naughtyb.c b/src/mame/drivers/naughtyb.c
index 91d93974146..f522ef44bf4 100644
--- a/src/mame/drivers/naughtyb.c
+++ b/src/mame/drivers/naughtyb.c
@@ -432,10 +432,9 @@ static MACHINE_CONFIG_START( naughtyb, naughtyb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(naughtyb)
+ MCFG_SCREEN_UPDATE_STATIC(naughtyb)
MCFG_GFXDECODE(naughtyb)
MCFG_PALETTE_LENGTH(256)
@@ -467,10 +466,9 @@ static MACHINE_CONFIG_START( popflame, naughtyb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(naughtyb)
+ MCFG_SCREEN_UPDATE_STATIC(naughtyb)
MCFG_GFXDECODE(naughtyb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj8688.c b/src/mame/drivers/nbmj8688.c
index de2decdc25d..bb0f54f05ad 100644
--- a/src/mame/drivers/nbmj8688.c
+++ b/src/mame/drivers/nbmj8688.c
@@ -2929,10 +2929,9 @@ static MACHINE_CONFIG_START( NBMJDRV_4096, nbmj8688_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(mbmj8688)
+ MCFG_SCREEN_UPDATE_STATIC(mbmj8688)
MCFG_PALETTE_LENGTH(4096)
@@ -2969,7 +2968,6 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV_65536, NBMJDRV_4096 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_PALETTE_LENGTH(65536)
MCFG_PALETTE_INIT(mbmj8688_16bit)
@@ -3051,28 +3049,25 @@ static MACHINE_CONFIG_START( mbmj_p16bit_LCD, nbmj8688_state )
MCFG_DEFAULT_LAYOUT(layout_nbmj8688)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(mbmj8688)
+ MCFG_SCREEN_UPDATE_STATIC(mbmj8688)
MCFG_SCREEN_ADD("lcd0", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mbmj8688_lcd0)
+ MCFG_SCREEN_UPDATE_STATIC(mbmj8688_lcd0)
MCFG_SCREEN_ADD("lcd1", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mbmj8688_lcd1)
+ MCFG_SCREEN_UPDATE_STATIC(mbmj8688_lcd1)
MCFG_VIDEO_START(mbmj8688_pure_16bit_LCD)
diff --git a/src/mame/drivers/nbmj8891.c b/src/mame/drivers/nbmj8891.c
index 40b921cace3..636451d47c8 100644
--- a/src/mame/drivers/nbmj8891.c
+++ b/src/mame/drivers/nbmj8891.c
@@ -2620,10 +2620,9 @@ static MACHINE_CONFIG_START( gionbana, nbmj8891_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
- MCFG_SCREEN_UPDATE(nbmj8891)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj8891)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj8900.c b/src/mame/drivers/nbmj8900.c
index cb9a64634fe..4153ad87a5b 100644
--- a/src/mame/drivers/nbmj8900.c
+++ b/src/mame/drivers/nbmj8900.c
@@ -330,10 +330,9 @@ static MACHINE_CONFIG_START( ohpaipee, nbmj8900_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
- MCFG_SCREEN_UPDATE(nbmj8900)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj8900)
MCFG_PALETTE_LENGTH(256)
MCFG_VIDEO_START(nbmj8900_2layer)
diff --git a/src/mame/drivers/nbmj8991.c b/src/mame/drivers/nbmj8991.c
index 622dd295eb4..6ea02e966ff 100644
--- a/src/mame/drivers/nbmj8991.c
+++ b/src/mame/drivers/nbmj8991.c
@@ -1489,10 +1489,9 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(nbmj8991_type1)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj8991_type1)
MCFG_PALETTE_LENGTH(256)
@@ -1527,10 +1526,9 @@ static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(nbmj8991_type2)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj8991_type2)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nbmj9195.c b/src/mame/drivers/nbmj9195.c
index 6994a56d717..1f48d697402 100644
--- a/src/mame/drivers/nbmj9195.c
+++ b/src/mame/drivers/nbmj9195.c
@@ -3108,10 +3108,9 @@ static MACHINE_CONFIG_START( NBMJDRV1, nbmj9195_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024, 512) /* no way this is correct */
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(nbmj9195)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj9195)
MCFG_PALETTE_LENGTH(256)
@@ -3149,7 +3148,7 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV3, NBMJDRV1 )
MCFG_VIDEO_START(nbmj9195_nb22090)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(nbmj9195)
+ MCFG_SCREEN_UPDATE_STATIC(nbmj9195)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nemesis.c b/src/mame/drivers/nemesis.c
index b1283a4f0dc..f2aae2d2fa0 100644
--- a/src/mame/drivers/nemesis.c
+++ b/src/mame/drivers/nemesis.c
@@ -1702,10 +1702,9 @@ static MACHINE_CONFIG_START( nemesis, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* ??? */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1749,10 +1748,9 @@ static MACHINE_CONFIG_START( gx400, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1795,10 +1793,9 @@ static MACHINE_CONFIG_START( konamigt, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1839,10 +1836,9 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1887,10 +1883,9 @@ static MACHINE_CONFIG_START( salamand, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((264-256)*125/2))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1937,10 +1932,9 @@ static MACHINE_CONFIG_START( blkpnthr, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -1983,10 +1977,9 @@ static MACHINE_CONFIG_START( citybomb, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -2033,10 +2026,9 @@ static MACHINE_CONFIG_START( nyanpani, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -2081,10 +2073,9 @@ static MACHINE_CONFIG_START( hcrash, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
@@ -2832,10 +2823,9 @@ static MACHINE_CONFIG_START( bubsys, nemesis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((18432000.0/4)/(288*264)) /* 60.606060 Hz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nemesis)
+ MCFG_SCREEN_UPDATE_STATIC(nemesis)
MCFG_GFXDECODE(nemesis)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/neogeo.c b/src/mame/drivers/neogeo.c
index 47e2e734be9..7e40eebf8e4 100644
--- a/src/mame/drivers/neogeo.c
+++ b/src/mame/drivers/neogeo.c
@@ -1381,9 +1381,8 @@ static MACHINE_CONFIG_START( neogeo, neogeo_state )
MCFG_DEFAULT_LAYOUT(layout_neogeo)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
- MCFG_SCREEN_UPDATE(neogeo)
+ MCFG_SCREEN_UPDATE_STATIC(neogeo)
/* audio hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/neoprint.c b/src/mame/drivers/neoprint.c
index 0db4964a6d3..71360597840 100644
--- a/src/mame/drivers/neoprint.c
+++ b/src/mame/drivers/neoprint.c
@@ -53,7 +53,7 @@ xxxx xxxx xxxx xxxx [2] scroll Y, signed
---- ---- --?? ??xx [6] map register
*/
-static void draw_layer(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int layer,int data_shift)
+static void draw_layer(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int layer,int data_shift)
{
neoprint_state *state = machine.driver_data<neoprint_state>();
int i, y, x;
@@ -91,7 +91,7 @@ static void draw_layer(running_machine &machine, bitmap_t &bitmap,const rectangl
}
}
-SCREEN_UPDATE(neoprint)
+SCREEN_UPDATE_IND16(neoprint)
{
bitmap.fill(0, cliprect);
@@ -101,7 +101,7 @@ SCREEN_UPDATE(neoprint)
return 0;
}
-SCREEN_UPDATE(nprsp)
+SCREEN_UPDATE_IND16(nprsp)
{
bitmap.fill(0, cliprect);
@@ -464,10 +464,9 @@ static MACHINE_CONFIG_START( neoprint, neoprint_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(neoprint)
+ MCFG_SCREEN_UPDATE_STATIC(neoprint)
MCFG_PALETTE_LENGTH(0x10000)
@@ -507,10 +506,9 @@ static MACHINE_CONFIG_START( nprsp, neoprint_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nprsp)
+ MCFG_SCREEN_UPDATE_STATIC(nprsp)
MCFG_MACHINE_RESET(nprsp)
diff --git a/src/mame/drivers/neptunp2.c b/src/mame/drivers/neptunp2.c
index 040d37c33cb..c34f1838d91 100644
--- a/src/mame/drivers/neptunp2.c
+++ b/src/mame/drivers/neptunp2.c
@@ -22,6 +22,8 @@ public:
DECLARE_READ8_MEMBER(test_r);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -29,7 +31,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -38,7 +39,7 @@ void neptunp2_state::video_start()
}
-bool neptunp2_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 neptunp2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -101,7 +102,7 @@ static MACHINE_CONFIG_START( neptunp2, neptunp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(neptunp2_state, screen_update)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_GFXDECODE(neptunp2)
diff --git a/src/mame/drivers/news.c b/src/mame/drivers/news.c
index 0ecd91956a1..596bec05299 100644
--- a/src/mame/drivers/news.c
+++ b/src/mame/drivers/news.c
@@ -141,10 +141,9 @@ static MACHINE_CONFIG_START( news, news_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(news)
+ MCFG_SCREEN_UPDATE_STATIC(news)
MCFG_GFXDECODE(news)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/nexus3d.c b/src/mame/drivers/nexus3d.c
index 7c11d7e33d8..88d8fef3577 100644
--- a/src/mame/drivers/nexus3d.c
+++ b/src/mame/drivers/nexus3d.c
@@ -174,7 +174,7 @@ VIDEO_START( nexus3d )
}
-SCREEN_UPDATE(nexus3d)
+SCREEN_UPDATE_RGB32(nexus3d)
{
return 0;
}
@@ -193,10 +193,9 @@ static MACHINE_CONFIG_START( nexus3d, nexus3d_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(nexus3d)
+ MCFG_SCREEN_UPDATE_STATIC(nexus3d)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/nightgal.c b/src/mame/drivers/nightgal.c
index a3e3c790890..9eae2a9f060 100644
--- a/src/mame/drivers/nightgal.c
+++ b/src/mame/drivers/nightgal.c
@@ -68,7 +68,7 @@ static VIDEO_START( nightgal )
state->save_item(NAME(state->m_blit_buffer));
}
-static SCREEN_UPDATE( nightgal )
+static SCREEN_UPDATE_IND16( nightgal )
{
nightgal_state *state = screen.machine().driver_data<nightgal_state>();
int x, y;
@@ -877,10 +877,9 @@ static MACHINE_CONFIG_START( royalqn, nightgal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(nightgal)
+ MCFG_SCREEN_UPDATE_STATIC(nightgal)
MCFG_PALETTE_INIT(nightgal)
MCFG_PALETTE_LENGTH(0x10)
diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c
index d5a7e0798a3..0c6fa5c44ea 100644
--- a/src/mame/drivers/ninjakd2.c
+++ b/src/mame/drivers/ninjakd2.c
@@ -953,10 +953,9 @@ static MACHINE_CONFIG_START( ninjakd2, ninjakd2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(ninjakd2)
+ MCFG_SCREEN_UPDATE_STATIC(ninjakd2)
MCFG_SCREEN_EOF(ninjakd2)
MCFG_GFXDECODE(ninjakd2)
@@ -1028,7 +1027,7 @@ static MACHINE_CONFIG_DERIVED( robokid, mnight )
MCFG_VIDEO_START(robokid)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(robokid)
+ MCFG_SCREEN_UPDATE_STATIC(robokid)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( omegaf, robokid )
@@ -1043,7 +1042,7 @@ static MACHINE_CONFIG_DERIVED( omegaf, robokid )
/* video hardware */
MCFG_VIDEO_START(omegaf)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(omegaf)
+ MCFG_SCREEN_UPDATE_STATIC(omegaf)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ninjaw.c b/src/mame/drivers/ninjaw.c
index 0ad7bfe58d1..5688b6e2f2f 100644
--- a/src/mame/drivers/ninjaw.c
+++ b/src/mame/drivers/ninjaw.c
@@ -826,28 +826,25 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_left)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_middle)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_right)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_right)
MCFG_VIDEO_START(ninjaw)
@@ -912,28 +909,25 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_left)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_left)
MCFG_SCREEN_ADD("mscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_middle)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ninjaw_right)
+ MCFG_SCREEN_UPDATE_STATIC(ninjaw_right)
MCFG_VIDEO_START(ninjaw)
diff --git a/src/mame/drivers/nitedrvr.c b/src/mame/drivers/nitedrvr.c
index cdf049d77c8..b8bb6ede0d5 100644
--- a/src/mame/drivers/nitedrvr.c
+++ b/src/mame/drivers/nitedrvr.c
@@ -151,10 +151,9 @@ static MACHINE_CONFIG_START( nitedrvr, nitedrvr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57) // how is this derived?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(nitedrvr)
+ MCFG_SCREEN_UPDATE_STATIC(nitedrvr)
MCFG_GFXDECODE(nitedrvr)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c
index 7a4b045b04a..90cd8b48d34 100644
--- a/src/mame/drivers/niyanpai.c
+++ b/src/mame/drivers/niyanpai.c
@@ -885,10 +885,9 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
- MCFG_SCREEN_UPDATE(niyanpai)
+ MCFG_SCREEN_UPDATE_STATIC(niyanpai)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/nmg5.c b/src/mame/drivers/nmg5.c
index ed1009a829d..830cd6a6abd 100644
--- a/src/mame/drivers/nmg5.c
+++ b/src/mame/drivers/nmg5.c
@@ -845,7 +845,7 @@ static VIDEO_START( nmg5 )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
nmg5_state *state = machine.driver_data<nmg5_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -881,7 +881,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_bitmap( running_machine &machine, bitmap_t &bitmap )
+static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap )
{
nmg5_state *state = machine.driver_data<nmg5_state>();
int yyy = 256;
@@ -911,7 +911,7 @@ static void draw_bitmap( running_machine &machine, bitmap_t &bitmap )
}
-static SCREEN_UPDATE( nmg5 )
+static SCREEN_UPDATE_IND16( nmg5 )
{
nmg5_state *state = screen.machine().driver_data<nmg5_state>();
@@ -1052,10 +1052,9 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(nmg5)
+ MCFG_SCREEN_UPDATE_STATIC(nmg5)
MCFG_GFXDECODE(nmg5)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/nmk16.c b/src/mame/drivers/nmk16.c
index 3f52cb4ce62..3f5c18febfb 100644
--- a/src/mame/drivers/nmk16.c
+++ b/src/mame/drivers/nmk16.c
@@ -3567,10 +3567,9 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tharrier)
+ MCFG_SCREEN_UPDATE_STATIC(tharrier)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(tharrier)
@@ -3611,10 +3610,9 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(manybloc)
+ MCFG_SCREEN_UPDATE_STATIC(manybloc)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(tharrier)
@@ -3653,10 +3651,9 @@ static MACHINE_CONFIG_START( mustang, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3697,10 +3694,9 @@ static MACHINE_CONFIG_START( mustangb, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3730,10 +3726,9 @@ static MACHINE_CONFIG_START( bioship, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bioship)
+ MCFG_SCREEN_UPDATE_STATIC(bioship)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(bioship)
@@ -3772,10 +3767,9 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3817,10 +3811,9 @@ static MACHINE_CONFIG_START( vandykeb, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3849,10 +3842,9 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3895,10 +3887,9 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden sou
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3925,10 +3916,9 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tdragon)
+ MCFG_SCREEN_UPDATE_STATIC(tdragon)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -3969,10 +3959,9 @@ static MACHINE_CONFIG_START( ssmissin, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -4002,10 +3991,9 @@ static MACHINE_CONFIG_START( strahl, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(strahl)
+ MCFG_SCREEN_UPDATE_STATIC(strahl)
MCFG_SCREEN_EOF(strahl)
MCFG_GFXDECODE(strahl)
@@ -4044,10 +4032,9 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hachamf)
+ MCFG_SCREEN_UPDATE_STATIC(hachamf)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -4087,10 +4074,9 @@ static MACHINE_CONFIG_START( macross, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -4129,10 +4115,9 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56.18) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -4171,10 +4156,9 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gunnail)
+ MCFG_SCREEN_UPDATE_STATIC(gunnail)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
@@ -4215,10 +4199,9 @@ static MACHINE_CONFIG_START( macross2, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gunnail)
+ MCFG_SCREEN_UPDATE_STATIC(gunnail)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross2)
@@ -4258,10 +4241,9 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gunnail)
+ MCFG_SCREEN_UPDATE_STATIC(gunnail)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross2)
@@ -4300,10 +4282,9 @@ static MACHINE_CONFIG_START( raphero, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56) // measured
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(gunnail)
+ MCFG_SCREEN_UPDATE_STATIC(gunnail)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross2)
@@ -4339,10 +4320,9 @@ static MACHINE_CONFIG_START( bjtwin, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bjtwin)
+ MCFG_SCREEN_UPDATE_STATIC(bjtwin)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(bjtwin)
@@ -4851,10 +4831,9 @@ static MACHINE_CONFIG_START( stagger1, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(afega)
+ MCFG_SCREEN_UPDATE_STATIC(afega)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(stagger1)
@@ -4880,7 +4859,7 @@ static MACHINE_CONFIG_DERIVED( redhawki, stagger1 )
/* basic machine hardware */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(redhawki)
+ MCFG_SCREEN_UPDATE_STATIC(redhawki)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( redhawkb, stagger1 )
@@ -4889,7 +4868,7 @@ static MACHINE_CONFIG_DERIVED( redhawkb, stagger1 )
/* video hardware */
MCFG_GFXDECODE(redhawkb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(redhawkb)
+ MCFG_SCREEN_UPDATE_STATIC(redhawkb)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( grdnstrm, stagger1 )
@@ -4900,7 +4879,7 @@ static MACHINE_CONFIG_DERIVED( grdnstrm, stagger1 )
MCFG_GFXDECODE(grdnstrm)
MCFG_VIDEO_START(firehawk)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(firehawk)
+ MCFG_SCREEN_UPDATE_STATIC(firehawk)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( grdnstrmk, stagger1 )
@@ -4919,7 +4898,7 @@ static MACHINE_CONFIG_DERIVED( popspops, grdnstrm )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(bubl2000)
+ MCFG_SCREEN_UPDATE_STATIC(bubl2000)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( firehawk, nmk16_state )
@@ -4936,10 +4915,9 @@ static MACHINE_CONFIG_START( firehawk, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(firehawk)
+ MCFG_SCREEN_UPDATE_STATIC(firehawk)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(grdnstrm)
@@ -4972,10 +4950,9 @@ static MACHINE_CONFIG_START( twinactn, nmk16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(macross)
+ MCFG_SCREEN_UPDATE_STATIC(macross)
MCFG_SCREEN_EOF(nmk)
MCFG_GFXDECODE(macross)
diff --git a/src/mame/drivers/norautp.c b/src/mame/drivers/norautp.c
index c26093ecb16..abdebcbd02c 100644
--- a/src/mame/drivers/norautp.c
+++ b/src/mame/drivers/norautp.c
@@ -564,7 +564,7 @@ static VIDEO_START( norautp )
}
-static SCREEN_UPDATE( norautp )
+static SCREEN_UPDATE_IND16( norautp )
{
norautp_state *state = screen.machine().driver_data<norautp_state>();
int x, y, count;
@@ -1267,10 +1267,9 @@ static MACHINE_CONFIG_START( noraut_base, norautp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(norautp)
+ MCFG_SCREEN_UPDATE_STATIC(norautp)
MCFG_GFXDECODE(norautp)
diff --git a/src/mame/drivers/nova2001.c b/src/mame/drivers/nova2001.c
index 591ad1070f1..fa01387cc36 100644
--- a/src/mame/drivers/nova2001.c
+++ b/src/mame/drivers/nova2001.c
@@ -692,10 +692,9 @@ static MACHINE_CONFIG_START( nova2001, nova2001_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(nova2001)
+ MCFG_SCREEN_UPDATE_STATIC(nova2001)
MCFG_GFXDECODE(nova2001)
MCFG_PALETTE_LENGTH(0x200)
@@ -734,10 +733,9 @@ static MACHINE_CONFIG_START( ninjakun, nova2001_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1 )
- MCFG_SCREEN_UPDATE(ninjakun)
+ MCFG_SCREEN_UPDATE_STATIC(ninjakun)
MCFG_GFXDECODE(ninjakun)
MCFG_PALETTE_LENGTH(0x300)
@@ -767,10 +765,9 @@ static MACHINE_CONFIG_START( pkunwar, nova2001_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pkunwar)
+ MCFG_SCREEN_UPDATE_STATIC(pkunwar)
MCFG_GFXDECODE(pkunwar)
MCFG_PALETTE_LENGTH(0x200)
@@ -807,10 +804,9 @@ static MACHINE_CONFIG_START( raiders5, nova2001_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(raiders5)
+ MCFG_SCREEN_UPDATE_STATIC(raiders5)
MCFG_GFXDECODE(raiders5)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/nsmpoker.c b/src/mame/drivers/nsmpoker.c
index 92c92eabcef..084a26ff2b7 100644
--- a/src/mame/drivers/nsmpoker.c
+++ b/src/mame/drivers/nsmpoker.c
@@ -122,7 +122,7 @@ static VIDEO_START( nsmpoker )
}
-static SCREEN_UPDATE( nsmpoker )
+static SCREEN_UPDATE_IND16( nsmpoker )
{
nsmpoker_state *state = screen.machine().driver_data<nsmpoker_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -399,10 +399,9 @@ static MACHINE_CONFIG_START( nsmpoker, nsmpoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(nsmpoker)
+ MCFG_SCREEN_UPDATE_STATIC(nsmpoker)
MCFG_GFXDECODE(nsmpoker)
diff --git a/src/mame/drivers/nss.c b/src/mame/drivers/nss.c
index 3295061567e..4c6051c0856 100644
--- a/src/mame/drivers/nss.c
+++ b/src/mame/drivers/nss.c
@@ -673,9 +673,8 @@ static MACHINE_CONFIG_START( snes, nss_state )
MCFG_VIDEO_START( snes )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
- MCFG_SCREEN_UPDATE( snes )
+ MCFG_SCREEN_UPDATE_STATIC( snes )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c
index e1f896b9c6e..60eab11669a 100644
--- a/src/mame/drivers/nwk-tr.c
+++ b/src/mame/drivers/nwk-tr.c
@@ -259,7 +259,7 @@ static void voodoo_vblank_0(device_t *device, int param)
}
-static SCREEN_UPDATE( nwktr )
+static SCREEN_UPDATE_RGB32( nwktr )
{
nwktr_state *state = screen.machine().driver_data<nwktr_state>();
device_t *voodoo = screen.machine().device("voodoo");
@@ -701,10 +701,9 @@ static MACHINE_CONFIG_START( nwktr, nwktr_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 384)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE(nwktr)
+ MCFG_SCREEN_UPDATE_STATIC(nwktr)
MCFG_PALETTE_LENGTH(65536)
diff --git a/src/mame/drivers/nycaptor.c b/src/mame/drivers/nycaptor.c
index cda978dd707..14232cef917 100644
--- a/src/mame/drivers/nycaptor.c
+++ b/src/mame/drivers/nycaptor.c
@@ -868,10 +868,9 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nycaptor)
+ MCFG_SCREEN_UPDATE_STATIC(nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
@@ -930,10 +929,9 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nycaptor)
+ MCFG_SCREEN_UPDATE_STATIC(nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
@@ -988,10 +986,9 @@ static MACHINE_CONFIG_START( bronx, nycaptor_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(nycaptor)
+ MCFG_SCREEN_UPDATE_STATIC(nycaptor)
MCFG_GFXDECODE(nycaptor)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/nyny.c b/src/mame/drivers/nyny.c
index 84418e89153..bb43866fa7a 100644
--- a/src/mame/drivers/nyny.c
+++ b/src/mame/drivers/nyny.c
@@ -427,16 +427,6 @@ static const mc6845_interface mc6845_intf =
};
-static SCREEN_UPDATE( nyny )
-{
- nyny_state *state = screen.machine().driver_data<nyny_state>();
-
- state->m_mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
/*************************************
*
@@ -732,9 +722,8 @@ static MACHINE_CONFIG_START( nyny, nyny_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(nyny)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/offtwall.c b/src/mame/drivers/offtwall.c
index 96a7425464d..38d20bf5d06 100644
--- a/src/mame/drivers/offtwall.c
+++ b/src/mame/drivers/offtwall.c
@@ -420,11 +420,10 @@ static MACHINE_CONFIG_START( offtwall, offtwall_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(offtwall)
+ MCFG_SCREEN_UPDATE_STATIC(offtwall)
MCFG_VIDEO_START(offtwall)
diff --git a/src/mame/drivers/ohmygod.c b/src/mame/drivers/ohmygod.c
index 8b7a9dafce9..f89e9d2c23f 100644
--- a/src/mame/drivers/ohmygod.c
+++ b/src/mame/drivers/ohmygod.c
@@ -333,10 +333,9 @@ static MACHINE_CONFIG_START( ohmygod, ohmygod_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ohmygod)
+ MCFG_SCREEN_UPDATE_STATIC(ohmygod)
MCFG_GFXDECODE(ohmygod)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/ojankohs.c b/src/mame/drivers/ojankohs.c
index 48d9944964f..63dc727d58b 100644
--- a/src/mame/drivers/ojankohs.c
+++ b/src/mame/drivers/ojankohs.c
@@ -873,10 +873,9 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(ojankohs)
+ MCFG_SCREEN_UPDATE_STATIC(ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -911,10 +910,9 @@ static MACHINE_CONFIG_START( ojankoy, ojankohs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(ojankohs)
+ MCFG_SCREEN_UPDATE_STATIC(ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -950,10 +948,9 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(ojankohs)
+ MCFG_SCREEN_UPDATE_STATIC(ojankohs)
MCFG_GFXDECODE(ojankohs)
MCFG_PALETTE_LENGTH(1024)
@@ -988,10 +985,9 @@ static MACHINE_CONFIG_START( ojankoc, ojankohs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1)
- MCFG_SCREEN_UPDATE(ojankoc)
+ MCFG_SCREEN_UPDATE_STATIC(ojankoc)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/olibochu.c b/src/mame/drivers/olibochu.c
index fc4ecde1de5..618dbdf46d0 100644
--- a/src/mame/drivers/olibochu.c
+++ b/src/mame/drivers/olibochu.c
@@ -158,7 +158,7 @@ static VIDEO_START( olibochu )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
olibochu_state *state = machine.driver_data<olibochu_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -218,7 +218,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static SCREEN_UPDATE( olibochu )
+static SCREEN_UPDATE_IND16( olibochu )
{
olibochu_state *state = screen.machine().driver_data<olibochu_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -458,10 +458,9 @@ static MACHINE_CONFIG_START( olibochu, olibochu_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(olibochu)
+ MCFG_SCREEN_UPDATE_STATIC(olibochu)
MCFG_GFXDECODE(olibochu)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/omegrace.c b/src/mame/drivers/omegrace.c
index 43a59589be4..8c16f01f685 100644
--- a/src/mame/drivers/omegrace.c
+++ b/src/mame/drivers/omegrace.c
@@ -504,7 +504,7 @@ static MACHINE_CONFIG_START( omegrace, omegrace_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(522, 1566, 522, 1566)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(dvg)
diff --git a/src/mame/drivers/oneshot.c b/src/mame/drivers/oneshot.c
index bb46ac472f7..c0fe2a90e09 100644
--- a/src/mame/drivers/oneshot.c
+++ b/src/mame/drivers/oneshot.c
@@ -390,10 +390,9 @@ static MACHINE_CONFIG_START( oneshot, oneshot_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 20*16-1, 0*16, 15*16-1)
- MCFG_SCREEN_UPDATE(oneshot)
+ MCFG_SCREEN_UPDATE_STATIC(oneshot)
MCFG_GFXDECODE(oneshot)
MCFG_PALETTE_LENGTH(0x400)
@@ -416,7 +415,7 @@ static MACHINE_CONFIG_DERIVED( maddonna, oneshot )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(maddonna) // no crosshair
+ MCFG_SCREEN_UPDATE_STATIC(maddonna) // no crosshair
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/onetwo.c b/src/mame/drivers/onetwo.c
index a2aa53dec97..cab4f851e5c 100644
--- a/src/mame/drivers/onetwo.c
+++ b/src/mame/drivers/onetwo.c
@@ -90,7 +90,7 @@ static VIDEO_START( onetwo )
state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
}
-static SCREEN_UPDATE( onetwo )
+static SCREEN_UPDATE_IND16( onetwo )
{
onetwo_state *state = screen.machine().driver_data<onetwo_state>();
tilemap_draw(bitmap, cliprect, state->m_fg_tilemap, 0, 0);
@@ -369,10 +369,9 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(16))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(onetwo)
+ MCFG_SCREEN_UPDATE_STATIC(onetwo)
MCFG_GFXDECODE(onetwo)
MCFG_PALETTE_LENGTH(0x80)
diff --git a/src/mame/drivers/opwolf.c b/src/mame/drivers/opwolf.c
index be9f393c2e3..6083a040fe2 100644
--- a/src/mame/drivers/opwolf.c
+++ b/src/mame/drivers/opwolf.c
@@ -754,10 +754,9 @@ static MACHINE_CONFIG_START( opwolf, opwolf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(opwolf)
+ MCFG_SCREEN_UPDATE_STATIC(opwolf)
MCFG_GFXDECODE(opwolf)
MCFG_PALETTE_LENGTH(8192)
@@ -809,10 +808,9 @@ static MACHINE_CONFIG_START( opwolfb, opwolf_state ) /* OSC clocks unknown for t
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(opwolf)
+ MCFG_SCREEN_UPDATE_STATIC(opwolf)
MCFG_GFXDECODE(opwolfb)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/orbit.c b/src/mame/drivers/orbit.c
index 3eab46c2f33..f14edd9d865 100644
--- a/src/mame/drivers/orbit.c
+++ b/src/mame/drivers/orbit.c
@@ -312,9 +312,8 @@ static MACHINE_CONFIG_START( orbit, orbit_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2, 384*2, 0, 256*2, 261*2, 0, 240*2)
- MCFG_SCREEN_UPDATE(orbit)
+ MCFG_SCREEN_UPDATE_STATIC(orbit)
MCFG_GFXDECODE(orbit)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/othello.c b/src/mame/drivers/othello.c
index 23f9e4e8a18..03bb78c9c10 100644
--- a/src/mame/drivers/othello.c
+++ b/src/mame/drivers/othello.c
@@ -79,6 +79,7 @@ public:
static MC6845_UPDATE_ROW( update_row )
{
othello_state *state = device->machine().driver_data<othello_state>();
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
int cx, x;
UINT32 data_address;
UINT32 tmp;
@@ -92,7 +93,7 @@ static MC6845_UPDATE_ROW( update_row )
for(x = 0; x < TILE_WIDTH; ++x)
{
- bitmap.pix16(y, (cx * TILE_WIDTH + x) ^ 1) = tmp & 0x0f;
+ bitmap.pix32(y, (cx * TILE_WIDTH + x) ^ 1) = palette[tmp & 0x0f];
tmp >>= 4;
}
}
@@ -116,14 +117,6 @@ static PALETTE_INIT( othello )
palette_set_color(machine, 0x0f, MAKE_RGB(0xff, 0xff, 0xff));
}
-static SCREEN_UPDATE( othello )
-{
- othello_state *state = screen.machine().driver_data<othello_state>();
-
- state->m_mc6845->update(bitmap, cliprect);
- return 0;
-}
-
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x8000, 0x97ff) AM_NOP /* not populated */
@@ -432,10 +425,9 @@ static MACHINE_CONFIG_START( othello, othello_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*6, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*6-1, 0*8, 64*8-1)
- MCFG_SCREEN_UPDATE(othello)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
MCFG_PALETTE_LENGTH(0x10)
MCFG_PALETTE_INIT(othello)
diff --git a/src/mame/drivers/othldrby.c b/src/mame/drivers/othldrby.c
index a2766430879..586d13de9a3 100644
--- a/src/mame/drivers/othldrby.c
+++ b/src/mame/drivers/othldrby.c
@@ -251,10 +251,9 @@ static MACHINE_CONFIG_START( othldrby, othldrby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(othldrby)
+ MCFG_SCREEN_UPDATE_STATIC(othldrby)
MCFG_SCREEN_EOF(othldrby)
MCFG_GFXDECODE(othldrby)
diff --git a/src/mame/drivers/othunder.c b/src/mame/drivers/othunder.c
index 57651b0c7c2..2e5cfe2140e 100644
--- a/src/mame/drivers/othunder.c
+++ b/src/mame/drivers/othunder.c
@@ -735,10 +735,9 @@ static MACHINE_CONFIG_START( othunder, othunder_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(othunder)
+ MCFG_SCREEN_UPDATE_STATIC(othunder)
MCFG_GFXDECODE(othunder)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/overdriv.c b/src/mame/drivers/overdriv.c
index a5780e9acf6..7519f740299 100644
--- a/src/mame/drivers/overdriv.c
+++ b/src/mame/drivers/overdriv.c
@@ -356,10 +356,9 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(overdriv)
+ MCFG_SCREEN_UPDATE_STATIC(overdriv)
// MCFG_GFXDECODE(overdriv)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pachifev.c b/src/mame/drivers/pachifev.c
index 353b312c032..4fe84a785b2 100644
--- a/src/mame/drivers/pachifev.c
+++ b/src/mame/drivers/pachifev.c
@@ -337,14 +337,6 @@ static TMS9928A_INTERFACE(pachifev_tms9928a_interface)
DEVCB_NULL
};
-static SCREEN_UPDATE( pachifev )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
static MACHINE_START( pachifev)
{
pachifev_state *state = machine.driver_data<pachifev_state>();
@@ -376,7 +368,7 @@ static MACHINE_CONFIG_START( pachifev, pachifev_state )
/* video hardware */
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, pachifev_tms9928a_interface )
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( pachifev )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pacland.c b/src/mame/drivers/pacland.c
index d5d90418a60..e0f6163d320 100644
--- a/src/mame/drivers/pacland.c
+++ b/src/mame/drivers/pacland.c
@@ -432,10 +432,9 @@ static MACHINE_CONFIG_START( pacland, pacland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3*8, 39*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pacland)
+ MCFG_SCREEN_UPDATE_STATIC(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 a4d996745d7..3764a1bd1ac 100644
--- a/src/mame/drivers/pacman.c
+++ b/src/mame/drivers/pacman.c
@@ -3167,9 +3167,8 @@ static MACHINE_CONFIG_START( pacman, pacman_state )
MCFG_PALETTE_LENGTH(128*4)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(pacman)
+ MCFG_SCREEN_UPDATE_STATIC(pacman)
MCFG_PALETTE_INIT(pacman)
MCFG_VIDEO_START(pacman)
@@ -3320,7 +3319,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(s2650games)
+ MCFG_SCREEN_UPDATE_STATIC(s2650games)
MCFG_VIDEO_START(s2650games)
diff --git a/src/mame/drivers/pandoras.c b/src/mame/drivers/pandoras.c
index 3da535e52f9..1b025ad32ba 100644
--- a/src/mame/drivers/pandoras.c
+++ b/src/mame/drivers/pandoras.c
@@ -376,10 +376,9 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pandoras)
+ MCFG_SCREEN_UPDATE_STATIC(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 20978b1e191..cc24fb2b258 100644
--- a/src/mame/drivers/panicr.c
+++ b/src/mame/drivers/panicr.c
@@ -215,7 +215,7 @@ static VIDEO_START( panicr )
colortable_configure_tilemap_groups(machine.colortable, state->m_txttilemap, machine.gfx[0], 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
panicr_state *state = machine.driver_data<panicr_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -239,7 +239,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-static SCREEN_UPDATE( panicr)
+static SCREEN_UPDATE_IND16( panicr)
{
panicr_state *state = screen.machine().driver_data<panicr_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -392,10 +392,9 @@ static MACHINE_CONFIG_START( panicr, panicr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(panicr)
+ MCFG_SCREEN_UPDATE_STATIC(panicr)
MCFG_GFXDECODE(panicr)
MCFG_PALETTE_LENGTH(256*3)
diff --git a/src/mame/drivers/paradise.c b/src/mame/drivers/paradise.c
index 0212ae8ea10..8aa71274d0a 100644
--- a/src/mame/drivers/paradise.c
+++ b/src/mame/drivers/paradise.c
@@ -675,10 +675,9 @@ static MACHINE_CONFIG_START( paradise, paradise_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54) /* 54 verified */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* we're using IPT_VBLANK */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-1-16)
- MCFG_SCREEN_UPDATE(paradise)
+ MCFG_SCREEN_UPDATE_STATIC(paradise)
MCFG_GFXDECODE(paradise)
MCFG_PALETTE_LENGTH(0x800 + 16)
@@ -711,7 +710,7 @@ static MACHINE_CONFIG_DERIVED( torus, paradise )
MCFG_GFXDECODE(torus)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(torus)
+ MCFG_SCREEN_UPDATE_STATIC(torus)
MCFG_DEVICE_REMOVE("oki2")
MACHINE_CONFIG_END
@@ -726,7 +725,7 @@ static MACHINE_CONFIG_DERIVED( madball, paradise )
MCFG_GFXDECODE(madball)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(madball)
+ MCFG_SCREEN_UPDATE_STATIC(madball)
MCFG_DEVICE_REMOVE("oki2")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/paranoia.c b/src/mame/drivers/paranoia.c
index 7e9d8f261da..4ec64c66fb4 100644
--- a/src/mame/drivers/paranoia.c
+++ b/src/mame/drivers/paranoia.c
@@ -164,9 +164,8 @@ static MACHINE_CONFIG_START( paranoia, paranoia_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
- MCFG_SCREEN_UPDATE( pce )
+ MCFG_SCREEN_UPDATE_STATIC( pce )
/* MCFG_GFXDECODE( pce_gfxdecodeinfo ) */
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/parodius.c b/src/mame/drivers/parodius.c
index 0076a454bac..a7130d3a375 100644
--- a/src/mame/drivers/parodius.c
+++ b/src/mame/drivers/parodius.c
@@ -316,10 +316,9 @@ static MACHINE_CONFIG_START( parodius, parodius_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(parodius)
+ MCFG_SCREEN_UPDATE_STATIC(parodius)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pasha2.c b/src/mame/drivers/pasha2.c
index 54c4e7bbc6b..54fb67be419 100644
--- a/src/mame/drivers/pasha2.c
+++ b/src/mame/drivers/pasha2.c
@@ -332,7 +332,7 @@ static VIDEO_START( pasha2 )
state->save_item(NAME(state->m_bitmap1));
}
-static SCREEN_UPDATE( pasha2 )
+static SCREEN_UPDATE_IND16( pasha2 )
{
pasha2_state *state = screen.machine().driver_data<pasha2_state>();
int x, y, count;
@@ -413,10 +413,9 @@ static MACHINE_CONFIG_START( pasha2, pasha2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
- MCFG_SCREEN_UPDATE(pasha2)
+ MCFG_SCREEN_UPDATE_STATIC(pasha2)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/pass.c b/src/mame/drivers/pass.c
index 570dc319f2c..c90aee34f7f 100644
--- a/src/mame/drivers/pass.c
+++ b/src/mame/drivers/pass.c
@@ -247,10 +247,9 @@ static MACHINE_CONFIG_START( pass, pass_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pass)
+ MCFG_SCREEN_UPDATE_STATIC(pass)
MCFG_PALETTE_LENGTH(0x200)
MCFG_GFXDECODE(pass)
diff --git a/src/mame/drivers/pastelg.c b/src/mame/drivers/pastelg.c
index 0783616a997..ee83422c94e 100644
--- a/src/mame/drivers/pastelg.c
+++ b/src/mame/drivers/pastelg.c
@@ -422,10 +422,9 @@ static MACHINE_CONFIG_START( pastelg, pastelg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(pastelg)
+ MCFG_SCREEN_UPDATE_STATIC(pastelg)
MCFG_PALETTE_LENGTH(32)
@@ -481,10 +480,9 @@ static MACHINE_CONFIG_START( threeds, pastelg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
- MCFG_SCREEN_UPDATE(pastelg)
+ MCFG_SCREEN_UPDATE_STATIC(pastelg)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/pbaction.c b/src/mame/drivers/pbaction.c
index 20c4e1830f1..8051453a161 100644
--- a/src/mame/drivers/pbaction.c
+++ b/src/mame/drivers/pbaction.c
@@ -302,10 +302,9 @@ static MACHINE_CONFIG_START( pbaction, pbaction_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pbaction)
+ MCFG_SCREEN_UPDATE_STATIC(pbaction)
MCFG_GFXDECODE(pbaction)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/pcktgal.c b/src/mame/drivers/pcktgal.c
index 7c49369150e..67e7127f5d2 100644
--- a/src/mame/drivers/pcktgal.c
+++ b/src/mame/drivers/pcktgal.c
@@ -233,10 +233,9 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pcktgal)
+ MCFG_SCREEN_UPDATE_STATIC(pcktgal)
MCFG_GFXDECODE(pcktgal)
MCFG_PALETTE_LENGTH(512)
@@ -264,7 +263,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bootleg, pcktgal )
MCFG_GFXDECODE(bootleg)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(pcktgalb)
+ MCFG_SCREEN_UPDATE_STATIC(pcktgalb)
MACHINE_CONFIG_END
/***************************************************************************/
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index ee7b13f3e2f..d78bfb82b82 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -93,7 +93,7 @@ public:
device_t *m_dma8237_2;
};
-static SCREEN_UPDATE( tetriskr )
+static SCREEN_UPDATE_RGB32( tetriskr )
{
pcxt_state *state = screen.machine().driver_data<pcxt_state>();
int x,y;
@@ -102,7 +102,7 @@ static SCREEN_UPDATE( tetriskr )
//popmessage("%04x",m_start_offs);
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
+ bitmap.fill(RGB_BLACK, cliprect);
for(y=0;y<200/8;y++)
{
@@ -121,13 +121,13 @@ static SCREEN_UPDATE( tetriskr )
color |= ((bg_rom[y*320/8+x+(pen_i*0x20000)+yi*0x400+state->m_bg_bank*0x2000+1] >> (7-xi)) & 1) << pen_i;
if((x+xi)<screen.visible_area().max_x && ((y)+yi)<screen.visible_area().max_y)
- bitmap.pix16(y*8+yi, x*8+xi) = screen.machine().pens[color];
+ bitmap.pix32(y*8+yi, x*8+xi) = screen.machine().pens[color];
}
}
}
}
- SCREEN_UPDATE_CALL(mc6845_cga);
+ SCREEN_UPDATE32_CALL(mc6845_cga);
return 0;
}
@@ -758,7 +758,7 @@ static MACHINE_CONFIG_DERIVED( tetriskr, filetto )
MCFG_DEVICE_MODIFY("screen")
MCFG_VIDEO_START(pc_cga_superimpose)
- MCFG_SCREEN_UPDATE(tetriskr)
+ MCFG_SCREEN_UPDATE_STATIC(tetriskr)
MCFG_DEVICE_REMOVE("voice")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pengadvb.c b/src/mame/drivers/pengadvb.c
index 5a1758bc6f5..f196b53d613 100644
--- a/src/mame/drivers/pengadvb.c
+++ b/src/mame/drivers/pengadvb.c
@@ -263,14 +263,6 @@ static MACHINE_RESET( pengadvb )
mem_map_banks(machine);
}
-static SCREEN_UPDATE( pengadvb )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
static MACHINE_CONFIG_START( pengadvb, pengadvb_state )
@@ -286,7 +278,7 @@ static MACHINE_CONFIG_START( pengadvb, pengadvb_state )
/* video hardware */
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, pengadvb_tms9928a_interface )
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( pengadvb )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pengo.c b/src/mame/drivers/pengo.c
index 2ffee382ca5..65f11beea1f 100644
--- a/src/mame/drivers/pengo.c
+++ b/src/mame/drivers/pengo.c
@@ -386,9 +386,8 @@ static MACHINE_CONFIG_START( pengo, pengo_state )
MCFG_PALETTE_LENGTH(128*4)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(pacman)
+ MCFG_SCREEN_UPDATE_STATIC(pacman)
MCFG_PALETTE_INIT(pacman)
MCFG_VIDEO_START(pengo)
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index 5a0d6ecda4e..035728fad8f 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -672,7 +672,7 @@ static VIDEO_START( peplus )
memset(state->m_palette_ram2, 0, 0x3000);
}
-static SCREEN_UPDATE( peplus )
+static SCREEN_UPDATE_IND16( peplus )
{
peplus_state *state = screen.machine().driver_data<peplus_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -1037,10 +1037,9 @@ static MACHINE_CONFIG_START( peplus, peplus_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(peplus)
+ MCFG_SCREEN_UPDATE_STATIC(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 aca8cd2a7f0..5f9fc50d3be 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -1151,10 +1151,9 @@ MACHINE_CONFIG_FRAGMENT( pgmbase )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // killing blade won't boot (just displays 'error') if this is lower than 59.9 or higher than 60.1 .. are actual PGM boards different to the Cave one?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pgm)
+ MCFG_SCREEN_UPDATE_STATIC(pgm)
MCFG_SCREEN_EOF(pgm)
MCFG_GFXDECODE(pgm)
@@ -1323,10 +1322,9 @@ static MACHINE_CONFIG_START( cavepgm, cavepgm_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) // verified on pcb
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pgm)
+ MCFG_SCREEN_UPDATE_STATIC(pgm)
MCFG_SCREEN_EOF(pgm)
MCFG_GFXDECODE(pgm)
diff --git a/src/mame/drivers/pgm2.c b/src/mame/drivers/pgm2.c
index 46dc16a5a4f..36ec45bd708 100644
--- a/src/mame/drivers/pgm2.c
+++ b/src/mame/drivers/pgm2.c
@@ -33,7 +33,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( pgm2 )
INPUT_PORTS_END
-static SCREEN_UPDATE(pgm2)
+static SCREEN_UPDATE_IND16(pgm2)
{
return 0;
}
@@ -127,10 +127,9 @@ static MACHINE_CONFIG_START( pgm2, pgm2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pgm2)
+ MCFG_SCREEN_UPDATE_STATIC(pgm2)
MCFG_SCREEN_EOF(pgm2)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c
index 989557024f4..9e9f82a5150 100644
--- a/src/mame/drivers/phoenix.c
+++ b/src/mame/drivers/phoenix.c
@@ -460,9 +460,8 @@ static MACHINE_CONFIG_START( phoenix, phoenix_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(phoenix)
+ MCFG_SCREEN_UPDATE_STATIC(phoenix)
MCFG_GFXDECODE(phoenix)
MCFG_PALETTE_LENGTH(256)
@@ -534,9 +533,8 @@ static MACHINE_CONFIG_START( survival, phoenix_state )
* page is missing
*/
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(phoenix)
+ MCFG_SCREEN_UPDATE_STATIC(phoenix)
MCFG_GFXDECODE(phoenix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/photon.c b/src/mame/drivers/photon.c
index 3e659a075c6..a04dd615b3b 100644
--- a/src/mame/drivers/photon.c
+++ b/src/mame/drivers/photon.c
@@ -197,7 +197,7 @@ static VIDEO_START( photon )
{
}
-static SCREEN_UPDATE( photon )
+static SCREEN_UPDATE_IND16( photon )
{
return pk8000_video_update(screen, bitmap, cliprect, screen.machine().region("maincpu")->base());
}
@@ -216,10 +216,9 @@ static MACHINE_CONFIG_START( photon, photon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256+32, 192+32)
MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
- MCFG_SCREEN_UPDATE(photon)
+ MCFG_SCREEN_UPDATE_STATIC(photon)
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT(pk8000)
diff --git a/src/mame/drivers/photon2.c b/src/mame/drivers/photon2.c
index 3c1df7c7d73..03c572a5270 100644
--- a/src/mame/drivers/photon2.c
+++ b/src/mame/drivers/photon2.c
@@ -111,12 +111,12 @@ static SCREEN_EOF( spectrum )
}
}
-INLINE void spectrum_plot_pixel(bitmap_t &bitmap, int x, int y, UINT32 color)
+INLINE void spectrum_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color)
{
bitmap.pix16(y, x) = (UINT16)color;
}
-static SCREEN_UPDATE( spectrum )
+static SCREEN_UPDATE_IND16( spectrum )
{
photon2_state *state = screen.machine().driver_data<photon2_state>();
/* for now do a full-refresh */
@@ -322,10 +322,9 @@ static MACHINE_CONFIG_START( photon2, photon2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50.08)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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( spectrum )
+ MCFG_SCREEN_UPDATE_STATIC( spectrum )
MCFG_SCREEN_EOF( spectrum )
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/pingpong.c b/src/mame/drivers/pingpong.c
index 9be58f74069..075e3925c4b 100644
--- a/src/mame/drivers/pingpong.c
+++ b/src/mame/drivers/pingpong.c
@@ -461,10 +461,9 @@ static MACHINE_CONFIG_START( pingpong, pingpong_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(456, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pingpong)
+ MCFG_SCREEN_UPDATE_STATIC(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 9f4babacb96..7ce47431dea 100644
--- a/src/mame/drivers/pinkiri8.c
+++ b/src/mame/drivers/pinkiri8.c
@@ -173,7 +173,7 @@ ronjan
*/
-static SCREEN_UPDATE( pinkiri8 )
+static SCREEN_UPDATE_IND16( pinkiri8 )
{
pinkiri8_state *state = screen.machine().driver_data<pinkiri8_state>();
int col_bank;
@@ -1103,10 +1103,9 @@ static MACHINE_CONFIG_START( pinkiri8, pinkiri8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
- MCFG_SCREEN_UPDATE(pinkiri8)
+ MCFG_SCREEN_UPDATE_STATIC(pinkiri8)
MCFG_GFXDECODE(pinkiri8)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/pipedrm.c b/src/mame/drivers/pipedrm.c
index b8af7944127..0fbce0e2799 100644
--- a/src/mame/drivers/pipedrm.c
+++ b/src/mame/drivers/pipedrm.c
@@ -652,10 +652,9 @@ static MACHINE_CONFIG_START( pipedrm, fromance_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(44*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pipedrm)
+ MCFG_SCREEN_UPDATE_STATIC(pipedrm)
MCFG_GFXDECODE(pipedrm)
MCFG_PALETTE_LENGTH(2048)
@@ -692,10 +691,9 @@ static MACHINE_CONFIG_START( hatris, fromance_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(44*8, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(fromance)
+ MCFG_SCREEN_UPDATE_STATIC(fromance)
MCFG_GFXDECODE(hatris)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c
index c6c28a3f1b5..2b9702dd8ed 100644
--- a/src/mame/drivers/pipeline.c
+++ b/src/mame/drivers/pipeline.c
@@ -124,7 +124,7 @@ static VIDEO_START ( pipeline )
tilemap_set_transparent_pen(state->m_tilemap2,0);
}
-static SCREEN_UPDATE( pipeline )
+static SCREEN_UPDATE_IND16( pipeline )
{
pipeline_state *state = screen.machine().driver_data<pipeline_state>();
tilemap_draw(bitmap,cliprect,state->m_tilemap1, 0,0);
@@ -406,10 +406,9 @@ static MACHINE_CONFIG_START( pipeline, pipeline_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 239)
- MCFG_SCREEN_UPDATE(pipeline)
+ MCFG_SCREEN_UPDATE_STATIC(pipeline)
MCFG_GFXDECODE(pipeline)
diff --git a/src/mame/drivers/pirates.c b/src/mame/drivers/pirates.c
index 29b0b01f4cd..794330c6ba3 100644
--- a/src/mame/drivers/pirates.c
+++ b/src/mame/drivers/pirates.c
@@ -273,10 +273,9 @@ static MACHINE_CONFIG_START( pirates, pirates_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pirates)
+ MCFG_SCREEN_UPDATE_STATIC(pirates)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/pitnrun.c b/src/mame/drivers/pitnrun.c
index 7c40a8e66ac..c2eebc32aab 100644
--- a/src/mame/drivers/pitnrun.c
+++ b/src/mame/drivers/pitnrun.c
@@ -250,10 +250,9 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pitnrun)
+ MCFG_SCREEN_UPDATE_STATIC(pitnrun)
MCFG_GFXDECODE(pitnrun)
MCFG_PALETTE_LENGTH(32*3)
diff --git a/src/mame/drivers/pkscram.c b/src/mame/drivers/pkscram.c
index 16fd8e5177f..21b0a2ed0ab 100644
--- a/src/mame/drivers/pkscram.c
+++ b/src/mame/drivers/pkscram.c
@@ -238,7 +238,7 @@ static VIDEO_START( pkscramble )
tilemap_set_transparent_pen(state->m_fg_tilemap,15);
}
-static SCREEN_UPDATE( pkscramble )
+static SCREEN_UPDATE_IND16( pkscramble )
{
pkscram_state *state = screen.machine().driver_data<pkscram_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
@@ -313,10 +313,9 @@ static MACHINE_CONFIG_START( pkscramble, pkscram_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
- MCFG_SCREEN_UPDATE(pkscramble)
+ MCFG_SCREEN_UPDATE_STATIC(pkscramble)
MCFG_PALETTE_LENGTH(0x800)
MCFG_GFXDECODE(pkscram)
diff --git a/src/mame/drivers/pktgaldx.c b/src/mame/drivers/pktgaldx.c
index a2add1a2c35..5632d016377 100644
--- a/src/mame/drivers/pktgaldx.c
+++ b/src/mame/drivers/pktgaldx.c
@@ -334,10 +334,9 @@ static MACHINE_CONFIG_START( pktgaldx, pktgaldx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(pktgaldx)
+ MCFG_SCREEN_UPDATE_STATIC(pktgaldx)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(pktgaldx)
@@ -375,10 +374,9 @@ static MACHINE_CONFIG_START( pktgaldb, pktgaldx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(pktgaldb)
+ MCFG_SCREEN_UPDATE_STATIC(pktgaldb)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(bootleg)
diff --git a/src/mame/drivers/playch10.c b/src/mame/drivers/playch10.c
index ab5ce34d0d7..98c004eba11 100644
--- a/src/mame/drivers/playch10.c
+++ b/src/mame/drivers/playch10.c
@@ -693,18 +693,16 @@ static MACHINE_CONFIG_START( playch10, playch10_state )
MCFG_DEFAULT_LAYOUT(layout_dualhuov)
MCFG_SCREEN_ADD("top", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(playch10_top)
+ MCFG_SCREEN_UPDATE_STATIC(playch10_top)
MCFG_SCREEN_ADD("bottom", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(playch10_bottom)
+ MCFG_SCREEN_UPDATE_STATIC(playch10_bottom)
MCFG_PALETTE_INIT(playch10)
MCFG_VIDEO_START(playch10)
diff --git a/src/mame/drivers/playmark.c b/src/mame/drivers/playmark.c
index 057800b2390..0873483ee1e 100644
--- a/src/mame/drivers/playmark.c
+++ b/src/mame/drivers/playmark.c
@@ -1091,10 +1091,9 @@ static MACHINE_CONFIG_START( bigtwin, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(bigtwin)
+ MCFG_SCREEN_UPDATE_STATIC(bigtwin)
MCFG_GFXDECODE(playmark)
MCFG_PALETTE_LENGTH(1024)
@@ -1126,10 +1125,9 @@ static MACHINE_CONFIG_START( bigtwinb, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(bigtwinb)
+ MCFG_SCREEN_UPDATE_STATIC(bigtwinb)
MCFG_GFXDECODE(bigtwinb)
MCFG_PALETTE_LENGTH(1024)
@@ -1164,10 +1162,9 @@ static MACHINE_CONFIG_START( wbeachvl, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(wbeachvl)
+ MCFG_SCREEN_UPDATE_STATIC(wbeachvl)
MCFG_GFXDECODE(wbeachvl)
MCFG_PALETTE_LENGTH(2048)
@@ -1199,10 +1196,9 @@ static MACHINE_CONFIG_START( excelsr, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(excelsr)
+ MCFG_SCREEN_UPDATE_STATIC(excelsr)
MCFG_GFXDECODE(excelsr)
MCFG_PALETTE_LENGTH(1024)
@@ -1237,10 +1233,9 @@ static MACHINE_CONFIG_START( hotmind, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hrdtimes)
+ MCFG_SCREEN_UPDATE_STATIC(hrdtimes)
MCFG_GFXDECODE(hrdtimes)
MCFG_PALETTE_LENGTH(1024)
@@ -1272,10 +1267,9 @@ static MACHINE_CONFIG_START( hrdtimes, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(hrdtimes)
+ MCFG_SCREEN_UPDATE_STATIC(hrdtimes)
MCFG_GFXDECODE(hrdtimes)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/plygonet.c b/src/mame/drivers/plygonet.c
index bb2c3104980..9c55603def6 100644
--- a/src/mame/drivers/plygonet.c
+++ b/src/mame/drivers/plygonet.c
@@ -658,10 +658,9 @@ static MACHINE_CONFIG_START( plygonet, polygonet_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(64, 64+368-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(polygonet)
+ MCFG_SCREEN_UPDATE_STATIC(polygonet)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/pokechmp.c b/src/mame/drivers/pokechmp.c
index 0a43e9652a0..6780ad5de42 100644
--- a/src/mame/drivers/pokechmp.c
+++ b/src/mame/drivers/pokechmp.c
@@ -237,10 +237,9 @@ static MACHINE_CONFIG_START( pokechmp, pokechmp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pokechmp)
+ MCFG_SCREEN_UPDATE_STATIC(pokechmp)
MCFG_GFXDECODE(pokechmp)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/poker72.c b/src/mame/drivers/poker72.c
index de40572d77f..8cc7b629814 100644
--- a/src/mame/drivers/poker72.c
+++ b/src/mame/drivers/poker72.c
@@ -31,7 +31,7 @@ static VIDEO_START(poker72)
{
}
-static SCREEN_UPDATE(poker72)
+static SCREEN_UPDATE_IND16(poker72)
{
poker72_state *state = screen.machine().driver_data<poker72_state>();
int x,y,count;
@@ -355,10 +355,9 @@ static MACHINE_CONFIG_START( poker72, poker72_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(poker72)
+ MCFG_SCREEN_UPDATE_STATIC(poker72)
MCFG_GFXDECODE(poker72)
MCFG_PALETTE_LENGTH(0xe00)
diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c
index 99017d288de..e2c28cb98c9 100644
--- a/src/mame/drivers/polepos.c
+++ b/src/mame/drivers/polepos.c
@@ -905,9 +905,8 @@ static MACHINE_CONFIG_START( polepos, polepos_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE(polepos)
+ MCFG_SCREEN_UPDATE_STATIC(polepos)
MCFG_GFXDECODE(polepos)
MCFG_PALETTE_LENGTH(0x0f00)
@@ -981,9 +980,8 @@ static MACHINE_CONFIG_START( topracern, polepos_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
- MCFG_SCREEN_UPDATE(polepos)
+ MCFG_SCREEN_UPDATE_STATIC(polepos)
MCFG_GFXDECODE(polepos)
MCFG_PALETTE_LENGTH(0x0f00)
diff --git a/src/mame/drivers/policetr.c b/src/mame/drivers/policetr.c
index 26b27d619fc..39eb702fad9 100644
--- a/src/mame/drivers/policetr.c
+++ b/src/mame/drivers/policetr.c
@@ -429,10 +429,9 @@ static MACHINE_CONFIG_START( policetr, policetr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(400, 262) /* needs to be verified */
MCFG_SCREEN_VISIBLE_AREA(0, 393, 0, 239)
- MCFG_SCREEN_UPDATE(policetr)
+ MCFG_SCREEN_UPDATE_STATIC(policetr)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/polyplay.c b/src/mame/drivers/polyplay.c
index d1405f8fb62..6985a57061f 100644
--- a/src/mame/drivers/polyplay.c
+++ b/src/mame/drivers/polyplay.c
@@ -287,10 +287,9 @@ static MACHINE_CONFIG_START( polyplay, polyplay_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(polyplay)
+ MCFG_SCREEN_UPDATE_STATIC(polyplay)
MCFG_GFXDECODE(polyplay)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/poo.c b/src/mame/drivers/poo.c
index a9b7f199b4b..7951de4d15d 100644
--- a/src/mame/drivers/poo.c
+++ b/src/mame/drivers/poo.c
@@ -63,7 +63,7 @@ static VIDEO_START(unclepoo)
{
}
-static SCREEN_UPDATE(unclepoo)
+static SCREEN_UPDATE_IND16(unclepoo)
{
poo_state *state = screen.machine().driver_data<poo_state>();
int y,x;
@@ -339,10 +339,9 @@ static MACHINE_CONFIG_START( unclepoo, poo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(unclepoo)
+ MCFG_SCREEN_UPDATE_STATIC(unclepoo)
MCFG_GFXDECODE(unclepoo)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/poolshrk.c b/src/mame/drivers/poolshrk.c
index dcf5a23aa71..d4bc67b9bed 100644
--- a/src/mame/drivers/poolshrk.c
+++ b/src/mame/drivers/poolshrk.c
@@ -223,10 +223,9 @@ static MACHINE_CONFIG_START( poolshrk, poolshrk_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1, 255, 24, 255)
- MCFG_SCREEN_UPDATE(poolshrk)
+ MCFG_SCREEN_UPDATE_STATIC(poolshrk)
MCFG_GFXDECODE(poolshrk)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/pooyan.c b/src/mame/drivers/pooyan.c
index 9ed57b935be..01a8a87f4dc 100644
--- a/src/mame/drivers/pooyan.c
+++ b/src/mame/drivers/pooyan.c
@@ -204,10 +204,9 @@ static MACHINE_CONFIG_START( pooyan, pooyan_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pooyan)
+ MCFG_SCREEN_UPDATE_STATIC(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 3502149c05b..3e2c8f8ccbc 100644
--- a/src/mame/drivers/popeye.c
+++ b/src/mame/drivers/popeye.c
@@ -438,10 +438,9 @@ static MACHINE_CONFIG_START( skyskipr, popeye_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
- MCFG_SCREEN_UPDATE(popeye)
+ MCFG_SCREEN_UPDATE_STATIC(popeye)
MCFG_GFXDECODE(popeye)
MCFG_PALETTE_LENGTH(16+16*2+64*4)
diff --git a/src/mame/drivers/popper.c b/src/mame/drivers/popper.c
index 037db1f971e..72899fd8791 100644
--- a/src/mame/drivers/popper.c
+++ b/src/mame/drivers/popper.c
@@ -361,10 +361,9 @@ static MACHINE_CONFIG_START( popper, popper_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(33*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 33*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(popper)
+ MCFG_SCREEN_UPDATE_STATIC(popper)
MCFG_GFXDECODE(popper)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/portrait.c b/src/mame/drivers/portrait.c
index c5062de2778..854dfdfc7a9 100644
--- a/src/mame/drivers/portrait.c
+++ b/src/mame/drivers/portrait.c
@@ -256,10 +256,9 @@ static MACHINE_CONFIG_START( portrait, portrait_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 0*8, 40*8-1)
- MCFG_SCREEN_UPDATE(portrait)
+ MCFG_SCREEN_UPDATE_STATIC(portrait)
MCFG_GFXDECODE(portrait)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/powerbal.c b/src/mame/drivers/powerbal.c
index 1ce9b99d8ad..3334ee9b9af 100644
--- a/src/mame/drivers/powerbal.c
+++ b/src/mame/drivers/powerbal.c
@@ -388,7 +388,7 @@ static TILE_GET_INFO( powerbal_get_bg_tile_info )
SET_TILE_INFO(1, code, colr >> 12, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
playmark_state *state = machine.driver_data<playmark_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -428,7 +428,7 @@ static VIDEO_START( powerbal )
tilemap_set_scrolly(state->m_bg_tilemap, 0, state->m_bg_yoffset);
}
-static SCREEN_UPDATE( powerbal )
+static SCREEN_UPDATE_IND16( powerbal )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
@@ -498,10 +498,9 @@ static MACHINE_CONFIG_START( powerbal, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(61)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(powerbal)
+ MCFG_SCREEN_UPDATE_STATIC(powerbal)
MCFG_GFXDECODE(powerbal)
MCFG_PALETTE_LENGTH(512)
@@ -532,10 +531,9 @@ static MACHINE_CONFIG_START( magicstk, playmark_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(61)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(powerbal)
+ MCFG_SCREEN_UPDATE_STATIC(powerbal)
MCFG_GFXDECODE(powerbal)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/powerins.c b/src/mame/drivers/powerins.c
index 45f393bde73..6887b297b90 100644
--- a/src/mame/drivers/powerins.c
+++ b/src/mame/drivers/powerins.c
@@ -357,10 +357,9 @@ static MACHINE_CONFIG_START( powerins, powerins_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(powerins)
+ MCFG_SCREEN_UPDATE_STATIC(powerins)
MCFG_GFXDECODE(powerins)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/ppmast93.c b/src/mame/drivers/ppmast93.c
index 9b75b7f1ebf..5dec1fbfffb 100644
--- a/src/mame/drivers/ppmast93.c
+++ b/src/mame/drivers/ppmast93.c
@@ -349,7 +349,7 @@ static VIDEO_START( ppmast93 )
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
}
-static SCREEN_UPDATE( ppmast93 )
+static SCREEN_UPDATE_IND16( ppmast93 )
{
ppmast93_state *state = screen.machine().driver_data<ppmast93_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
@@ -373,10 +373,9 @@ static MACHINE_CONFIG_START( ppmast93, ppmast93_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(ppmast93)
+ MCFG_SCREEN_UPDATE_STATIC(ppmast93)
MCFG_GFXDECODE(ppmast93)
diff --git a/src/mame/drivers/prehisle.c b/src/mame/drivers/prehisle.c
index 5a8ee03a166..0f81089bf3b 100644
--- a/src/mame/drivers/prehisle.c
+++ b/src/mame/drivers/prehisle.c
@@ -218,10 +218,9 @@ static MACHINE_CONFIG_START( prehisle, prehisle_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(prehisle)
+ MCFG_SCREEN_UPDATE_STATIC(prehisle)
MCFG_GFXDECODE(prehisle)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/progolf.c b/src/mame/drivers/progolf.c
index 5ffaa0fd31a..79275c7dc01 100644
--- a/src/mame/drivers/progolf.c
+++ b/src/mame/drivers/progolf.c
@@ -87,7 +87,7 @@ static VIDEO_START( progolf )
}
-static SCREEN_UPDATE( progolf )
+static SCREEN_UPDATE_IND16( progolf )
{
progolf_state *state = screen.machine().driver_data<progolf_state>();
UINT8 *videoram = state->m_videoram;
@@ -465,10 +465,9 @@ static MACHINE_CONFIG_START( progolf, progolf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(progolf)
+ MCFG_SCREEN_UPDATE_STATIC(progolf)
MCFG_GFXDECODE(progolf)
MCFG_PALETTE_LENGTH(32*3)
diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c
index 10059476cf1..8a609be6038 100644
--- a/src/mame/drivers/psattack.c
+++ b/src/mame/drivers/psattack.c
@@ -119,7 +119,7 @@ static VIDEO_START(psattack)
}
-static SCREEN_UPDATE(psattack)
+static SCREEN_UPDATE_IND16(psattack)
{
return 0;
}
@@ -181,10 +181,9 @@ static MACHINE_CONFIG_START( psattack, psattack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(psattack)
+ MCFG_SCREEN_UPDATE_STATIC(psattack)
MCFG_SCREEN_EOF(psattack)
MCFG_VIDEO_START(psattack)
diff --git a/src/mame/drivers/psikyo.c b/src/mame/drivers/psikyo.c
index 58faaf2dbaf..e0e23f30198 100644
--- a/src/mame/drivers/psikyo.c
+++ b/src/mame/drivers/psikyo.c
@@ -1078,10 +1078,9 @@ static MACHINE_CONFIG_START( sngkace, psikyo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.3)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE(psikyo)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo)
MCFG_SCREEN_EOF(psikyo)
MCFG_GFXDECODE(psikyo)
@@ -1130,10 +1129,9 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.3)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE(psikyo)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo)
MCFG_SCREEN_EOF(psikyo)
MCFG_GFXDECODE(psikyo)
@@ -1166,10 +1164,9 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.3)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE(psikyo_bootleg)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo_bootleg)
MCFG_SCREEN_EOF(psikyo)
MCFG_GFXDECODE(psikyo)
@@ -1223,10 +1220,9 @@ static MACHINE_CONFIG_START( s1945, psikyo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.90) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
- MCFG_SCREEN_UPDATE(psikyo)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo)
MCFG_SCREEN_EOF(psikyo)
MCFG_GFXDECODE(psikyo)
diff --git a/src/mame/drivers/psikyo4.c b/src/mame/drivers/psikyo4.c
index 91d978ed05c..18f92398298 100644
--- a/src/mame/drivers/psikyo4.c
+++ b/src/mame/drivers/psikyo4.c
@@ -704,20 +704,18 @@ static MACHINE_CONFIG_START( ps4big, psikyo4_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(psikyo4_left)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo4_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(psikyo4_right)
+ MCFG_SCREEN_UPDATE_STATIC(psikyo4_right)
MCFG_VIDEO_START(psikyo4)
diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c
index 7324555e630..1dfb1d1ac9c 100644
--- a/src/mame/drivers/psikyosh.c
+++ b/src/mame/drivers/psikyosh.c
@@ -824,10 +824,9 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE(psikyosh)
+ MCFG_SCREEN_UPDATE_STATIC(psikyosh)
MCFG_SCREEN_EOF(psikyosh)
MCFG_GFXDECODE(psikyosh)
diff --git a/src/mame/drivers/psychic5.c b/src/mame/drivers/psychic5.c
index 2cd6e82d25c..3b6ea0cdc9d 100644
--- a/src/mame/drivers/psychic5.c
+++ b/src/mame/drivers/psychic5.c
@@ -681,10 +681,9 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
MCFG_SCREEN_REFRESH_RATE(53.8)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
/* frames per second hand tuned to match game and music speed */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(psychic5)
+ MCFG_SCREEN_UPDATE_STATIC(psychic5)
MCFG_GFXDECODE(psychic5)
MCFG_PALETTE_LENGTH(768)
@@ -727,10 +726,9 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54) /* Guru says : VSync - 54Hz . HSync - 15.25kHz */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bombsa)
+ MCFG_SCREEN_UPDATE_STATIC(bombsa)
MCFG_GFXDECODE(bombsa)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/pturn.c b/src/mame/drivers/pturn.c
index d931d5bfaf1..a7834169eb2 100644
--- a/src/mame/drivers/pturn.c
+++ b/src/mame/drivers/pturn.c
@@ -146,7 +146,7 @@ static VIDEO_START(pturn)
tilemap_set_transparent_pen(state->m_bgmap,0);
}
-static SCREEN_UPDATE(pturn)
+static SCREEN_UPDATE_IND16(pturn)
{
pturn_state *state = screen.machine().driver_data<pturn_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -489,10 +489,9 @@ static MACHINE_CONFIG_START( pturn, pturn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pturn)
+ MCFG_SCREEN_UPDATE_STATIC(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 661a459419e..70d0fadcc25 100644
--- a/src/mame/drivers/punchout.c
+++ b/src/mame/drivers/punchout.c
@@ -960,20 +960,18 @@ static MACHINE_CONFIG_START( punchout, punchout_state )
MCFG_DEFAULT_LAYOUT(layout_dualhovu)
MCFG_SCREEN_ADD("top", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(punchout_top)
+ MCFG_SCREEN_UPDATE_STATIC(punchout_top)
MCFG_SCREEN_ADD("bottom", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(punchout_bottom)
+ MCFG_SCREEN_UPDATE_STATIC(punchout_bottom)
MCFG_VIDEO_START(punchout)
@@ -1001,9 +999,9 @@ static MACHINE_CONFIG_DERIVED( armwrest, punchout )
MCFG_VIDEO_START(armwrest)
MCFG_SCREEN_MODIFY("top")
- MCFG_SCREEN_UPDATE(armwrest_top)
+ MCFG_SCREEN_UPDATE_STATIC(armwrest_top)
MCFG_SCREEN_MODIFY("bottom")
- MCFG_SCREEN_UPDATE(armwrest_bottom)
+ MCFG_SCREEN_UPDATE_STATIC(armwrest_bottom)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pushman.c b/src/mame/drivers/pushman.c
index 31637c17654..6ab91c8a211 100644
--- a/src/mame/drivers/pushman.c
+++ b/src/mame/drivers/pushman.c
@@ -456,10 +456,9 @@ static MACHINE_CONFIG_START( pushman, pushman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pushman)
+ MCFG_SCREEN_UPDATE_STATIC(pushman)
MCFG_GFXDECODE(pushman)
MCFG_PALETTE_LENGTH(1024)
@@ -506,10 +505,9 @@ static MACHINE_CONFIG_START( bballs, pushman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pushman)
+ MCFG_SCREEN_UPDATE_STATIC(pushman)
MCFG_GFXDECODE(pushman)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/pzletime.c b/src/mame/drivers/pzletime.c
index 223f81f67a9..29c7d0c974b 100644
--- a/src/mame/drivers/pzletime.c
+++ b/src/mame/drivers/pzletime.c
@@ -75,7 +75,7 @@ static VIDEO_START( pzletime )
tilemap_set_transparent_pen(state->m_txt_tilemap, 0);
}
-static SCREEN_UPDATE( pzletime )
+static SCREEN_UPDATE_IND16( pzletime )
{
pzletime_state *state = screen.machine().driver_data<pzletime_state>();
int count;
@@ -322,10 +322,9 @@ static MACHINE_CONFIG_START( pzletime, pzletime_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(pzletime)
+ MCFG_SCREEN_UPDATE_STATIC(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 ed8ff93cf36..d514ddd7172 100644
--- a/src/mame/drivers/qdrmfgp.c
+++ b/src/mame/drivers/qdrmfgp.c
@@ -690,10 +690,9 @@ static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(qdrmfgp)
+ MCFG_SCREEN_UPDATE_STATIC(qdrmfgp)
MCFG_PALETTE_LENGTH(2048)
@@ -728,10 +727,9 @@ static MACHINE_CONFIG_START( qdrmfgp2, qdrmfgp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
- MCFG_SCREEN_UPDATE(qdrmfgp)
+ MCFG_SCREEN_UPDATE_STATIC(qdrmfgp)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/quakeat.c b/src/mame/drivers/quakeat.c
index 31d537943c9..3a3d15eb725 100644
--- a/src/mame/drivers/quakeat.c
+++ b/src/mame/drivers/quakeat.c
@@ -79,7 +79,7 @@ static VIDEO_START(quake)
{
}
-static SCREEN_UPDATE(quake)
+static SCREEN_UPDATE_IND16(quake)
{
return 0;
}
@@ -177,12 +177,11 @@ static MACHINE_CONFIG_START( quake, quakeat_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(quake)
+ MCFG_SCREEN_UPDATE_STATIC(quake)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/quantum.c b/src/mame/drivers/quantum.c
index 8c4691503fa..5e36c15858e 100644
--- a/src/mame/drivers/quantum.c
+++ b/src/mame/drivers/quantum.c
@@ -250,7 +250,7 @@ static MACHINE_CONFIG_START( quantum, quantum_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 900, 0, 600)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_quantum)
diff --git a/src/mame/drivers/quasar.c b/src/mame/drivers/quasar.c
index edffe3253b3..e74638715e3 100644
--- a/src/mame/drivers/quasar.c
+++ b/src/mame/drivers/quasar.c
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( quasar, quasar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50) /* From dot clock */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8+1, 29*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(quasar)
+ MCFG_SCREEN_UPDATE_STATIC(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 f557f1787d6..be7f18f0528 100644
--- a/src/mame/drivers/quizdna.c
+++ b/src/mame/drivers/quizdna.c
@@ -453,10 +453,9 @@ static MACHINE_CONFIG_START( quizdna, quizdna_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(quizdna)
+ MCFG_SCREEN_UPDATE_STATIC(quizdna)
MCFG_GFXDECODE(quizdna)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/quizo.c b/src/mame/drivers/quizo.c
index f665c1e8452..7d93fee96da 100644
--- a/src/mame/drivers/quizo.c
+++ b/src/mame/drivers/quizo.c
@@ -73,7 +73,7 @@ static PALETTE_INIT(quizo)
}
}
-static SCREEN_UPDATE( quizo )
+static SCREEN_UPDATE_IND16( quizo )
{
quizo_state *state = screen.machine().driver_data<quizo_state>();
UINT8 *videoram = state->m_videoram;
@@ -211,10 +211,9 @@ static MACHINE_CONFIG_START( quizo, quizo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 200)
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1)
- MCFG_SCREEN_UPDATE(quizo)
+ MCFG_SCREEN_UPDATE_STATIC(quizo)
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT(quizo)
diff --git a/src/mame/drivers/quizpani.c b/src/mame/drivers/quizpani.c
index 1247c82cf70..4e668b3678b 100644
--- a/src/mame/drivers/quizpani.c
+++ b/src/mame/drivers/quizpani.c
@@ -206,10 +206,9 @@ static MACHINE_CONFIG_START( quizpani, quizpani_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(quizpani)
+ MCFG_SCREEN_UPDATE_STATIC(quizpani)
MCFG_VIDEO_START(quizpani)
diff --git a/src/mame/drivers/quizpun2.c b/src/mame/drivers/quizpun2.c
index c0cb9a8c19c..70d6d5ee93c 100644
--- a/src/mame/drivers/quizpun2.c
+++ b/src/mame/drivers/quizpun2.c
@@ -147,7 +147,7 @@ static VIDEO_START(quizpun2)
tilemap_set_transparent_pen(state->m_fg_tmap, 0);
}
-static SCREEN_UPDATE(quizpun2)
+static SCREEN_UPDATE_IND16(quizpun2)
{
quizpun2_state *state = screen.machine().driver_data<quizpun2_state>();
int layers_ctrl = -1;
@@ -497,10 +497,9 @@ static MACHINE_CONFIG_START( quizpun2, quizpun2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(quizpun2)
+ MCFG_SCREEN_UPDATE_STATIC(quizpun2)
MCFG_GFXDECODE(quizpun2)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/r2dtank.c b/src/mame/drivers/r2dtank.c
index 2fc0c4e3922..bb8dfbe137e 100644
--- a/src/mame/drivers/r2dtank.c
+++ b/src/mame/drivers/r2dtank.c
@@ -397,15 +397,6 @@ static const mc6845_interface mc6845_intf =
};
-static SCREEN_UPDATE( r2dtank )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
/*************************************
*
@@ -543,9 +534,8 @@ static MACHINE_CONFIG_START( r2dtank, r2dtank_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(r2dtank)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/r2dx_v33.c b/src/mame/drivers/r2dx_v33.c
index 4797bbab438..232d84d19b0 100644
--- a/src/mame/drivers/r2dx_v33.c
+++ b/src/mame/drivers/r2dx_v33.c
@@ -80,7 +80,7 @@ static TILE_GET_INFO( get_tx_tile_info )
}
/* copied from Legionnaire */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int pri)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri)
{
r2dx_v33_state *state = machine.driver_data<r2dx_v33_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -179,7 +179,7 @@ static VIDEO_START( rdx_v33 )
tilemap_set_transparent_pen(tx_tilemap, 15);
}
-static SCREEN_UPDATE( rdx_v33 )
+static SCREEN_UPDATE_IND16( rdx_v33 )
{
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -667,10 +667,9 @@ static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rdx_v33)
+ MCFG_SCREEN_UPDATE_STATIC(rdx_v33)
MCFG_GFXDECODE(rdx_v33)
MCFG_PALETTE_LENGTH(2048)
@@ -702,10 +701,9 @@ static MACHINE_CONFIG_START( nzerotea, r2dx_v33_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(rdx_v33)
+ MCFG_SCREEN_UPDATE_STATIC(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 4d98473ea5e..7640e8ea5e6 100644
--- a/src/mame/drivers/rabbit.c
+++ b/src/mame/drivers/rabbit.c
@@ -103,7 +103,7 @@ public:
UINT32 *m_tilemap_regs[4];
UINT32 *m_spriteregs;
UINT32 *m_blitterregs;
- bitmap_t *m_sprite_bitmap;
+ bitmap_ind16 *m_sprite_bitmap;
rectangle m_sprite_clip;
int m_vblirqlevel;
int m_bltirqlevel;
@@ -230,7 +230,7 @@ sprites invisible at the end of a round in rabbit, why?
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
rabbit_state *state = machine.driver_data<rabbit_state>();
int xpos,ypos,tileno,xflip,yflip, colr;
@@ -269,7 +269,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
/* the sprite bitmap can probably be handled better than this ... */
-static void rabbit_clearspritebitmap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void rabbit_clearspritebitmap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
rabbit_state *state = machine.driver_data<rabbit_state>();
int startx, starty;
@@ -297,7 +297,7 @@ static void rabbit_clearspritebitmap( running_machine &machine, bitmap_t &bitmap
}
/* todo: fix zoom, its inaccurate and this code is ugly */
-static void draw_sprite_bitmap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprite_bitmap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
rabbit_state *state = machine.driver_data<rabbit_state>();
@@ -376,7 +376,7 @@ static VIDEO_START(rabbit)
tilemap_map_pen_to_layer(state->m_tilemap[3], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
tilemap_map_pen_to_layer(state->m_tilemap[3], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
- state->m_sprite_bitmap = auto_bitmap_alloc(machine,0x1000,0x1000,machine.primary_screen->format());
+ state->m_sprite_bitmap = auto_bitmap_ind16_alloc(machine,0x1000,0x1000);
state->m_sprite_clip.min_x = 0;
state->m_sprite_clip.max_x = 0x1000-1;
state->m_sprite_clip.min_y = 0;
@@ -405,7 +405,7 @@ each line represents the differences on each tilemap for unknown variables
*/
-static void rabbit_drawtilemap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int whichtilemap )
+static void rabbit_drawtilemap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int whichtilemap )
{
rabbit_state *state = machine.driver_data<rabbit_state>();
INT32 startx, starty, incxx, incxy, incyx, incyy, tran;
@@ -429,7 +429,7 @@ static void rabbit_drawtilemap( running_machine &machine, bitmap_t &bitmap, cons
tran ? 0 : TILEMAP_DRAW_OPAQUE,0);
}
-static SCREEN_UPDATE(rabbit)
+static SCREEN_UPDATE_IND16(rabbit)
{
rabbit_state *state = screen.machine().driver_data<rabbit_state>();
int prilevel;
@@ -964,12 +964,11 @@ static MACHINE_CONFIG_START( rabbit, rabbit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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*16, 64*16-1)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 20*16-1, 32*16, 48*16-1)
- MCFG_SCREEN_UPDATE(rabbit)
+ MCFG_SCREEN_UPDATE_STATIC(rabbit)
MCFG_PALETTE_LENGTH(0x4000)
MCFG_PALETTE_INIT( all_black ) // the status bar palette doesn't get transfered (or our colour select is wrong).. more obvious when it's black than in 'MAME default' colours
diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c
index 43a3359993a..33ec54b9ce1 100644
--- a/src/mame/drivers/raiden.c
+++ b/src/mame/drivers/raiden.c
@@ -271,10 +271,9 @@ static MACHINE_CONFIG_START( raiden, raiden_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.60) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(raiden)
+ MCFG_SCREEN_UPDATE_STATIC(raiden)
MCFG_SCREEN_EOF(raiden)
MCFG_GFXDECODE(raiden)
diff --git a/src/mame/drivers/raiden2.c b/src/mame/drivers/raiden2.c
index a2990ee520c..b5a48814fc6 100644
--- a/src/mame/drivers/raiden2.c
+++ b/src/mame/drivers/raiden2.c
@@ -629,7 +629,7 @@ static void combine32(UINT32 *val, int offset, UINT16 data, UINT16 mem_mask)
/* SPRITE DRAWING (move to video file) */
-void raiden2_state::draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect ,int pri_mask )
+void raiden2_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ,int pri_mask )
{
UINT16 *source = sprites + sprites_cur_start/2 - 4;
@@ -884,9 +884,9 @@ static VIDEO_START( raiden2 )
tilemap_set_transparent_pen(state->text_layer, 15);
}
-/* SCREEN_UPDATE (move to video file) */
+/* SCREEN_UPDATE_IND16 (move to video file) */
-static SCREEN_UPDATE( raiden2 )
+static SCREEN_UPDATE_IND16( raiden2 )
{
raiden2_state *state = screen.machine().driver_data<raiden2_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -1665,10 +1665,9 @@ static MACHINE_CONFIG_START( raiden2, raiden2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE(raiden2)
+ MCFG_SCREEN_UPDATE_STATIC(raiden2)
MCFG_GFXDECODE(raiden2)
MCFG_PALETTE_LENGTH(2048)
@@ -1722,10 +1721,9 @@ static MACHINE_CONFIG_START( zeroteam, raiden2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
- MCFG_SCREEN_UPDATE(raiden2)
+ MCFG_SCREEN_UPDATE_STATIC(raiden2)
MCFG_GFXDECODE(raiden2)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/rainbow.c b/src/mame/drivers/rainbow.c
index fcbaf6d6955..12f3cdb50bf 100644
--- a/src/mame/drivers/rainbow.c
+++ b/src/mame/drivers/rainbow.c
@@ -692,10 +692,9 @@ static MACHINE_CONFIG_START( rbisland, rbisland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rbisland)
+ MCFG_SCREEN_UPDATE_STATIC(rainbow)
MCFG_GFXDECODE(rbisland)
MCFG_PALETTE_LENGTH(8192)
@@ -734,10 +733,9 @@ static MACHINE_CONFIG_START( jumping, rbisland_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jumping)
+ MCFG_SCREEN_UPDATE_STATIC(jumping)
MCFG_GFXDECODE(jumping)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/rallyx.c b/src/mame/drivers/rallyx.c
index 3c3f6ae929d..75e6cf50ea0 100644
--- a/src/mame/drivers/rallyx.c
+++ b/src/mame/drivers/rallyx.c
@@ -927,10 +927,9 @@ static MACHINE_CONFIG_START( rallyx, rallyx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rallyx)
+ MCFG_SCREEN_UPDATE_STATIC(rallyx)
MCFG_GFXDECODE(rallyx)
MCFG_PALETTE_LENGTH(64*4+4)
@@ -967,10 +966,9 @@ static MACHINE_CONFIG_START( jungler, rallyx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jungler)
+ MCFG_SCREEN_UPDATE_STATIC(jungler)
MCFG_GFXDECODE(jungler)
MCFG_PALETTE_LENGTH(64*4+4+64)
@@ -990,7 +988,7 @@ static MACHINE_CONFIG_DERIVED( tactcian, jungler )
/* video hardware */
MCFG_VIDEO_START(locomotn)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(locomotn)
+ MCFG_SCREEN_UPDATE_STATIC(locomotn)
MACHINE_CONFIG_END
@@ -1001,7 +999,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(locomotn)
+ MCFG_SCREEN_UPDATE_STATIC(locomotn)
MCFG_VIDEO_START(locomotn)
MACHINE_CONFIG_END
@@ -1013,7 +1011,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(locomotn)
+ MCFG_SCREEN_UPDATE_STATIC(locomotn)
MCFG_VIDEO_START(commsega)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rampart.c b/src/mame/drivers/rampart.c
index 39d445bf0b7..1d80338473d 100644
--- a/src/mame/drivers/rampart.c
+++ b/src/mame/drivers/rampart.c
@@ -360,11 +360,10 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
MCFG_PALETTE_LENGTH(512)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(rampart)
+ MCFG_SCREEN_UPDATE_STATIC(rampart)
MCFG_VIDEO_START(rampart)
diff --git a/src/mame/drivers/rastan.c b/src/mame/drivers/rastan.c
index 86b825f7a3c..435d103882e 100644
--- a/src/mame/drivers/rastan.c
+++ b/src/mame/drivers/rastan.c
@@ -428,10 +428,9 @@ static MACHINE_CONFIG_START( rastan, rastan_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(rastan)
+ MCFG_SCREEN_UPDATE_STATIC(rastan)
MCFG_GFXDECODE(rastan)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/rbmk.c b/src/mame/drivers/rbmk.c
index 9d89d99bd17..4d8bc0ad749 100644
--- a/src/mame/drivers/rbmk.c
+++ b/src/mame/drivers/rbmk.c
@@ -491,7 +491,7 @@ static VIDEO_START(rbmk)
{
}
-static SCREEN_UPDATE(rbmk)
+static SCREEN_UPDATE_IND16(rbmk)
{
rbmk_state *state = screen.machine().driver_data<rbmk_state>();
int x,y;
@@ -542,10 +542,9 @@ static MACHINE_CONFIG_START( rbmk, rbmk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(rbmk)
+ MCFG_SCREEN_UPDATE_STATIC(rbmk)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/rcorsair.c b/src/mame/drivers/rcorsair.c
index b8762ed8d14..c0a197668c1 100644
--- a/src/mame/drivers/rcorsair.c
+++ b/src/mame/drivers/rcorsair.c
@@ -60,6 +60,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -67,7 +69,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -122,7 +123,7 @@ void rcorsair_state::video_start()
{
}
-bool rcorsair_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 rcorsair_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
@@ -140,7 +141,7 @@ static MACHINE_CONFIG_START( rcorsair, rcorsair_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(rcorsair_state, screen_update)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
diff --git a/src/mame/drivers/re900.c b/src/mame/drivers/re900.c
index 6e9eaca9863..89e1653cf78 100644
--- a/src/mame/drivers/re900.c
+++ b/src/mame/drivers/re900.c
@@ -370,14 +370,6 @@ static TMS9928A_INTERFACE(re900_tms9928a_interface)
DEVCB_LINE(vdp_interrupt)
};
-static SCREEN_UPDATE( re900 )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9128" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
/*************************
* AY8910 Interfase *
@@ -417,7 +409,7 @@ static MACHINE_CONFIG_START( re900, re900_state )
/* video hardware */
MCFG_TMS9928A_ADD( "tms9128", TMS9128, re900_tms9928a_interface ) /* TMS9128NL on pcb */
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( re900 )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9128", tms9128_device, screen_update )
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/realbrk.c b/src/mame/drivers/realbrk.c
index f3d9fe318d6..9d8279d7477 100644
--- a/src/mame/drivers/realbrk.c
+++ b/src/mame/drivers/realbrk.c
@@ -684,10 +684,9 @@ static MACHINE_CONFIG_START( realbrk, realbrk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(realbrk)
+ MCFG_SCREEN_UPDATE_STATIC(realbrk)
MCFG_GFXDECODE(realbrk)
MCFG_PALETTE_LENGTH(0x8000)
@@ -722,7 +721,7 @@ static MACHINE_CONFIG_DERIVED( dai2kaku, realbrk )
MCFG_GFXDECODE(dai2kaku)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(dai2kaku)
+ MCFG_SCREEN_UPDATE_STATIC(dai2kaku)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/redclash.c b/src/mame/drivers/redclash.c
index 10d43eac0fa..bbceee1f7bf 100644
--- a/src/mame/drivers/redclash.c
+++ b/src/mame/drivers/redclash.c
@@ -367,10 +367,9 @@ static MACHINE_CONFIG_START( zerohour, ladybug_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(redclash)
+ MCFG_SCREEN_UPDATE_STATIC(redclash)
MCFG_SCREEN_EOF(redclash)
MCFG_GFXDECODE(redclash)
@@ -396,10 +395,9 @@ static MACHINE_CONFIG_START( redclash, ladybug_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(redclash)
+ MCFG_SCREEN_UPDATE_STATIC(redclash)
MCFG_SCREEN_EOF(redclash)
MCFG_GFXDECODE(redclash)
diff --git a/src/mame/drivers/relief.c b/src/mame/drivers/relief.c
index c3104aa80b2..d8a7324f2a8 100644
--- a/src/mame/drivers/relief.c
+++ b/src/mame/drivers/relief.c
@@ -310,11 +310,10 @@ static MACHINE_CONFIG_START( relief, relief_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(relief)
+ MCFG_SCREEN_UPDATE_STATIC(relief)
MCFG_VIDEO_START(relief)
diff --git a/src/mame/drivers/renegade.c b/src/mame/drivers/renegade.c
index f90c9b27875..0ea66532875 100644
--- a/src/mame/drivers/renegade.c
+++ b/src/mame/drivers/renegade.c
@@ -931,10 +931,9 @@ static MACHINE_CONFIG_START( renegade, renegade_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)*2) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0, 30*8-1)
- MCFG_SCREEN_UPDATE(renegade)
+ MCFG_SCREEN_UPDATE_STATIC(renegade)
MCFG_GFXDECODE(renegade)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/retofinv.c b/src/mame/drivers/retofinv.c
index d050f215937..ec38432e666 100644
--- a/src/mame/drivers/retofinv.c
+++ b/src/mame/drivers/retofinv.c
@@ -372,10 +372,9 @@ static MACHINE_CONFIG_START( retofinv, retofinv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(retofinv)
+ MCFG_SCREEN_UPDATE_STATIC(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 e20c9e9cdf8..fd650c222ba 100644
--- a/src/mame/drivers/rgum.c
+++ b/src/mame/drivers/rgum.c
@@ -35,7 +35,7 @@ static VIDEO_START(royalgum)
{
}
-static SCREEN_UPDATE(royalgum)
+static SCREEN_UPDATE_IND16(royalgum)
{
rgum_state *state = screen.machine().driver_data<rgum_state>();
int x,y,count;
@@ -270,10 +270,9 @@ static MACHINE_CONFIG_START( rgum, rgum_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(royalgum)
+ MCFG_SCREEN_UPDATE_STATIC(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 4458f63e195..05e481461ac 100644
--- a/src/mame/drivers/rltennis.c
+++ b/src/mame/drivers/rltennis.c
@@ -194,11 +194,10 @@ static MACHINE_CONFIG_START( rltennis, rltennis_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( RLT_REFRESH_RATE )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0,319, 0, 239)
- MCFG_SCREEN_UPDATE(rltennis)
+ MCFG_SCREEN_UPDATE_STATIC(rltennis)
MCFG_PALETTE_LENGTH(256)
MCFG_MACHINE_START( rltennis )
diff --git a/src/mame/drivers/rmhaihai.c b/src/mame/drivers/rmhaihai.c
index 25d0c009a89..4bf5451bf2f 100644
--- a/src/mame/drivers/rmhaihai.c
+++ b/src/mame/drivers/rmhaihai.c
@@ -80,7 +80,7 @@ static VIDEO_START( rmhaihai )
8, 8, 64, 32);
}
-static SCREEN_UPDATE( rmhaihai )
+static SCREEN_UPDATE_IND16( rmhaihai )
{
rmhaihai_state *state = screen.machine().driver_data<rmhaihai_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -467,10 +467,9 @@ static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rmhaihai)
+ MCFG_SCREEN_UPDATE_STATIC(rmhaihai)
MCFG_GFXDECODE(rmhaihai)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/rockrage.c b/src/mame/drivers/rockrage.c
index 7f1c5cd3ad2..ab533de1a6a 100644
--- a/src/mame/drivers/rockrage.c
+++ b/src/mame/drivers/rockrage.c
@@ -280,10 +280,9 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rockrage)
+ MCFG_SCREEN_UPDATE_STATIC(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 2cc13aa2a74..dc40ca49800 100644
--- a/src/mame/drivers/rocnrope.c
+++ b/src/mame/drivers/rocnrope.c
@@ -210,10 +210,9 @@ static MACHINE_CONFIG_START( rocnrope, rocnrope_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rocnrope)
+ MCFG_SCREEN_UPDATE_STATIC(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 b778e588cb9..cfc19afae6f 100644
--- a/src/mame/drivers/rohga.c
+++ b/src/mame/drivers/rohga.c
@@ -815,10 +815,9 @@ static MACHINE_CONFIG_START( rohga, rohga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(rohga)
+ MCFG_SCREEN_UPDATE_STATIC(rohga)
MCFG_GFXDECODE(rohga)
MCFG_PALETTE_LENGTH(2048)
@@ -863,10 +862,9 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(wizdfire)
+ MCFG_SCREEN_UPDATE_STATIC(wizdfire)
MCFG_GFXDECODE(wizdfire)
MCFG_PALETTE_LENGTH(2048)
@@ -909,10 +907,9 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(nitrobal)
+ MCFG_SCREEN_UPDATE_STATIC(nitrobal)
MCFG_GFXDECODE(wizdfire)
MCFG_PALETTE_LENGTH(2048)
@@ -955,10 +952,9 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(schmeisr)
+ MCFG_SCREEN_UPDATE_STATIC(schmeisr)
MCFG_GFXDECODE(schmeisr)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/rollerg.c b/src/mame/drivers/rollerg.c
index 4432c3839d9..632dcc2b1a6 100644
--- a/src/mame/drivers/rollerg.c
+++ b/src/mame/drivers/rollerg.c
@@ -296,10 +296,9 @@ static MACHINE_CONFIG_START( rollerg, rollerg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(rollerg)
+ MCFG_SCREEN_UPDATE_STATIC(rollerg)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/rollrace.c b/src/mame/drivers/rollrace.c
index c48669aa501..7bb7710a3dd 100644
--- a/src/mame/drivers/rollrace.c
+++ b/src/mame/drivers/rollrace.c
@@ -241,10 +241,9 @@ static MACHINE_CONFIG_START( rollrace, rollrace_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(16,255,16, 255-16)
- MCFG_SCREEN_UPDATE(rollrace)
+ MCFG_SCREEN_UPDATE_STATIC(rollrace)
MCFG_GFXDECODE(rollrace)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/rotaryf.c b/src/mame/drivers/rotaryf.c
index fab9a539f3a..354d8168f82 100644
--- a/src/mame/drivers/rotaryf.c
+++ b/src/mame/drivers/rotaryf.c
@@ -63,7 +63,7 @@ static TIMER_DEVICE_CALLBACK( rotaryf_interrupt )
*
*************************************/
-static SCREEN_UPDATE( rotaryf )
+static SCREEN_UPDATE_RGB32( rotaryf )
{
rotaryf_state *state = screen.machine().driver_data<rotaryf_state>();
offs_t offs;
@@ -177,11 +177,10 @@ static MACHINE_CONFIG_START( rotaryf, rotaryf_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(rotaryf)
+ MCFG_SCREEN_UPDATE_STATIC(rotaryf)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/roul.c b/src/mame/drivers/roul.c
index 60af6b180ff..518fbf8eb4f 100644
--- a/src/mame/drivers/roul.c
+++ b/src/mame/drivers/roul.c
@@ -210,7 +210,7 @@ static VIDEO_START(roul)
state->m_videobuf = auto_alloc_array_clear(machine, UINT8, VIDEOBUF_SIZE);
}
-static SCREEN_UPDATE(roul)
+static SCREEN_UPDATE_IND16(roul)
{
roul_state *state = screen.machine().driver_data<roul_state>();
int i,j;
@@ -287,12 +287,11 @@ static MACHINE_CONFIG_START( roul, roul_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(roul)
+ MCFG_SCREEN_UPDATE_STATIC(roul)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/route16.c b/src/mame/drivers/route16.c
index 6109fb4a5e1..82323276f7b 100644
--- a/src/mame/drivers/route16.c
+++ b/src/mame/drivers/route16.c
@@ -614,12 +614,11 @@ static MACHINE_CONFIG_START( route16, route16_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
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(route16)
+ MCFG_SCREEN_UPDATE_STATIC(route16)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -647,7 +646,7 @@ static MACHINE_CONFIG_DERIVED( stratvox, route16 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(stratvox)
+ MCFG_SCREEN_UPDATE_STATIC(stratvox)
/* sound hardware */
MCFG_SOUND_MODIFY("ay8910")
@@ -686,7 +685,7 @@ static MACHINE_CONFIG_DERIVED( ttmahjng, route16 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ttmahjng)
+ MCFG_SCREEN_UPDATE_STATIC(ttmahjng)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c
index ead93b8a1eb..094407032c3 100644
--- a/src/mame/drivers/royalmah.c
+++ b/src/mame/drivers/royalmah.c
@@ -212,7 +212,7 @@ static WRITE8_HANDLER( mjderngr_palbank_w )
}
-static SCREEN_UPDATE( royalmah )
+static SCREEN_UPDATE_IND16( royalmah )
{
royalmah_state *state = screen.machine().driver_data<royalmah_state>();
UINT8 *videoram = state->m_videoram;
@@ -3153,12 +3153,11 @@ static MACHINE_CONFIG_START( royalmah, royalmah_state )
MCFG_PALETTE_INIT(royalmah)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 247)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE(royalmah)
+ MCFG_SCREEN_UPDATE_STATIC(royalmah)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rpunch.c b/src/mame/drivers/rpunch.c
index 7b1c499ae28..aab4234ffe7 100644
--- a/src/mame/drivers/rpunch.c
+++ b/src/mame/drivers/rpunch.c
@@ -476,10 +476,9 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(304, 224)
MCFG_SCREEN_VISIBLE_AREA(8, 303-8, 0, 223-8)
- MCFG_SCREEN_UPDATE(rpunch)
+ MCFG_SCREEN_UPDATE_STATIC(rpunch)
MCFG_GFXDECODE(rpunch)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/runaway.c b/src/mame/drivers/runaway.c
index 09be1d4e7ad..8ad81d0b53d 100644
--- a/src/mame/drivers/runaway.c
+++ b/src/mame/drivers/runaway.c
@@ -361,10 +361,9 @@ static MACHINE_CONFIG_START( runaway, runaway_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(runaway)
+ MCFG_SCREEN_UPDATE_STATIC(runaway)
MCFG_GFXDECODE(runaway)
MCFG_PALETTE_LENGTH(16)
@@ -393,7 +392,7 @@ static MACHINE_CONFIG_DERIVED( qwak, runaway )
MCFG_VIDEO_START(qwak)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(qwak)
+ MCFG_SCREEN_UPDATE_STATIC(qwak)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c
index 79f35e2d3fc..1a39afc2f15 100644
--- a/src/mame/drivers/rungun.c
+++ b/src/mame/drivers/rungun.c
@@ -429,10 +429,9 @@ static MACHINE_CONFIG_START( rng, rungun_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(88, 88+384-1, 24, 24+224-1)
- MCFG_SCREEN_UPDATE(rng)
+ MCFG_SCREEN_UPDATE_STATIC(rng)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/safarir.c b/src/mame/drivers/safarir.c
index 31f7edabfff..b6feaabd429 100644
--- a/src/mame/drivers/safarir.c
+++ b/src/mame/drivers/safarir.c
@@ -194,7 +194,7 @@ static VIDEO_START( safarir )
}
-static SCREEN_UPDATE( safarir )
+static SCREEN_UPDATE_IND16( safarir )
{
safarir_state *state = screen.machine().driver_data<safarir_state>();
@@ -412,11 +412,10 @@ static MACHINE_CONFIG_START( safarir, safarir_state )
MCFG_GFXDECODE(safarir)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(safarir)
+ MCFG_SCREEN_UPDATE_STATIC(safarir)
/* audio hardware */
MCFG_FRAGMENT_ADD(safarir_audio)
diff --git a/src/mame/drivers/sandscrp.c b/src/mame/drivers/sandscrp.c
index 5cc87d518ea..913ad3af47b 100644
--- a/src/mame/drivers/sandscrp.c
+++ b/src/mame/drivers/sandscrp.c
@@ -480,10 +480,9 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME( ATTOSECONDS_IN_USEC(2500) /* not accurate */ )
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(sandscrp)
+ MCFG_SCREEN_UPDATE_STATIC(sandscrp)
MCFG_SCREEN_EOF(sandscrp)
MCFG_GFXDECODE(sandscrp)
diff --git a/src/mame/drivers/sangho.c b/src/mame/drivers/sangho.c
index dded8d6dbcb..272fae08630 100644
--- a/src/mame/drivers/sangho.c
+++ b/src/mame/drivers/sangho.c
@@ -46,12 +46,14 @@ class sangho_state : public driver_device
{
public:
sangho_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938") { }
UINT8* m_ram;
UINT8 m_sexyboom_bank[8];
UINT8 m_pzlestar_mem_bank;
UINT8 m_pzlestar_rom_bank;
+ required_device<v9938_device> m_v9938;
};
@@ -235,10 +237,7 @@ static ADDRESS_MAP_START( pzlestar_io_map, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ymsnd", ym2413_w )
AM_RANGE( 0x91, 0x91) AM_WRITE( pzlestar_bank_w )
- AM_RANGE( 0x98, 0x98) AM_READWRITE( v9938_0_vram_r, v9938_0_vram_w )
- AM_RANGE( 0x99, 0x99) AM_READWRITE( v9938_0_status_r, v9938_0_command_w )
- AM_RANGE( 0x9a, 0x9a) AM_WRITE( v9938_0_palette_w )
- AM_RANGE( 0x9b, 0x9b) AM_WRITE( v9938_0_register_w )
+ AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE_MODERN("v9938", v9938_device, read, write )
AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1")
AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2")
AM_RANGE( 0xa8, 0xa8) AM_READWRITE( pzlestar_mem_bank_r, pzlestar_mem_bank_w )
@@ -252,10 +251,7 @@ static ADDRESS_MAP_START( sexyboom_io_map, AS_IO, 8 )
AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ymsnd", ym2413_w )
AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1")
AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2")
- AM_RANGE( 0xf0, 0xf0) AM_READWRITE( v9938_0_vram_r,v9938_0_vram_w )
- AM_RANGE( 0xf1, 0xf1) AM_READWRITE( v9938_0_status_r,v9938_0_command_w )
- AM_RANGE( 0xf2, 0xf2) AM_WRITE( v9938_0_palette_w )
- AM_RANGE( 0xf3, 0xf3) AM_WRITE( v9938_0_register_w )
+ AM_RANGE( 0xf0, 0xf3) AM_DEVREADWRITE_MODERN("v9938", v9938_device, read, write )
AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW")
AM_RANGE( 0xf8, 0xff) AM_WRITE( sexyboom_bank_w )
ADDRESS_MAP_END
@@ -325,8 +321,6 @@ static MACHINE_RESET(pzlestar)
sangho_state *state = machine.driver_data<sangho_state>();
state->m_pzlestar_mem_bank = 2;
pzlestar_map_banks(machine);
-
- v9938_reset(0);
}
static MACHINE_RESET(sexyboom)
@@ -344,33 +338,27 @@ static MACHINE_RESET(sexyboom)
sexyboom_map_bank(machine, 1);
sexyboom_map_bank(machine, 2);
sexyboom_map_bank(machine, 3);
-
- v9938_reset(0);
}
-static void msx_vdp_interrupt(running_machine &machine, int i)
+static void msx_vdp_interrupt(device_t *, v99x8_device &device, int i)
{
- cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
+ cputag_set_input_line (device.machine(), "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
}
static TIMER_DEVICE_CALLBACK( sangho_interrupt )
{
+ sangho_state *state = timer.machine().driver_data<sangho_state>();
int scanline = param;
if((scanline % 2) == 0)
{
- v9938_set_sprite_limit(0, 0);
- v9938_set_resolution(0, RENDER_HIGH);
- v9938_interrupt(timer.machine(), 0);
+ state->m_v9938->set_sprite_limit(0);
+ state->m_v9938->set_resolution(RENDER_HIGH);
+ state->m_v9938->interrupt();
}
}
-static VIDEO_START( sangho )
-{
- v9938_init (machine, 0, *machine.primary_screen, machine.primary_screen->default_bitmap(), MODEL_V9938, 0x20000, msx_vdp_interrupt);
-}
-
static MACHINE_CONFIG_START( pzlestar, sangho_state )
MCFG_CPU_ADD("maincpu", Z80,8000000) // ?
@@ -380,10 +368,13 @@ static MACHINE_CONFIG_START( pzlestar, sangho_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_V9938_ADD("v9938", "screen", 0x20000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(msx_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(512 + 32, (212 + 28) * 2)
MCFG_SCREEN_VISIBLE_AREA(0, 512 + 32 - 1, 0, (212 + 28) * 2 - 1)
@@ -393,9 +384,6 @@ static MACHINE_CONFIG_START( pzlestar, sangho_state )
MCFG_PALETTE_INIT( v9938 )
- MCFG_VIDEO_START( sangho )
-
-
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3580000)
@@ -412,10 +400,13 @@ static MACHINE_CONFIG_START( sexyboom, sangho_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_V9938_ADD("v9938", "screen", 0x20000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(msx_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(512 + 32, (212 + 28) * 2)
MCFG_SCREEN_VISIBLE_AREA(0, 512 + 32 - 1, 0, (212 + 28) * 2 - 1)
@@ -425,8 +416,6 @@ static MACHINE_CONFIG_START( sexyboom, sangho_state )
MCFG_PALETTE_INIT( v9938 )
- MCFG_VIDEO_START( sangho )
-
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3580000)
diff --git a/src/mame/drivers/saturn.c b/src/mame/drivers/saturn.c
index aa8e2f7211a..1cabc6c4bbe 100644
--- a/src/mame/drivers/saturn.c
+++ b/src/mame/drivers/saturn.c
@@ -2215,12 +2215,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(saturn)
+ MCFG_SCREEN_UPDATE_STATIC(saturn)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness. (TODO: remove AT LEAST the latter)
#else
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
- MCFG_SCREEN_UPDATE(stv_vdp2)
+ MCFG_SCREEN_UPDATE_STATIC(stv_vdp2)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
#endif
@@ -2306,12 +2304,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(saturn)
+ MCFG_SCREEN_UPDATE_STATIC(saturn)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness. (TODO: remove AT LEAST the latter)
#else
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
- MCFG_SCREEN_UPDATE(stv_vdp2)
+ MCFG_SCREEN_UPDATE_STATIC(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 beb40888862..9a6163a0727 100644
--- a/src/mame/drivers/sauro.c
+++ b/src/mame/drivers/sauro.c
@@ -383,7 +383,6 @@ static MACHINE_CONFIG_START( tecfri, sauro_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.72) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000)) // frames per second, vblank duration (otherwise sprites lag)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32 * 8, 32 * 8)
MCFG_SCREEN_VISIBLE_AREA(1 * 8, 31 * 8 - 1, 2 * 8, 30 * 8 - 1)
@@ -407,7 +406,7 @@ static MACHINE_CONFIG_DERIVED( trckydoc, tecfri )
MCFG_VIDEO_START(trckydoc)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(trckydoc)
+ MCFG_SCREEN_UPDATE_STATIC(trckydoc)
MACHINE_CONFIG_END
@@ -425,7 +424,7 @@ static MACHINE_CONFIG_DERIVED( sauro, tecfri )
MCFG_VIDEO_START(sauro)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(sauro)
+ MCFG_SCREEN_UPDATE_STATIC(sauro)
MCFG_SOUND_ADD("speech", SP0256, 3120000)
MCFG_SOUND_CONFIG(sauro_sp256)
diff --git a/src/mame/drivers/savquest.c b/src/mame/drivers/savquest.c
index 6bdb2c4b1f8..6594cb82eb3 100644
--- a/src/mame/drivers/savquest.c
+++ b/src/mame/drivers/savquest.c
@@ -77,8 +77,7 @@ protected:
// driver_device overrides
-// virtual void video_start();
-// virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+// virtual void video_start();
};
// Intel 82439TX System Controller (MXTC)
diff --git a/src/mame/drivers/sbasketb.c b/src/mame/drivers/sbasketb.c
index dc246bb9f83..8dd5350560f 100644
--- a/src/mame/drivers/sbasketb.c
+++ b/src/mame/drivers/sbasketb.c
@@ -199,10 +199,9 @@ static MACHINE_CONFIG_START( sbasketb, sbasketb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(sbasketb)
+ MCFG_SCREEN_UPDATE_STATIC(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 a3a94f5d46e..f711b916ae5 100644
--- a/src/mame/drivers/sbowling.c
+++ b/src/mame/drivers/sbowling.c
@@ -57,7 +57,7 @@ public:
int m_sbw_system;
tilemap_t *m_sb_tilemap;
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 *m_tmpbitmap;
UINT32 m_color_prom_address;
UINT8 m_pix_sh;
UINT8 m_pix[2];
@@ -74,7 +74,7 @@ static TILE_GET_INFO( get_sb_tile_info )
SET_TILE_INFO(0, tileno, 0, 0);
}
-static void plot_pixel_sbw(bitmap_t *tmpbitmap, int x, int y, int col, int flip)
+static void plot_pixel_sbw(bitmap_ind16 *tmpbitmap, int x, int y, int col, int flip)
{
if (flip)
{
@@ -108,7 +108,7 @@ static WRITE8_HANDLER( sbw_videoram_w )
}
}
-static SCREEN_UPDATE(sbowling)
+static SCREEN_UPDATE_IND16(sbowling)
{
sbowling_state *state = screen.machine().driver_data<sbowling_state>();
@@ -122,7 +122,7 @@ static VIDEO_START(sbowling)
{
sbowling_state *state = machine.driver_data<sbowling_state>();
- state->m_tmpbitmap = auto_bitmap_alloc(machine,32*8,32*8,machine.primary_screen->format());
+ state->m_tmpbitmap = auto_bitmap_ind16_alloc(machine,32*8,32*8);
state->m_sb_tilemap = tilemap_create(machine, get_sb_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
@@ -386,10 +386,9 @@ static MACHINE_CONFIG_START( sbowling, sbowling_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(sbowling)
+ MCFG_SCREEN_UPDATE_STATIC(sbowling)
MCFG_GFXDECODE(sbowling)
diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c
index 6902f68740d..de532fdd349 100644
--- a/src/mame/drivers/sbrkout.c
+++ b/src/mame/drivers/sbrkout.c
@@ -321,7 +321,7 @@ static WRITE8_HANDLER( sbrkout_videoram_w )
*
*************************************/
-static SCREEN_UPDATE( sbrkout )
+static SCREEN_UPDATE_IND16( sbrkout )
{
sbrkout_state *state = screen.machine().driver_data<sbrkout_state>();
UINT8 *videoram = state->m_videoram;
@@ -510,8 +510,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(sbrkout)
+ MCFG_SCREEN_UPDATE_STATIC(sbrkout)
MCFG_PALETTE_INIT(black_and_white)
MCFG_VIDEO_START(sbrkout)
diff --git a/src/mame/drivers/sbugger.c b/src/mame/drivers/sbugger.c
index b4d624f82e5..c0b73fd9879 100644
--- a/src/mame/drivers/sbugger.c
+++ b/src/mame/drivers/sbugger.c
@@ -224,10 +224,9 @@ static MACHINE_CONFIG_START( sbugger, sbugger_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(sbugger)
+ MCFG_SCREEN_UPDATE_STATIC(sbugger)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/scobra.c b/src/mame/drivers/scobra.c
index feed752cdfd..5cc5af8b33b 100644
--- a/src/mame/drivers/scobra.c
+++ b/src/mame/drivers/scobra.c
@@ -677,10 +677,9 @@ static MACHINE_CONFIG_START( type1, scobra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_GFXDECODE(scobra)
MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 1 for background */
@@ -708,7 +707,6 @@ static MACHINE_CONFIG_DERIVED( rescue, type1 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_PALETTE_LENGTH(32+64+2+128) /* 32 for characters, 64 for stars, 2 for bullets, 128 for background */
MCFG_PALETTE_INIT(rescue)
@@ -722,7 +720,6 @@ static MACHINE_CONFIG_DERIVED( minefld, type1 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_PALETTE_LENGTH(32+64+2+256) /* 32 for characters, 64 for stars, 2 for bullets, 256 for background */
MCFG_PALETTE_INIT(minefld)
@@ -803,10 +800,9 @@ static MACHINE_CONFIG_START( hustler, scobra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(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 5527d5fafa4..9c4e7668892 100644
--- a/src/mame/drivers/scotrsht.c
+++ b/src/mame/drivers/scotrsht.c
@@ -196,10 +196,9 @@ static MACHINE_CONFIG_START( scotrsht, scotrsht_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(scotrsht)
+ MCFG_SCREEN_UPDATE_STATIC(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 a7bfa7512a7..c2fd784e228 100644
--- a/src/mame/drivers/scramble.c
+++ b/src/mame/drivers/scramble.c
@@ -1260,10 +1260,9 @@ static MACHINE_CONFIG_START( scramble, scramble_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(galaxold)
MCFG_GFXDECODE(scramble)
MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
@@ -1481,10 +1480,9 @@ static MACHINE_CONFIG_START( ad2083, scramble_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(16000.0/132/2)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(galaxold)
+ MCFG_SCREEN_UPDATE_STATIC(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 329b0ada348..49c6858e232 100644
--- a/src/mame/drivers/scregg.c
+++ b/src/mame/drivers/scregg.c
@@ -240,10 +240,9 @@ static MACHINE_CONFIG_START( dommy, btime_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072) /* frames per second, vblank duration taken from Burger Time */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(eggs)
+ MCFG_SCREEN_UPDATE_STATIC(eggs)
MCFG_GFXDECODE(scregg)
MCFG_PALETTE_LENGTH(8)
@@ -276,10 +275,9 @@ static MACHINE_CONFIG_START( scregg, btime_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072) /* frames per second, vblank duration taken from Burger Time */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(eggs)
+ MCFG_SCREEN_UPDATE_STATIC(eggs)
MCFG_GFXDECODE(scregg)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/sderby.c b/src/mame/drivers/sderby.c
index 3cc6afa7a92..95b3e228f97 100644
--- a/src/mame/drivers/sderby.c
+++ b/src/mame/drivers/sderby.c
@@ -465,10 +465,9 @@ static MACHINE_CONFIG_START( sderby, sderby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE(sderby)
+ MCFG_SCREEN_UPDATE_STATIC(sderby)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
@@ -490,10 +489,9 @@ static MACHINE_CONFIG_START( spacewin, sderby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE(pmroulet)
+ MCFG_SCREEN_UPDATE_STATIC(pmroulet)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
@@ -515,10 +513,9 @@ static MACHINE_CONFIG_START( pmroulet, sderby_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1)
- MCFG_SCREEN_UPDATE(pmroulet)
+ MCFG_SCREEN_UPDATE_STATIC(pmroulet)
MCFG_GFXDECODE(sderby)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/seattle.c b/src/mame/drivers/seattle.c
index 05545d51329..206e02141ba 100644
--- a/src/mame/drivers/seattle.c
+++ b/src/mame/drivers/seattle.c
@@ -477,7 +477,7 @@ static void update_widget_irq(running_machine &machine);
*
*************************************/
-static SCREEN_UPDATE( seattle )
+static SCREEN_UPDATE_RGB32( seattle )
{
seattle_state *state = screen.machine().driver_data<seattle_state>();
return voodoo_update(state->m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
@@ -2517,10 +2517,9 @@ static MACHINE_CONFIG_START( seattle_common, seattle_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(seattle)
+ MCFG_SCREEN_UPDATE_STATIC(seattle)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index 3e262abddb7..fce8689c472 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -1262,7 +1262,7 @@ static VIDEO_START(segac2_new)
megadrive_vdp_palette_lookup_highlight = auto_alloc_array(machine, UINT16, 0x1000/2);
}
-static SCREEN_UPDATE(segac2_new)
+static SCREEN_UPDATE_RGB32(segac2_new)
{
segac2_state *state = screen.machine().driver_data<segac2_state>();
if (!state->m_segac2_enable_display)
@@ -1271,7 +1271,7 @@ static SCREEN_UPDATE(segac2_new)
return 0;
}
- SCREEN_UPDATE_CALL(megadriv);
+ SCREEN_UPDATE32_CALL(megadriv);
return 0;
}
@@ -1292,12 +1292,11 @@ static MACHINE_CONFIG_START( segac, segac2_state )
//MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
MCFG_SCREEN_ADD("megadriv", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_REFRESH_RATE(60)
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(segac2_new)
+ MCFG_SCREEN_UPDATE_STATIC(segac2_new)
MCFG_SCREEN_EOF( megadriv )
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/segae.c b/src/mame/drivers/segae.c
index c2d6f1b2d2e..8bfbe0f8e91 100644
--- a/src/mame/drivers/segae.c
+++ b/src/mame/drivers/segae.c
@@ -1001,19 +1001,19 @@ static const sega315_5124_interface _315_5124_2_intf =
};
-static SCREEN_UPDATE( systeme )
+static SCREEN_UPDATE_RGB32( systeme )
{
systeme_state *state = screen.machine().driver_data<systeme_state>();
- bitmap_t *vdp1_bitmap = state->m_vdp1->get_bitmap();
- bitmap_t *vdp2_bitmap = state->m_vdp2->get_bitmap();
- bitmap_t *vdp2_y1 = state->m_vdp2->get_y1_bitmap();
+ 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();
for( int y = cliprect.min_y; y <= cliprect.max_y; y++ )
{
UINT32 *dest_ptr = &bitmap.pix32(y);
- UINT32 *vdp1_ptr = &vdp1_bitmap->pix32(y);
- UINT32 *vdp2_ptr = &vdp2_bitmap->pix32(y);
- UINT8 *y1_ptr = &vdp2_y1->pix8(y);
+ UINT32 *vdp1_ptr = &vdp1_bitmap.pix32(y);
+ UINT32 *vdp2_ptr = &vdp2_bitmap.pix32(y);
+ UINT8 *y1_ptr = &vdp2_y1.pix8(y);
for ( int x = cliprect.min_x; x <= cliprect.max_x; x++ )
{
@@ -1032,11 +1032,10 @@ static MACHINE_CONFIG_START( systeme, systeme_state )
MCFG_CPU_IO_MAP(io_map)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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( systeme ) /* Combines and copies a bitmap */
+ MCFG_SCREEN_UPDATE_STATIC( systeme ) /* Combines and copies a bitmap */
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 2c7c5b0c491..52a0640b5ca 100644
--- a/src/mame/drivers/segag80r.c
+++ b/src/mame/drivers/segag80r.c
@@ -835,9 +835,8 @@ static MACHINE_CONFIG_START( g80r_base, segag80r_state )
MCFG_PALETTE_LENGTH(64)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(segag80r)
+ MCFG_SCREEN_UPDATE_STATIC(segag80r)
MCFG_VIDEO_START(segag80r)
@@ -875,7 +874,6 @@ static MACHINE_CONFIG_DERIVED( spaceod, g80r_base )
/* background board changes */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_GFXDECODE(spaceod)
MCFG_PALETTE_LENGTH(64+64)
diff --git a/src/mame/drivers/segag80v.c b/src/mame/drivers/segag80v.c
index 2ad1a57e1fc..cd140ef13a4 100644
--- a/src/mame/drivers/segag80v.c
+++ b/src/mame/drivers/segag80v.c
@@ -915,7 +915,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(segag80v)
+ MCFG_SCREEN_UPDATE_STATIC(segag80v)
MCFG_VIDEO_START(segag80v)
diff --git a/src/mame/drivers/segahang.c b/src/mame/drivers/segahang.c
index e38b5d6bbf4..85ab017813a 100644
--- a/src/mame/drivers/segahang.c
+++ b/src/mame/drivers/segahang.c
@@ -840,9 +840,8 @@ static MACHINE_CONFIG_START( hangon_base, segas1x_state )
MCFG_PALETTE_LENGTH(2048*3)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
- MCFG_SCREEN_UPDATE(hangon)
+ MCFG_SCREEN_UPDATE_STATIC(hangon)
MCFG_VIDEO_START(hangon)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segajw.c b/src/mame/drivers/segajw.c
index 89ac233798d..addd665ef36 100644
--- a/src/mame/drivers/segajw.c
+++ b/src/mame/drivers/segajw.c
@@ -33,6 +33,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -42,7 +44,6 @@ protected:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -51,7 +52,7 @@ void segajw_state::video_start()
}
-bool segajw_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 segajw_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -96,7 +97,7 @@ static MACHINE_CONFIG_START( segajw, segajw_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(segajw_state, screen_update)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
diff --git a/src/mame/drivers/segald.c b/src/mame/drivers/segald.c
index 7e3889444d1..056017fc692 100644
--- a/src/mame/drivers/segald.c
+++ b/src/mame/drivers/segald.c
@@ -20,7 +20,7 @@ Todo:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "render.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
#define SCHEMATIC_CLOCK (20000000)
@@ -28,7 +28,8 @@ class segald_state : public driver_device
{
public:
segald_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
UINT8 m_nmi_enable;
@@ -37,14 +38,14 @@ public:
UINT8* m_fix_RAM;
UINT8* m_out_RAM;
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 m_ldv1000_input_latch;
UINT8 m_ldv1000_output_latch;
};
/* VIDEO GOODS */
-static void astron_draw_characters(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void astron_draw_characters(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
segald_state *state = machine.driver_data<segald_state>();
UINT8 characterX, characterY;
@@ -60,7 +61,7 @@ static void astron_draw_characters(running_machine &machine, bitmap_t &bitmap,co
}
}
-static void astron_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void astron_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* Heisted from Daphne */
const UINT8 SPR_Y_TOP = 0;
@@ -89,7 +90,7 @@ static void astron_draw_sprites(running_machine &machine, bitmap_t &bitmap, cons
}
-static SCREEN_UPDATE( astron )
+static SCREEN_UPDATE_IND16( astron )
{
bitmap.fill(0, cliprect);
@@ -108,7 +109,7 @@ static READ8_HANDLER( astron_DISC_read )
segald_state *state = space->machine().driver_data<segald_state>();
if (state->m_nmi_enable)
- state->m_ldv1000_input_latch = laserdisc_data_r(state->m_laserdisc);
+ state->m_ldv1000_input_latch = state->m_laserdisc->status_r();
logerror("DISC read (0x%04x) @ 0x%04x [0x%x]\n", state->m_ldv1000_input_latch, offset, cpu_get_pc(&space->device()));
@@ -150,7 +151,7 @@ static WRITE8_HANDLER( astron_DISC_write )
state->m_ldv1000_output_latch = data;
if (state->m_nmi_enable)
- laserdisc_data_w(state->m_laserdisc, state->m_ldv1000_output_latch);
+ state->m_laserdisc->data_w(state->m_ldv1000_output_latch);
}
static WRITE8_HANDLER( astron_OUT_write )
@@ -354,9 +355,6 @@ GFXDECODE_END
static MACHINE_START( astron )
{
- segald_state *state = machine.driver_data<segald_state>();
-
- state->m_laserdisc = machine.device("laserdisc");
}
@@ -371,11 +369,11 @@ static MACHINE_CONFIG_START( astron, segald_state )
MCFG_MACHINE_START(astron)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(astron, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(256, 256, astron)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE(segald)
MCFG_PALETTE_LENGTH(256)
@@ -383,7 +381,7 @@ static MACHINE_CONFIG_START( astron, segald_state )
/* sound hardare */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/segaorun.c b/src/mame/drivers/segaorun.c
index 94c631759e2..3b528eaf470 100644
--- a/src/mame/drivers/segaorun.c
+++ b/src/mame/drivers/segaorun.c
@@ -1089,9 +1089,8 @@ static MACHINE_CONFIG_START( outrun_base, segas1x_state )
MCFG_PALETTE_LENGTH(4096*3)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
- MCFG_SCREEN_UPDATE(outrun)
+ MCFG_SCREEN_UPDATE_STATIC(outrun)
MCFG_VIDEO_START(outrun)
@@ -1124,7 +1123,7 @@ static MACHINE_CONFIG_DERIVED( shangon, outrun_base )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 321, 262, 0, 224)
- MCFG_SCREEN_UPDATE(shangon)
+ MCFG_SCREEN_UPDATE_STATIC(shangon)
MCFG_VIDEO_START(shangon)
diff --git a/src/mame/drivers/segas16a.c b/src/mame/drivers/segas16a.c
index 8160c472b34..d1306320f02 100644
--- a/src/mame/drivers/segas16a.c
+++ b/src/mame/drivers/segas16a.c
@@ -1997,10 +1997,9 @@ static MACHINE_CONFIG_START( system16a, segas1x_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(342,262) /* to be verified */
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(system16a)
+ MCFG_SCREEN_UPDATE_STATIC(system16a)
MCFG_SEGA16SP_ADD_16A("segaspr1")
diff --git a/src/mame/drivers/segas16b.c b/src/mame/drivers/segas16b.c
index 2effea76880..46bc4fe46e4 100644
--- a/src/mame/drivers/segas16b.c
+++ b/src/mame/drivers/segas16b.c
@@ -3379,9 +3379,8 @@ static MACHINE_CONFIG_START( system16b, segas1x_state )
MCFG_PALETTE_LENGTH(2048*3)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
- MCFG_SCREEN_UPDATE(system16b)
+ MCFG_SCREEN_UPDATE_STATIC(system16b)
MCFG_VIDEO_START(system16b)
diff --git a/src/mame/drivers/segas18.c b/src/mame/drivers/segas18.c
index 879623dd64f..c7f00152b42 100644
--- a/src/mame/drivers/segas18.c
+++ b/src/mame/drivers/segas18.c
@@ -1241,10 +1241,9 @@ static MACHINE_CONFIG_START( system18, segas1x_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.23) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(342,262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(system18)
+ MCFG_SCREEN_UPDATE_STATIC(system18)
MCFG_GFXDECODE(segas18)
MCFG_PALETTE_LENGTH(2048*3+2048)
diff --git a/src/mame/drivers/segas24.c b/src/mame/drivers/segas24.c
index 67dc1da8dc6..f07465380fa 100644
--- a/src/mame/drivers/segas24.c
+++ b/src/mame/drivers/segas24.c
@@ -1972,8 +1972,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(system24)
+ MCFG_SCREEN_UPDATE_STATIC(system24)
MCFG_PALETTE_LENGTH(8192*2)
diff --git a/src/mame/drivers/segas32.c b/src/mame/drivers/segas32.c
index d1dd2b70d47..ff8d08882ad 100644
--- a/src/mame/drivers/segas32.c
+++ b/src/mame/drivers/segas32.c
@@ -2192,11 +2192,10 @@ static MACHINE_CONFIG_START( system32, segas32_state )
MCFG_PALETTE_LENGTH(0x4000)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(system32)
+ MCFG_SCREEN_UPDATE_STATIC(system32)
MCFG_VIDEO_START(system32)
@@ -2253,18 +2252,16 @@ static MACHINE_CONFIG_START( multi32, segas32_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(multi32_left)
+ MCFG_SCREEN_UPDATE_STATIC(multi32_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(multi32_right)
+ MCFG_SCREEN_UPDATE_STATIC(multi32_right)
MCFG_VIDEO_START(multi32)
diff --git a/src/mame/drivers/segaxbd.c b/src/mame/drivers/segaxbd.c
index 71fd6cd4e1b..df7cae85f29 100644
--- a/src/mame/drivers/segaxbd.c
+++ b/src/mame/drivers/segaxbd.c
@@ -1319,9 +1319,8 @@ static MACHINE_CONFIG_START( xboard, segas1x_state )
MCFG_PALETTE_LENGTH(8192*3)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/8, 400, 0, 320, 262, 0, 224)
- MCFG_SCREEN_UPDATE(xboard)
+ MCFG_SCREEN_UPDATE_STATIC(xboard)
MCFG_VIDEO_START(xboard)
diff --git a/src/mame/drivers/segaybd.c b/src/mame/drivers/segaybd.c
index df62637270c..a0f876563e9 100644
--- a/src/mame/drivers/segaybd.c
+++ b/src/mame/drivers/segaybd.c
@@ -967,10 +967,9 @@ static MACHINE_CONFIG_START( yboard, segas1x_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(342,262) /* to be verified */
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(yboard)
+ MCFG_SCREEN_UPDATE_STATIC(yboard)
MCFG_SEGA16SP_ADD_YBOARD_16B("segaspr1")
MCFG_SEGA16SP_ADD_YBOARD("segaspr2")
diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c
index 02d82d21406..67e962a11ce 100644
--- a/src/mame/drivers/seibuspi.c
+++ b/src/mame/drivers/seibuspi.c
@@ -1880,10 +1880,9 @@ static MACHINE_CONFIG_START( spi, seibuspi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(spi)
+ MCFG_SCREEN_UPDATE_STATIC(spi)
MCFG_GFXDECODE(spi)
MCFG_PALETTE_LENGTH(6144)
@@ -2227,7 +2226,6 @@ static MACHINE_CONFIG_START( seibu386, seibuspi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
@@ -2235,7 +2233,7 @@ static MACHINE_CONFIG_START( seibu386, seibuspi_state )
MCFG_PALETTE_LENGTH(6144)
MCFG_VIDEO_START(spi)
- MCFG_SCREEN_UPDATE(spi)
+ MCFG_SCREEN_UPDATE_STATIC(spi)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2283,7 +2281,6 @@ static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
@@ -2291,7 +2288,7 @@ static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
MCFG_PALETTE_LENGTH(8192)
MCFG_VIDEO_START(sys386f2)
- MCFG_SCREEN_UPDATE(sys386f2)
+ MCFG_SCREEN_UPDATE_STATIC(sys386f2)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/seicross.c b/src/mame/drivers/seicross.c
index 58219a3e5d3..972f81f8679 100644
--- a/src/mame/drivers/seicross.c
+++ b/src/mame/drivers/seicross.c
@@ -420,10 +420,9 @@ static MACHINE_CONFIG_START( nvram, seicross_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seicross)
+ MCFG_SCREEN_UPDATE_STATIC(seicross)
MCFG_GFXDECODE(seicross)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/sengokmj.c b/src/mame/drivers/sengokmj.c
index b8bd89e75ed..e29a046014b 100644
--- a/src/mame/drivers/sengokmj.c
+++ b/src/mame/drivers/sengokmj.c
@@ -307,10 +307,9 @@ static MACHINE_CONFIG_START( sengokmj, sengokmj_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) //TODO: dynamic resolution
- MCFG_SCREEN_UPDATE(seibu_crtc)
+ MCFG_SCREEN_UPDATE_STATIC(seibu_crtc)
MCFG_GFXDECODE(sengokmj)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c
index 95123c956c2..b99866a4bbf 100644
--- a/src/mame/drivers/senjyo.c
+++ b/src/mame/drivers/senjyo.c
@@ -565,10 +565,9 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(senjyo)
+ MCFG_SCREEN_UPDATE_STATIC(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 ea70d89545c..759d7292d89 100644
--- a/src/mame/drivers/seta.c
+++ b/src/mame/drivers/seta.c
@@ -7344,10 +7344,9 @@ static MACHINE_CONFIG_START( tndrcade, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7395,10 +7394,9 @@ static MACHINE_CONFIG_START( twineagl, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7438,10 +7436,9 @@ static MACHINE_CONFIG_START( downtown, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7498,10 +7495,9 @@ static MACHINE_CONFIG_START( usclssic, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 33*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(usclssic)
+ MCFG_SCREEN_UPDATE_STATIC(usclssic)
MCFG_GFXDECODE(usclssic)
MCFG_PALETTE_LENGTH(16*32 + 64*32*2) /* sprites, layer */
@@ -7548,10 +7544,9 @@ static MACHINE_CONFIG_START( calibr50, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7589,10 +7584,9 @@ static MACHINE_CONFIG_START( metafox, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7626,10 +7620,9 @@ static MACHINE_CONFIG_START( atehate, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7669,10 +7662,9 @@ static MACHINE_CONFIG_START( blandia, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_SCREEN_EOF(seta_buffer_sprites) /* Blandia uses sprite buffering */
MCFG_GFXDECODE(blandia)
@@ -7703,10 +7695,9 @@ static MACHINE_CONFIG_START( blandiap, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_SCREEN_EOF(seta_buffer_sprites) /* Blandia uses sprite buffering */
MCFG_GFXDECODE(blandia)
@@ -7742,10 +7733,9 @@ static MACHINE_CONFIG_START( blockcar, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -7779,10 +7769,9 @@ static MACHINE_CONFIG_START( daioh, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -7821,10 +7810,9 @@ static MACHINE_CONFIG_START( drgnunit, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_SCREEN_EOF(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(downtown)
@@ -7857,10 +7845,9 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_SCREEN_EOF(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(qzkklgy2)
@@ -7909,10 +7896,9 @@ static MACHINE_CONFIG_START( setaroul, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(setaroul)
+ MCFG_SCREEN_UPDATE_STATIC(setaroul)
MCFG_SCREEN_EOF(setaroul) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(setaroul)
@@ -7948,10 +7934,9 @@ static MACHINE_CONFIG_START( eightfrc, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -7990,10 +7975,9 @@ static MACHINE_CONFIG_START( extdwnhl, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(zingzip)
MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
@@ -8052,10 +8036,9 @@ static MACHINE_CONFIG_START( gundhara, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8094,10 +8077,9 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8127,10 +8109,9 @@ static MACHINE_CONFIG_START( jjsquawb, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8169,10 +8150,9 @@ static MACHINE_CONFIG_START( kamenrid, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8207,10 +8187,9 @@ static MACHINE_CONFIG_START( orbs, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(orbs)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8246,10 +8225,9 @@ static MACHINE_CONFIG_START( keroppi, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(orbs)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8283,10 +8261,9 @@ static MACHINE_CONFIG_START( krzybowl, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8325,10 +8302,9 @@ static MACHINE_CONFIG_START( madshark, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(jjsquawk)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
@@ -8373,10 +8349,9 @@ static MACHINE_CONFIG_START( msgundam, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(56.66) /* between 56 and 57 to match a real PCB's game speed */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_SCREEN_EOF(seta_buffer_sprites) /* msgundam uses sprite buffering */
MCFG_GFXDECODE(msgundam)
@@ -8412,10 +8387,9 @@ static MACHINE_CONFIG_START( oisipuzl, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8450,10 +8424,9 @@ static MACHINE_CONFIG_START( triplfun, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8486,10 +8459,9 @@ static MACHINE_CONFIG_START( kiwame, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8526,10 +8498,9 @@ static MACHINE_CONFIG_START( rezon, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -8566,10 +8537,9 @@ static MACHINE_CONFIG_START( thunderl, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8638,10 +8608,9 @@ static MACHINE_CONFIG_START( wiggie, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(wiggie)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8673,10 +8642,9 @@ static MACHINE_CONFIG_START( wits, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -8710,10 +8678,9 @@ static MACHINE_CONFIG_START( umanclub, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(512)
@@ -8751,10 +8718,9 @@ static MACHINE_CONFIG_START( utoukond, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
@@ -8801,10 +8767,9 @@ static MACHINE_CONFIG_START( wrofaero, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
@@ -8845,10 +8810,9 @@ static MACHINE_CONFIG_START( zingzip, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(zingzip)
MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
@@ -8899,10 +8863,9 @@ static MACHINE_CONFIG_START( pairlove, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers) /* just draw the sprites */
MCFG_GFXDECODE(tndrcade)
MCFG_PALETTE_LENGTH(2048) /* sprites only */
@@ -8948,10 +8911,9 @@ static MACHINE_CONFIG_START( crazyfgt, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta)
+ MCFG_SCREEN_UPDATE_STATIC(seta)
MCFG_GFXDECODE(crazyfgt)
MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer1, layer2 */
@@ -9046,10 +9008,9 @@ static MACHINE_CONFIG_START( inttoote, seta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(inttoote)
+ MCFG_SCREEN_UPDATE_STATIC(inttoote)
MCFG_GFXDECODE(inttoote)
MCFG_PALETTE_LENGTH(512 * 1)
diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c
index 505f4889577..6da3677ef09 100644
--- a/src/mame/drivers/seta2.c
+++ b/src/mame/drivers/seta2.c
@@ -2029,10 +2029,9 @@ static MACHINE_CONFIG_START( seta2, seta2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE(seta2)
+ MCFG_SCREEN_UPDATE_STATIC(seta2)
MCFG_SCREEN_EOF(seta2)
MCFG_GFXDECODE(seta2)
@@ -2226,10 +2225,9 @@ static MACHINE_CONFIG_START( funcube, seta2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE(seta2)
+ MCFG_SCREEN_UPDATE_STATIC(seta2)
MCFG_SCREEN_EOF(seta2)
MCFG_GFXDECODE(funcube)
@@ -2263,10 +2261,9 @@ static MACHINE_CONFIG_START( namcostr, seta2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
- MCFG_SCREEN_UPDATE(seta2)
+ MCFG_SCREEN_UPDATE_STATIC(seta2)
MCFG_SCREEN_EOF(seta2)
MCFG_GFXDECODE(funcube)
diff --git a/src/mame/drivers/sf.c b/src/mame/drivers/sf.c
index 4bdb9766a78..7456b324f0e 100644
--- a/src/mame/drivers/sf.c
+++ b/src/mame/drivers/sf.c
@@ -849,10 +849,9 @@ static MACHINE_CONFIG_START( sf, sf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(sf)
+ MCFG_SCREEN_UPDATE_STATIC(sf)
MCFG_GFXDECODE(sf)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/sfbonus.c b/src/mame/drivers/sfbonus.c
index 4a64179f625..7fe98e6465a 100644
--- a/src/mame/drivers/sfbonus.c
+++ b/src/mame/drivers/sfbonus.c
@@ -281,7 +281,7 @@ public:
sfbonus_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
- bitmap_t *m_temp_reel_bitmap;
+ bitmap_ind16 *m_temp_reel_bitmap;
tilemap_t *m_tilemap;
tilemap_t *m_reel_tilemap;
tilemap_t *m_reel2_tilemap;
@@ -757,7 +757,7 @@ static WRITE8_HANDLER( sfbonus_videoram_w )
static VIDEO_START(sfbonus)
{
sfbonus_state *state = machine.driver_data<sfbonus_state>();
- state->m_temp_reel_bitmap = auto_bitmap_alloc(machine,1024,512,BITMAP_FORMAT_INDEXED16);
+ state->m_temp_reel_bitmap = auto_bitmap_ind16_alloc(machine,1024,512);
state->m_tilemap = tilemap_create(machine,get_sfbonus_tile_info,tilemap_scan_rows,8,8, 128, 64);
state->m_reel_tilemap = tilemap_create(machine,get_sfbonus_reel_tile_info,tilemap_scan_rows,8,32, 64, 16);
@@ -781,7 +781,7 @@ static VIDEO_START(sfbonus)
}
-static void sfbonus_draw_reel_layer(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int catagory)
+static void sfbonus_draw_reel_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int catagory)
{
sfbonus_state *state = screen.machine().driver_data<sfbonus_state>();
int zz;
@@ -920,7 +920,7 @@ static void sfbonus_draw_reel_layer(screen_device &screen, bitmap_t &bitmap, con
}
-static SCREEN_UPDATE(sfbonus)
+static SCREEN_UPDATE_IND16(sfbonus)
{
sfbonus_state *state = screen.machine().driver_data<sfbonus_state>();
@@ -1260,10 +1260,9 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(128*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 288-1)
- MCFG_SCREEN_UPDATE(sfbonus)
+ MCFG_SCREEN_UPDATE_STATIC(sfbonus)
MCFG_PALETTE_LENGTH(0x100*2) // *2 for priority workaraound / custom drawing
diff --git a/src/mame/drivers/sfcbox.c b/src/mame/drivers/sfcbox.c
index 65659de7dd4..9f4b929e7fb 100644
--- a/src/mame/drivers/sfcbox.c
+++ b/src/mame/drivers/sfcbox.c
@@ -224,9 +224,8 @@ static MACHINE_CONFIG_START( snes, snes_state )
MCFG_VIDEO_START( snes )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
- MCFG_SCREEN_UPDATE( snes )
+ MCFG_SCREEN_UPDATE_STATIC( snes )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/sfkick.c b/src/mame/drivers/sfkick.c
index bb6a9335cde..96253568e8c 100644
--- a/src/mame/drivers/sfkick.c
+++ b/src/mame/drivers/sfkick.c
@@ -62,12 +62,14 @@ class sfkick_state : public driver_device
{
public:
sfkick_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938") { }
UINT8 *m_main_mem;
int m_bank_cfg;
int m_bank[8];
int m_input_mux;
+ required_device<v9938_device> m_v9938;
};
@@ -331,10 +333,7 @@ static ADDRESS_MAP_START( sfkick_io_map, AS_IO, 8)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0xa0, 0xa7) AM_WRITE( soundlatch_w )
- AM_RANGE( 0x98, 0x98) AM_READWRITE( v9938_0_vram_r , v9938_0_vram_w)
- AM_RANGE( 0x99, 0x99) AM_READWRITE( v9938_0_status_r, v9938_0_command_w )
- AM_RANGE( 0x9a, 0x9a) AM_WRITE( v9938_0_palette_w )
- AM_RANGE( 0x9b, 0x9b) AM_WRITE( v9938_0_register_w )
+ AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE_MODERN( "v9938", v9938_device, read, write)
AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
AM_RANGE( 0xb4, 0xb5) AM_RAM /* loopback ? req by sfkicka (MSX Bios leftover)*/
ADDRESS_MAP_END
@@ -429,21 +428,14 @@ static INPUT_PORTS_START( sfkick )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
INPUT_PORTS_END
-static void sfkick_vdp_interrupt(running_machine &machine, int i)
+static void sfkick_vdp_interrupt(device_t *, v99x8_device &device, int i)
{
- cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
-}
-
-static VIDEO_START( sfkick )
-{
- v9938_init (machine, 0, *machine.primary_screen, machine.primary_screen->default_bitmap(), MODEL_V9938, 0x80000, sfkick_vdp_interrupt);
- v9938_reset(0);
+ cputag_set_input_line (device.machine(), "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
}
static MACHINE_RESET(sfkick)
{
sfkick_state *state = machine.driver_data<sfkick_state>();
- v9938_reset(0);
state->m_bank_cfg=0;
state->m_bank[0]=0;
state->m_bank[1]=0;
@@ -458,7 +450,8 @@ static MACHINE_RESET(sfkick)
static TIMER_DEVICE_CALLBACK( sfkick_interrupt )
{
- v9938_interrupt(timer.machine(), 0);
+ sfkick_state *state = timer.machine().driver_data<sfkick_state>();
+ state->m_v9938->interrupt();
}
static void irqhandler(device_t *device, int irq)
@@ -489,10 +482,13 @@ static MACHINE_CONFIG_START( sfkick, sfkick_state )
MCFG_CPU_PROGRAM_MAP(sfkick_sound_map)
MCFG_CPU_IO_MAP(sfkick_sound_io_map)
+ MCFG_V9938_ADD("v9938", "screen", 0x80000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(sfkick_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, MSX2_TOTAL_YRES_PIXELS)
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)
@@ -504,8 +500,6 @@ static MACHINE_CONFIG_START( sfkick, sfkick_state )
MCFG_PALETTE_INIT( v9938 )
- MCFG_VIDEO_START(sfkick)
-
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ym1", YM2203, MASTER_CLOCK/6)
MCFG_SOUND_CONFIG(ym2203_config)
diff --git a/src/mame/drivers/sg1000a.c b/src/mame/drivers/sg1000a.c
index e6e58f8b548..4f6d6824b27 100644
--- a/src/mame/drivers/sg1000a.c
+++ b/src/mame/drivers/sg1000a.c
@@ -261,14 +261,6 @@ static I8255_INTERFACE( ppi8255_intf )
DEVCB_HANDLER(sg1000a_coin_counter_w)
};
-static SCREEN_UPDATE( sg1000a )
-{
- tms9928a_device *tms9928a = screen.machine().device<tms9928a_device>( "tms9928a" );
-
- tms9928a->update( bitmap, cliprect );
- return 0;
-}
-
/*************************************
*
* Machine drivers
@@ -286,7 +278,7 @@ static MACHINE_CONFIG_START( sg1000a, sg1000a_state )
/* video hardware */
MCFG_TMS9928A_ADD( "tms9928a", TMS9928A, sg1000a_tms9928a_interface )
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
- MCFG_SCREEN_UPDATE( sg1000a )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shadfrce.c b/src/mame/drivers/shadfrce.c
index a25f64b27ad..7084dfb973f 100644
--- a/src/mame/drivers/shadfrce.c
+++ b/src/mame/drivers/shadfrce.c
@@ -566,9 +566,8 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
MCFG_CPU_PROGRAM_MAP(shadfrce_sound_map)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 432, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE(shadfrce)
+ MCFG_SCREEN_UPDATE_STATIC(shadfrce)
MCFG_SCREEN_EOF(shadfrce)
MCFG_GFXDECODE(shadfrce)
diff --git a/src/mame/drivers/shangha3.c b/src/mame/drivers/shangha3.c
index acefbcab55c..0930a76ad9c 100644
--- a/src/mame/drivers/shangha3.c
+++ b/src/mame/drivers/shangha3.c
@@ -480,10 +480,9 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE(shangha3)
+ MCFG_SCREEN_UPDATE_STATIC(shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
@@ -519,10 +518,9 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE(shangha3)
+ MCFG_SCREEN_UPDATE_STATIC(shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
@@ -559,10 +557,9 @@ static MACHINE_CONFIG_START( blocken, shangha3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(24*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
- MCFG_SCREEN_UPDATE(shangha3)
+ MCFG_SCREEN_UPDATE_STATIC(shangha3)
MCFG_GFXDECODE(shangha3)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/shanghai.c b/src/mame/drivers/shanghai.c
index 8f3f7df339a..d8ffb062f0d 100644
--- a/src/mame/drivers/shanghai.c
+++ b/src/mame/drivers/shanghai.c
@@ -71,7 +71,7 @@ static VIDEO_START( shanghai )
{
}
-static SCREEN_UPDATE( shanghai )
+static SCREEN_UPDATE_IND16( shanghai )
{
device_t *hd63484 = screen.machine().device("hd63484");
int x, y, b, src;
@@ -445,10 +445,9 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
- MCFG_SCREEN_UPDATE(shanghai)
+ MCFG_SCREEN_UPDATE_STATIC(shanghai)
MCFG_PALETTE_LENGTH(256)
@@ -480,10 +479,9 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
- MCFG_SCREEN_UPDATE(shanghai)
+ MCFG_SCREEN_UPDATE_STATIC(shanghai)
MCFG_PALETTE_LENGTH(256)
@@ -519,10 +517,9 @@ static MACHINE_CONFIG_START( kothello, shanghai_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(8, 384-1, 0, 250-1) // Base Screen is 376 pixel
- MCFG_SCREEN_UPDATE(shanghai)
+ MCFG_SCREEN_UPDATE_STATIC(shanghai)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shangkid.c b/src/mame/drivers/shangkid.c
index bb7d03eac9f..dfa108c7570 100644
--- a/src/mame/drivers/shangkid.c
+++ b/src/mame/drivers/shangkid.c
@@ -389,10 +389,9 @@ static MACHINE_CONFIG_START( chinhero, shangkid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(16, 319-16, 0, 223)
- MCFG_SCREEN_UPDATE(shangkid)
+ MCFG_SCREEN_UPDATE_STATIC(shangkid)
MCFG_GFXDECODE(chinhero)
MCFG_PALETTE_LENGTH(256)
@@ -469,10 +468,9 @@ static MACHINE_CONFIG_START( dynamski, shangkid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256+32, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255+32, 16, 255-16)
- MCFG_SCREEN_UPDATE(dynamski)
+ MCFG_SCREEN_UPDATE_STATIC(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 66349655d7b..fed72f81cd7 100644
--- a/src/mame/drivers/shaolins.c
+++ b/src/mame/drivers/shaolins.c
@@ -198,10 +198,9 @@ static MACHINE_CONFIG_START( shaolins, shaolins_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(shaolins)
+ MCFG_SCREEN_UPDATE_STATIC(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 e7bef16f1af..d53bb925c1d 100644
--- a/src/mame/drivers/shisen.c
+++ b/src/mame/drivers/shisen.c
@@ -226,10 +226,9 @@ static MACHINE_CONFIG_START( shisen, shisen_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(sichuan2)
+ MCFG_SCREEN_UPDATE_STATIC(sichuan2)
MCFG_GFXDECODE(shisen)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shootout.c b/src/mame/drivers/shootout.c
index e74620612d3..ce66c3049a0 100644
--- a/src/mame/drivers/shootout.c
+++ b/src/mame/drivers/shootout.c
@@ -274,10 +274,9 @@ static MACHINE_CONFIG_START( shootout, shootout_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(shootout)
+ MCFG_SCREEN_UPDATE_STATIC(shootout)
MCFG_GFXDECODE(shootout)
MCFG_PALETTE_LENGTH(256)
@@ -304,10 +303,9 @@ static MACHINE_CONFIG_START( shootouj, shootout_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(shootouj)
+ MCFG_SCREEN_UPDATE_STATIC(shootouj)
MCFG_GFXDECODE(shootout)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/shougi.c b/src/mame/drivers/shougi.c
index 98af9f6af50..a819b1b8f05 100644
--- a/src/mame/drivers/shougi.c
+++ b/src/mame/drivers/shougi.c
@@ -160,7 +160,7 @@ static PALETTE_INIT( shougi )
-static SCREEN_UPDATE( shougi )
+static SCREEN_UPDATE_IND16( shougi )
{
shougi_state *state = screen.machine().driver_data<shougi_state>();
int offs;
@@ -412,10 +412,9 @@ static MACHINE_CONFIG_START( shougi, shougi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
- MCFG_SCREEN_UPDATE(shougi)
+ MCFG_SCREEN_UPDATE_STATIC(shougi)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/shuuz.c b/src/mame/drivers/shuuz.c
index 496fc363246..36373201e72 100644
--- a/src/mame/drivers/shuuz.c
+++ b/src/mame/drivers/shuuz.c
@@ -275,11 +275,10 @@ static MACHINE_CONFIG_START( shuuz, shuuz_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(shuuz)
+ MCFG_SCREEN_UPDATE_STATIC(shuuz)
MCFG_VIDEO_START(shuuz)
diff --git a/src/mame/drivers/sidearms.c b/src/mame/drivers/sidearms.c
index 0e7f7f7fb59..c8f6a2f5ef1 100644
--- a/src/mame/drivers/sidearms.c
+++ b/src/mame/drivers/sidearms.c
@@ -668,10 +668,9 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(sidearms)
+ MCFG_SCREEN_UPDATE_STATIC(sidearms)
MCFG_SCREEN_EOF(sidearms)
MCFG_GFXDECODE(sidearms)
@@ -713,11 +712,10 @@ static MACHINE_CONFIG_START( turtship, sidearms_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_EOF(sidearms)
- MCFG_SCREEN_UPDATE(sidearms)
+ MCFG_SCREEN_UPDATE_STATIC(sidearms)
MCFG_GFXDECODE(turtship)
MCFG_PALETTE_LENGTH(1024)
@@ -761,10 +759,9 @@ static MACHINE_CONFIG_START( whizz, sidearms_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(sidearms)
+ MCFG_SCREEN_UPDATE_STATIC(sidearms)
MCFG_SCREEN_EOF(sidearms)
MCFG_GFXDECODE(turtship)
diff --git a/src/mame/drivers/sidepckt.c b/src/mame/drivers/sidepckt.c
index b28db1419dd..bb660f85899 100644
--- a/src/mame/drivers/sidepckt.c
+++ b/src/mame/drivers/sidepckt.c
@@ -274,10 +274,9 @@ static MACHINE_CONFIG_START( sidepckt, sidepckt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* VERIFY: May be 55 or 56 */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(sidepckt)
+ MCFG_SCREEN_UPDATE_STATIC(sidepckt)
MCFG_GFXDECODE(sidepckt)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c
index e4e01390f8e..c1f73dc4bfa 100644
--- a/src/mame/drivers/sigmab52.c
+++ b/src/mame/drivers/sigmab52.c
@@ -156,7 +156,7 @@ static VIDEO_START( jwildb52 )
}
-static SCREEN_UPDATE( jwildb52 )
+static SCREEN_UPDATE_IND16( jwildb52 )
{
device_t *hd63484 = screen.machine().device("hd63484");
@@ -594,10 +594,9 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 384-1)
- MCFG_SCREEN_UPDATE(jwildb52)
+ MCFG_SCREEN_UPDATE_STATIC(jwildb52)
MCFG_HD63484_ADD("hd63484", jwildb52_hd63484_intf)
diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c
index 681bef40a64..2dfddcbcb04 100644
--- a/src/mame/drivers/sigmab98.c
+++ b/src/mame/drivers/sigmab98.c
@@ -167,7 +167,7 @@ public:
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri_mask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_mask)
{
sigmab98_state *state = machine.driver_data<sigmab98_state>();
UINT8 *end = state->m_spriteram - 0x10;
@@ -249,7 +249,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static SCREEN_UPDATE(sigmab98)
+static SCREEN_UPDATE_IND16(sigmab98)
{
int layers_ctrl = -1;
@@ -1684,10 +1684,9 @@ static MACHINE_CONFIG_START( gegege, sigmab98_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) // ?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1)
- MCFG_SCREEN_UPDATE(sigmab98)
+ MCFG_SCREEN_UPDATE_STATIC(sigmab98)
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
@@ -1739,10 +1738,9 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE(sigmab98)
+ MCFG_SCREEN_UPDATE_STATIC(sigmab98)
MCFG_SCREEN_EOF(sammymdl)
MCFG_GFXDECODE(sigmab98)
diff --git a/src/mame/drivers/silkroad.c b/src/mame/drivers/silkroad.c
index 9264f74005f..5e710a55c3b 100644
--- a/src/mame/drivers/silkroad.c
+++ b/src/mame/drivers/silkroad.c
@@ -289,10 +289,9 @@ static MACHINE_CONFIG_START( silkroad, silkroad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(silkroad)
+ MCFG_SCREEN_UPDATE_STATIC(silkroad)
MCFG_GFXDECODE(silkroad)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/simpl156.c b/src/mame/drivers/simpl156.c
index 95f274b81b1..bdb68f900ce 100644
--- a/src/mame/drivers/simpl156.c
+++ b/src/mame/drivers/simpl156.c
@@ -443,10 +443,9 @@ static MACHINE_CONFIG_START( chainrec, simpl156_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(800))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(simpl156)
+ MCFG_SCREEN_UPDATE_STATIC(simpl156)
MCFG_PALETTE_LENGTH(4096)
MCFG_GFXDECODE(simpl156)
diff --git a/src/mame/drivers/simpsons.c b/src/mame/drivers/simpsons.c
index 37e390cc4ff..257d03f1873 100644
--- a/src/mame/drivers/simpsons.c
+++ b/src/mame/drivers/simpsons.c
@@ -327,10 +327,9 @@ static MACHINE_CONFIG_START( simpsons, simpsons_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1856)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(simpsons)
+ MCFG_SCREEN_UPDATE_STATIC(simpsons)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/skeetsht.c b/src/mame/drivers/skeetsht.c
index 88cc856af17..edc28386e52 100644
--- a/src/mame/drivers/skeetsht.c
+++ b/src/mame/drivers/skeetsht.c
@@ -58,7 +58,7 @@ static VIDEO_START ( skeetsht )
{
}
-static void skeetsht_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void skeetsht_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
skeetsht_state *state = screen.machine().driver_data<skeetsht_state>();
const rgb_t *const pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
@@ -232,7 +232,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
48000000 / 8, /* pixel clock */
1, /* pixels per clock */
- skeetsht_scanline_update, /* scanline updater */
+ NULL, /* scanline updater (indexed16) */
+ skeetsht_scanline_update, /* scanline updater (rgb32) */
skeetsht_tms_irq, /* generate interrupt */
NULL, /* write to shiftreg function */
NULL /* read from shiftreg function */
@@ -262,9 +263,8 @@ static MACHINE_CONFIG_START( skeetsht, skeetsht_state )
MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(48000000 / 8, 156*4, 0, 100*4, 328, 0, 300) // FIXME
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
MCFG_VIDEO_START(skeetsht)
diff --git a/src/mame/drivers/skimaxx.c b/src/mame/drivers/skimaxx.c
index b6dc3274fa6..3324ac37825 100644
--- a/src/mame/drivers/skimaxx.c
+++ b/src/mame/drivers/skimaxx.c
@@ -137,11 +137,11 @@ static VIDEO_START( skimaxx )
memory_configure_bank(machine, "bank1", 1, 1, state->m_bg_buffer_front, 0);
}
-static SCREEN_UPDATE( skimaxx )
+static SCREEN_UPDATE_IND16( skimaxx )
{
// popmessage("%02x %02x", input_port_read(screen.machine(), "X"), input_port_read(screen.machine(), "Y") );
- SCREEN_UPDATE_CALL(tms340x0);
+ SCREEN_UPDATE16_CALL(tms340x0_ind16);
return 0;
}
@@ -172,7 +172,7 @@ static void skimaxx_from_shiftreg(address_space *space, UINT32 address, UINT16 *
*
*************************************/
-static void skimaxx_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void skimaxx_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
skimaxx_state *state = screen.machine().driver_data<skimaxx_state>();
// TODO: This isn't correct. I just hacked it together quickly so I could see something!
@@ -486,7 +486,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
50000000/8, /* pixel clock */
2, /* pixels per clock */
- skimaxx_scanline_update, /* scanline updater */
+ skimaxx_scanline_update, /* scanline updater (indexed16) */
+ NULL, /* scanline updater (rgb32) */
skimaxx_tms_irq, /* generate interrupt */
skimaxx_to_shiftreg, /* write to shiftreg function */
skimaxx_from_shiftreg /* read from shiftreg function */
@@ -526,14 +527,13 @@ static MACHINE_CONFIG_START( skimaxx, skimaxx_state )
MCFG_CPU_PROGRAM_MAP(tms_program_map)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
// MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300) // TODO - Wrong but TMS overrides it anyway
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(0x400, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x280-1, 0, 0xf0-1)
-// MCFG_SCREEN_UPDATE(tms340x0)
- MCFG_SCREEN_UPDATE(skimaxx)
+// MCFG_SCREEN_UPDATE_STATIC(tms340x0_ind16)
+ MCFG_SCREEN_UPDATE_STATIC(skimaxx)
MCFG_VIDEO_START(skimaxx)
diff --git a/src/mame/drivers/skullxbo.c b/src/mame/drivers/skullxbo.c
index 65a5a952f32..41b1999e393 100644
--- a/src/mame/drivers/skullxbo.c
+++ b/src/mame/drivers/skullxbo.c
@@ -271,11 +271,10 @@ static MACHINE_CONFIG_START( skullxbo, skullxbo_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(skullxbo)
+ MCFG_SCREEN_UPDATE_STATIC(skullxbo)
MCFG_VIDEO_START(skullxbo)
diff --git a/src/mame/drivers/skyarmy.c b/src/mame/drivers/skyarmy.c
index 990bd3f2c97..36d31c3650b 100644
--- a/src/mame/drivers/skyarmy.c
+++ b/src/mame/drivers/skyarmy.c
@@ -115,7 +115,7 @@ static VIDEO_START( skyarmy )
}
-static SCREEN_UPDATE( skyarmy )
+static SCREEN_UPDATE_IND16( skyarmy )
{
skyarmy_state *state = screen.machine().driver_data<skyarmy_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -283,10 +283,9 @@ static MACHINE_CONFIG_START( skyarmy, skyarmy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8,32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
- MCFG_SCREEN_UPDATE(skyarmy)
+ MCFG_SCREEN_UPDATE_STATIC(skyarmy)
MCFG_GFXDECODE(skyarmy)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/skydiver.c b/src/mame/drivers/skydiver.c
index 20997bd6b66..8dca7f43bc4 100644
--- a/src/mame/drivers/skydiver.c
+++ b/src/mame/drivers/skydiver.c
@@ -385,10 +385,9 @@ static MACHINE_CONFIG_START( skydiver, skydiver_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(skydiver)
+ MCFG_SCREEN_UPDATE_STATIC(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 ce695d3a311..6c0ee953211 100644
--- a/src/mame/drivers/skyfox.c
+++ b/src/mame/drivers/skyfox.c
@@ -255,10 +255,9 @@ static MACHINE_CONFIG_START( skyfox, skyfox_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(62.65)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(skyfox)
+ MCFG_SCREEN_UPDATE_STATIC(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 2beca5f5188..27ddbb58bfc 100644
--- a/src/mame/drivers/skykid.c
+++ b/src/mame/drivers/skykid.c
@@ -465,10 +465,9 @@ static MACHINE_CONFIG_START( skykid, skykid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(skykid)
+ MCFG_SCREEN_UPDATE_STATIC(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 4f7eff05bd8..e0d9917183e 100644
--- a/src/mame/drivers/skylncr.c
+++ b/src/mame/drivers/skylncr.c
@@ -149,7 +149,7 @@ static VIDEO_START( skylncr )
}
-static SCREEN_UPDATE( skylncr )
+static SCREEN_UPDATE_IND16( skylncr )
{
skylncr_state *state = screen.machine().driver_data<skylncr_state>();
int i;
@@ -706,10 +706,9 @@ static MACHINE_CONFIG_START( skylncr, skylncr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(skylncr)
+ MCFG_SCREEN_UPDATE_STATIC(skylncr)
MCFG_GFXDECODE(skylncr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/skyraid.c b/src/mame/drivers/skyraid.c
index 9eff95e507f..1441ac8d8d5 100644
--- a/src/mame/drivers/skyraid.c
+++ b/src/mame/drivers/skyraid.c
@@ -231,10 +231,9 @@ static MACHINE_CONFIG_START( skyraid, skyraid_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(22 * 1000000 / 15750))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 239)
- MCFG_SCREEN_UPDATE(skyraid)
+ MCFG_SCREEN_UPDATE_STATIC(skyraid)
MCFG_GFXDECODE(skyraid)
diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c
index 71af6582954..21e8d78ccfb 100644
--- a/src/mame/drivers/slapfght.c
+++ b/src/mame/drivers/slapfght.c
@@ -771,10 +771,9 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 34*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(perfrman)
+ MCFG_SCREEN_UPDATE_STATIC(perfrman)
MCFG_SCREEN_EOF(perfrman)
MCFG_GFXDECODE(perfrman)
@@ -818,10 +817,9 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(slapfight)
+ MCFG_SCREEN_UPDATE_STATIC(slapfight)
MCFG_SCREEN_EOF(perfrman)
MCFG_GFXDECODE(slapfght)
@@ -867,10 +865,9 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(slapfight)
+ MCFG_SCREEN_UPDATE_STATIC(slapfight)
MCFG_SCREEN_EOF(perfrman)
MCFG_GFXDECODE(slapfght)
@@ -917,10 +914,9 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(slapfight)
+ MCFG_SCREEN_UPDATE_STATIC(slapfight)
MCFG_SCREEN_EOF(perfrman)
MCFG_GFXDECODE(slapfght)
diff --git a/src/mame/drivers/slapshot.c b/src/mame/drivers/slapshot.c
index 8cf260e6aa2..76f3ad5da68 100644
--- a/src/mame/drivers/slapshot.c
+++ b/src/mame/drivers/slapshot.c
@@ -566,10 +566,9 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(slapshot)
+ MCFG_SCREEN_UPDATE_STATIC(slapshot)
MCFG_SCREEN_EOF(taito_no_buffer)
MCFG_GFXDECODE(slapshot)
@@ -615,10 +614,9 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(slapshot)
+ MCFG_SCREEN_UPDATE_STATIC(slapshot)
MCFG_SCREEN_EOF(taito_no_buffer)
MCFG_GFXDECODE(slapshot)
diff --git a/src/mame/drivers/sliver.c b/src/mame/drivers/sliver.c
index ca9e93903a5..3e9c25ca273 100644
--- a/src/mame/drivers/sliver.c
+++ b/src/mame/drivers/sliver.c
@@ -100,8 +100,8 @@ public:
int m_clr_offset;
UINT8 *m_colorram;
- bitmap_t *m_bitmap_fg;
- bitmap_t *m_bitmap_bg;
+ bitmap_rgb32 m_bitmap_fg;
+ bitmap_rgb32 m_bitmap_bg;
UINT16 m_tempbuf[8];
@@ -192,30 +192,16 @@ static const int gfxlookup[][4]=
static void plot_pixel_rgb(sliver_state *state, int x, int y, UINT32 r, UINT32 g, UINT32 b)
{
- UINT16 color;
-
if (y < 0 || x < 0 || x > 383 || y > 255)
return;
- if (state->m_bitmap_bg->bpp() == 32)
- {
- state->m_bitmap_bg->pix32(y, x) = r | (g<<8) | (b<<16);
- }
- else
- {
- r>>=3;
- g>>=3;
- b>>=3;
- color = r|(g<<5)|(b<<10);
- state->m_bitmap_bg->pix16(y, x) = color;
- }
+ state->m_bitmap_bg.pix32(y, x) = r | (g<<8) | (b<<16);
}
static void plot_pixel_pal(running_machine &machine, int x, int y, int addr)
{
sliver_state *state = machine.driver_data<sliver_state>();
UINT32 r,g,b;
- UINT16 color;
if (y < 0 || x < 0 || x > 383 || y > 255)
return;
@@ -224,18 +210,7 @@ static void plot_pixel_pal(running_machine &machine, int x, int y, int addr)
g=(state->m_colorram[addr+0x100] << 2) | (state->m_colorram[addr+0x100] & 3);
r=(state->m_colorram[addr+0x200] << 2) | (state->m_colorram[addr+0x200] & 3);
- if (state->m_bitmap_fg->bpp() == 32)
- {
- state->m_bitmap_fg->pix32(y, x) = r | (g<<8) | (b<<16);
- }
- else
- {
- r>>=3;
- g>>=3;
- b>>=3;
- color = r|(g<<5)|(b<<10);
- state->m_bitmap_fg->pix16(y, x) = color;
- }
+ state->m_bitmap_fg.pix32(y, x) = r | (g<<8) | (b<<16);
}
static WRITE16_HANDLER( fifo_data_w )
@@ -299,7 +274,7 @@ static WRITE16_HANDLER( fifo_clear_w )
{
sliver_state *state = space->machine().driver_data<sliver_state>();
- state->m_bitmap_fg->fill(0);
+ state->m_bitmap_fg.fill(0);
state->m_fptr=0;
state->m_tmp_counter=0;
}
@@ -324,7 +299,7 @@ static void render_jpeg(running_machine &machine)
int addr = state->m_jpeg_addr;
UINT8 *rom;
- state->m_bitmap_bg->fill(0);
+ state->m_bitmap_bg.fill(0);
if (addr < 0)
{
return;
@@ -466,16 +441,16 @@ static VIDEO_START(sliver)
{
sliver_state *state = machine.driver_data<sliver_state>();
- state->m_bitmap_bg = machine.primary_screen->alloc_compatible_bitmap();
- state->m_bitmap_fg = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap_bg.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_bitmap_fg.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
-static SCREEN_UPDATE(sliver)
+static SCREEN_UPDATE_RGB32(sliver)
{
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, state->m_bitmap_bg, 0, 0, 0, 0, cliprect);
+ copybitmap_trans(bitmap, state->m_bitmap_fg, 0, 0, 0, 0, cliprect, 0);
return 0;
}
@@ -579,10 +554,9 @@ static MACHINE_CONFIG_START( sliver, sliver_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 384-1-16, 0*8, 240-1)
- MCFG_SCREEN_UPDATE(sliver)
+ MCFG_SCREEN_UPDATE_STATIC(sliver)
MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c
index aed30d873ed..0fb393ad907 100644
--- a/src/mame/drivers/slotcarn.c
+++ b/src/mame/drivers/slotcarn.c
@@ -535,15 +535,6 @@ GFXDECODE_END
-static SCREEN_UPDATE( slotcarn )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
static MACHINE_START(merit)
{
slotcarn_state *state = machine.driver_data<slotcarn_state>();
@@ -620,9 +611,8 @@ static MACHINE_CONFIG_START( slotcarn, slotcarn_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(slotcarn)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/sms.c b/src/mame/drivers/sms.c
index c08f03407de..82f9a7d82f2 100644
--- a/src/mame/drivers/sms.c
+++ b/src/mame/drivers/sms.c
@@ -228,7 +228,7 @@ public:
UINT8 m_communication_port[4];
UINT8 m_communication_port_status;
- bitmap_t *m_bitmap;
+ bitmap_ind16 m_bitmap;
UINT8 m_vid_regs[7];
};
@@ -456,7 +456,7 @@ static WRITE8_HANDLER(video_w)
for ( x = xstart; x < xstart + width; x++ )
{
if ( y < 256 )
- state->m_bitmap->pix16(y, x) = color;
+ state->m_bitmap.pix16(y, x) = color;
}
}
}
@@ -465,16 +465,16 @@ static WRITE8_HANDLER(video_w)
static VIDEO_START( sms )
{
sms_state *state = machine.driver_data<sms_state>();
- state->m_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state_save_register_global_array(machine, state->m_vid_regs);
- state_save_register_global_bitmap(machine, state->m_bitmap);
+ state_save_register_global_bitmap(machine, &state->m_bitmap);
}
-static SCREEN_UPDATE( sms )
+static SCREEN_UPDATE_IND16( sms )
{
sms_state *state = screen.machine().driver_data<sms_state>();
- copybitmap(bitmap, *state->m_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_bitmap, 0, 0, 0, 0, cliprect);
return 0;
}
@@ -572,10 +572,9 @@ static MACHINE_CONFIG_START( sms, sms_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x1b0, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x1af, 0, 0xff)
- MCFG_SCREEN_UPDATE(sms)
+ MCFG_SCREEN_UPDATE_STATIC(sms)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/snesb.c b/src/mame/drivers/snesb.c
index fade313cd29..a4457ed95e1 100644
--- a/src/mame/drivers/snesb.c
+++ b/src/mame/drivers/snesb.c
@@ -531,9 +531,8 @@ static MACHINE_CONFIG_START( kinstb, snesb_state )
MCFG_VIDEO_START( snes )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
- MCFG_SCREEN_UPDATE( snes )
+ MCFG_SCREEN_UPDATE_STATIC( snes )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/snk.c b/src/mame/drivers/snk.c
index 4b36b66d117..10c1260aff3 100644
--- a/src/mame/drivers/snk.c
+++ b/src/mame/drivers/snk.c
@@ -3660,10 +3660,9 @@ static MACHINE_CONFIG_START( marvins, snk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE(marvins)
+ MCFG_SCREEN_UPDATE_STATIC(marvins)
MCFG_GFXDECODE(marvins)
MCFG_PALETTE_LENGTH(0x400)
@@ -3730,10 +3729,9 @@ static MACHINE_CONFIG_START( jcross, snk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE(tnk3)
+ MCFG_SCREEN_UPDATE_STATIC(tnk3)
MCFG_GFXDECODE(tnk3)
MCFG_PALETTE_LENGTH(0x400)
@@ -3809,10 +3807,9 @@ static MACHINE_CONFIG_START( tnk3, snk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE(tnk3)
+ MCFG_SCREEN_UPDATE_STATIC(tnk3)
MCFG_GFXDECODE(tnk3)
MCFG_PALETTE_LENGTH(0x400)
@@ -3894,10 +3891,9 @@ static MACHINE_CONFIG_START( ikari, snk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1)
- MCFG_SCREEN_UPDATE(ikari)
+ MCFG_SCREEN_UPDATE_STATIC(ikari)
MCFG_GFXDECODE(ikari)
MCFG_PALETTE_LENGTH(0x400)
@@ -3950,11 +3946,10 @@ static MACHINE_CONFIG_START( bermudat, snk_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
// 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(gwar)
+ MCFG_SCREEN_UPDATE_STATIC(gwar)
MCFG_GFXDECODE(gwar)
MCFG_PALETTE_LENGTH(0x400)
@@ -4056,10 +4051,9 @@ static MACHINE_CONFIG_START( tdfever, snk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(50*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(tdfever)
+ MCFG_SCREEN_UPDATE_STATIC(tdfever)
MCFG_GFXDECODE(tdfever)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/snk6502.c b/src/mame/drivers/snk6502.c
index 9a178d535fc..8b6bf420cdc 100644
--- a/src/mame/drivers/snk6502.c
+++ b/src/mame/drivers/snk6502.c
@@ -836,10 +836,9 @@ static MACHINE_CONFIG_START( sasuke, snk6502_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((MASTER_CLOCK / 16) / (45 * 32 * 8))
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(snk6502)
+ MCFG_SCREEN_UPDATE_STATIC(snk6502)
MCFG_GFXDECODE(sasuke)
MCFG_PALETTE_LENGTH(32)
@@ -912,10 +911,9 @@ static MACHINE_CONFIG_START( vanguard, snk6502_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((MASTER_CLOCK / 16) / (45 * 32 * 8))
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(snk6502)
+ MCFG_SCREEN_UPDATE_STATIC(snk6502)
MCFG_GFXDECODE(vanguard)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/snk68.c b/src/mame/drivers/snk68.c
index 1bc40f365b8..734cf45cd62 100644
--- a/src/mame/drivers/snk68.c
+++ b/src/mame/drivers/snk68.c
@@ -603,12 +603,11 @@ static MACHINE_CONFIG_START( pow, snk68_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
// the screen parameters are guessed but should be accurate. They
// 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(pow)
+ MCFG_SCREEN_UPDATE_STATIC(pow)
MCFG_GFXDECODE(pow)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/snookr10.c b/src/mame/drivers/snookr10.c
index e6578b11cca..b094de9a529 100644
--- a/src/mame/drivers/snookr10.c
+++ b/src/mame/drivers/snookr10.c
@@ -701,10 +701,9 @@ static MACHINE_CONFIG_START( snookr10, snookr10_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(96*4, 30*8)
MCFG_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(snookr10)
+ MCFG_SCREEN_UPDATE_STATIC(snookr10)
MCFG_GFXDECODE(snookr10)
diff --git a/src/mame/drivers/snowbros.c b/src/mame/drivers/snowbros.c
index c9f30e37302..c0256c52655 100644
--- a/src/mame/drivers/snowbros.c
+++ b/src/mame/drivers/snowbros.c
@@ -81,7 +81,7 @@ static WRITE16_HANDLER( snowbros_flipscreen_w )
}
-static SCREEN_UPDATE( snowbros )
+static SCREEN_UPDATE_IND16( snowbros )
{
device_t *pandora = screen.machine().device("pandora");
@@ -1482,10 +1482,9 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5) /* ~57.5 - confirmed */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(snowbros)
+ MCFG_SCREEN_UPDATE_STATIC(snowbros)
MCFG_SCREEN_EOF(snowbros)
MCFG_GFXDECODE(snowbros)
@@ -1514,7 +1513,7 @@ static MACHINE_CONFIG_DERIVED( wintbob, snowbros )
/* video hardware */
MCFG_GFXDECODE(wb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(wintbob)
+ MCFG_SCREEN_UPDATE_STATIC(wintbob)
MCFG_SCREEN_EOF(0)
MACHINE_CONFIG_END
@@ -1593,10 +1592,9 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(honeydol)
+ MCFG_SCREEN_UPDATE_STATIC(honeydol)
MCFG_GFXDECODE(honeydol)
MCFG_PALETTE_LENGTH(0x800/2)
@@ -1631,10 +1629,9 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.5)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(twinadv)
+ MCFG_SCREEN_UPDATE_STATIC(twinadv)
MCFG_GFXDECODE(twinadv)
MCFG_PALETTE_LENGTH(0x100)
@@ -1704,10 +1701,9 @@ static MACHINE_CONFIG_START( snowbro3, snowbros_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(snowbro3)
+ MCFG_SCREEN_UPDATE_STATIC(snowbro3)
MCFG_GFXDECODE(sb3)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/solomon.c b/src/mame/drivers/solomon.c
index d1a1900ca1f..3282bec6398 100644
--- a/src/mame/drivers/solomon.c
+++ b/src/mame/drivers/solomon.c
@@ -221,10 +221,9 @@ static MACHINE_CONFIG_START( solomon, solomon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(solomon)
+ MCFG_SCREEN_UPDATE_STATIC(solomon)
MCFG_GFXDECODE(solomon)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/sonson.c b/src/mame/drivers/sonson.c
index 10e925ed1cc..6990fc0f4e0 100644
--- a/src/mame/drivers/sonson.c
+++ b/src/mame/drivers/sonson.c
@@ -259,10 +259,9 @@ static MACHINE_CONFIG_START( sonson, sonson_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(sonson)
+ MCFG_SCREEN_UPDATE_STATIC(sonson)
MCFG_GFXDECODE(sonson)
MCFG_PALETTE_LENGTH(64*4+32*8)
diff --git a/src/mame/drivers/sothello.c b/src/mame/drivers/sothello.c
index a987453b48d..3aa0a11ec57 100644
--- a/src/mame/drivers/sothello.c
+++ b/src/mame/drivers/sothello.c
@@ -46,11 +46,13 @@ class sothello_state : public driver_device
{
public:
sothello_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938") { }
int m_subcpu_status;
int m_soundcpu_busy;
int m_msm_data;
+ required_device<v9938_device> m_v9938;
};
@@ -139,10 +141,7 @@ static ADDRESS_MAP_START( maincpu_io_map, AS_IO, 8 )
AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w)
AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
/* not sure, but the A1 line is ignored, code @ $8b8 */
- AM_RANGE( 0x70, 0x70) AM_WRITE( v9938_0_vram_w ) AM_READ( v9938_0_vram_r )
- AM_RANGE( 0x71, 0x71) AM_WRITE( v9938_0_command_w ) AM_READ( v9938_0_status_r )
- AM_RANGE( 0x72, 0x72) AM_WRITE( v9938_0_palette_w )
- AM_RANGE( 0x73, 0x73) AM_WRITE( v9938_0_register_w )
+ AM_RANGE( 0x70, 0x73) AM_DEVREADWRITE_MODERN( "v9938", v9938_device, read, write )
ADDRESS_MAP_END
/* sound Z80 */
@@ -311,14 +310,15 @@ static void irqhandler(device_t *device, int irq)
cputag_set_input_line(device->machine(), "sub", 0, irq ? ASSERT_LINE : CLEAR_LINE);
}
-static void sothello_vdp_interrupt(running_machine &machine, int i)
+static void sothello_vdp_interrupt(device_t *, v99x8_device &device, int i)
{
- cputag_set_input_line(machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
+ cputag_set_input_line(device.machine(), "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
}
static TIMER_DEVICE_CALLBACK( sothello_interrupt )
{
- v9938_interrupt(timer.machine(), 0);
+ sothello_state *state = timer.machine().driver_data<sothello_state>();
+ state->m_v9938->interrupt();
}
static void adpcm_int(device_t *device)
@@ -336,15 +336,8 @@ static const msm5205_interface msm_interface =
MSM5205_S48_4B /* changed on the fly */
};
-static VIDEO_START( sothello )
-{
- v9938_init (machine, 0, *machine.primary_screen, machine.primary_screen->default_bitmap(), MODEL_V9938, VDP_MEM, sothello_vdp_interrupt);
- v9938_reset(0);
-}
-
static MACHINE_RESET(sothello)
{
- v9938_reset(0);
}
static const ym2203_interface ym2203_config =
@@ -380,16 +373,18 @@ static MACHINE_CONFIG_START( sothello, sothello_state )
MCFG_MACHINE_RESET(sothello)
+ MCFG_V9938_ADD("v9938", "screen", VDP_MEM)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(sothello_vdp_interrupt)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_SCREEN_SIZE(512 + 32, (212 + 28) * 2)
MCFG_SCREEN_VISIBLE_AREA(0, 512 + 32 - 1, 0, (212 + 28) * 2 - 1)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT( v9938 )
- MCFG_VIDEO_START(sothello)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spacefb.c b/src/mame/drivers/spacefb.c
index 7c594a606c7..40887dac5e9 100644
--- a/src/mame/drivers/spacefb.c
+++ b/src/mame/drivers/spacefb.c
@@ -354,9 +354,8 @@ static MACHINE_CONFIG_START( spacefb, spacefb_state )
MCFG_VIDEO_START(spacefb)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(SPACEFB_PIXEL_CLOCK, SPACEFB_HTOTAL, SPACEFB_HBEND, SPACEFB_HBSTART, SPACEFB_VTOTAL, SPACEFB_VBEND, SPACEFB_VBSTART)
- MCFG_SCREEN_UPDATE(spacefb)
+ MCFG_SCREEN_UPDATE_STATIC(spacefb)
/* audio hardware */
MCFG_FRAGMENT_ADD(spacefb_audio)
diff --git a/src/mame/drivers/spaceg.c b/src/mame/drivers/spaceg.c
index c2dc089215b..cef556d3e0a 100644
--- a/src/mame/drivers/spaceg.c
+++ b/src/mame/drivers/spaceg.c
@@ -292,7 +292,7 @@ static READ8_HANDLER(spaceg_colorram_r)
}
-static SCREEN_UPDATE( spaceg )
+static SCREEN_UPDATE_IND16( spaceg )
{
spaceg_state *state = screen.machine().driver_data<spaceg_state>();
offs_t offs;
@@ -412,10 +412,9 @@ static MACHINE_CONFIG_START( spaceg, spaceg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 32, 255)
- MCFG_SCREEN_UPDATE( spaceg )
+ MCFG_SCREEN_UPDATE_STATIC( spaceg )
MCFG_PALETTE_LENGTH(16+128-16)
MCFG_PALETTE_INIT( spaceg )
diff --git a/src/mame/drivers/spbactn.c b/src/mame/drivers/spbactn.c
index 5c3f90df0e9..5ad3e5f46b1 100644
--- a/src/mame/drivers/spbactn.c
+++ b/src/mame/drivers/spbactn.c
@@ -347,10 +347,9 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(spbactn)
+ MCFG_SCREEN_UPDATE_STATIC(spbactn)
MCFG_GFXDECODE(spbactn)
MCFG_PALETTE_LENGTH(0x2800/2)
diff --git a/src/mame/drivers/spcforce.c b/src/mame/drivers/spcforce.c
index 91839135dfa..e0aede681ff 100644
--- a/src/mame/drivers/spcforce.c
+++ b/src/mame/drivers/spcforce.c
@@ -269,10 +269,9 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(spcforce)
+ MCFG_SCREEN_UPDATE_STATIC(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 ed46f859821..ee7b4e7c4de 100644
--- a/src/mame/drivers/spdodgeb.c
+++ b/src/mame/drivers/spdodgeb.c
@@ -426,8 +426,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(spdodgeb)
+ MCFG_SCREEN_UPDATE_STATIC(spdodgeb)
MCFG_GFXDECODE(spdodgeb)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/speedatk.c b/src/mame/drivers/speedatk.c
index 856852f12e4..133e2e7f1e5 100644
--- a/src/mame/drivers/speedatk.c
+++ b/src/mame/drivers/speedatk.c
@@ -338,10 +338,9 @@ static MACHINE_CONFIG_START( speedatk, speedatk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(speedatk)
+ MCFG_SCREEN_UPDATE_STATIC(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 969fa99694e..b3f0c0d365d 100644
--- a/src/mame/drivers/speedbal.c
+++ b/src/mame/drivers/speedbal.c
@@ -236,10 +236,9 @@ static MACHINE_CONFIG_START( speedbal, speedbal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(speedbal)
+ MCFG_SCREEN_UPDATE_STATIC(speedbal)
MCFG_GFXDECODE(speedbal)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/speedspn.c b/src/mame/drivers/speedspn.c
index d351bc987d0..7d608512216 100644
--- a/src/mame/drivers/speedspn.c
+++ b/src/mame/drivers/speedspn.c
@@ -281,10 +281,9 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(speedspn)
+ MCFG_SCREEN_UPDATE_STATIC(speedspn)
MCFG_GFXDECODE(speedspn)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/speglsht.c b/src/mame/drivers/speglsht.c
index 5ccc1a46537..dc12f820f98 100644
--- a/src/mame/drivers/speglsht.c
+++ b/src/mame/drivers/speglsht.c
@@ -119,7 +119,7 @@ public:
UINT8 *m_shared;
UINT32 *m_framebuffer;
UINT32 m_videoreg;
- bitmap_t *m_bitmap;
+ bitmap_ind16 *m_bitmap;
UINT32 *m_cop_ram;
};
@@ -334,7 +334,7 @@ static MACHINE_RESET(speglsht)
static VIDEO_START(speglsht)
{
speglsht_state *state = machine.driver_data<speglsht_state>();
- state->m_bitmap = auto_bitmap_alloc(machine, 512, 5122, BITMAP_FORMAT_INDEXED16 );
+ state->m_bitmap = auto_bitmap_ind16_alloc(machine, 512, 5122 );
VIDEO_START_CALL(st0016);
}
@@ -343,7 +343,7 @@ static VIDEO_START(speglsht)
bitmap.pix32(y, x) = (b) | ((g)<<8) | ((r)<<16); \
}
-static SCREEN_UPDATE(speglsht)
+static SCREEN_UPDATE_RGB32(speglsht)
{
speglsht_state *state = screen.machine().driver_data<speglsht_state>();
int x,y,dy;
@@ -400,10 +400,9 @@ static MACHINE_CONFIG_START( speglsht, speglsht_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 239-8)
- MCFG_SCREEN_UPDATE(speglsht)
+ MCFG_SCREEN_UPDATE_STATIC(speglsht)
MCFG_GFXDECODE(speglsht)
MCFG_PALETTE_LENGTH(16*16*4+1)
diff --git a/src/mame/drivers/spiders.c b/src/mame/drivers/spiders.c
index 5cdb01d85c2..df8d612ed17 100644
--- a/src/mame/drivers/spiders.c
+++ b/src/mame/drivers/spiders.c
@@ -521,15 +521,6 @@ static const mc6845_interface mc6845_intf =
};
-static SCREEN_UPDATE( spiders )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
/*************************************
*
@@ -715,9 +706,8 @@ static MACHINE_CONFIG_START( spiders, spiders_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(spiders)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/splash.c b/src/mame/drivers/splash.c
index d3b3a1a64a8..f02bcf99c9f 100644
--- a/src/mame/drivers/splash.c
+++ b/src/mame/drivers/splash.c
@@ -518,10 +518,9 @@ static MACHINE_CONFIG_START( splash, splash_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(splash)
+ MCFG_SCREEN_UPDATE_STATIC(splash)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
@@ -576,11 +575,10 @@ static MACHINE_CONFIG_START( roldfrog, splash_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(splash)
+ MCFG_SCREEN_UPDATE_STATIC(splash)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
@@ -659,10 +657,9 @@ static MACHINE_CONFIG_START( funystrp, splash_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(funystrp)
+ MCFG_SCREEN_UPDATE_STATIC(funystrp)
MCFG_GFXDECODE(splash)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/splus.c b/src/mame/drivers/splus.c
index 87555f4b36b..1a20e9cc8d0 100644
--- a/src/mame/drivers/splus.c
+++ b/src/mame/drivers/splus.c
@@ -48,6 +48,11 @@ public:
m_p1_unknown = 0x00;
}
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+ {
+ return 0;
+ }
+
// Pointers to External RAM
required_shared_ptr<UINT8> m_cmosl_ram;
required_shared_ptr<UINT8> m_cmosh_ram;
@@ -682,7 +687,7 @@ static MACHINE_CONFIG_START( splus, splus_state ) // basic machine hardware
MCFG_SCREEN_ADD("scrn", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(splus_state, screen_update)
MCFG_SCREEN_SIZE((52+1)*8, (31+1)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 25*8-1)
diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c
index a2eab50eb45..b7775f2a63f 100644
--- a/src/mame/drivers/spoker.c
+++ b/src/mame/drivers/spoker.c
@@ -89,7 +89,7 @@ static VIDEO_START(spoker)
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static SCREEN_UPDATE(spoker)
+static SCREEN_UPDATE_IND16(spoker)
{
spoker_state *state = screen.machine().driver_data<spoker_state>();
@@ -539,10 +539,9 @@ static MACHINE_CONFIG_START( spoker, spoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
- MCFG_SCREEN_UPDATE(spoker)
+ MCFG_SCREEN_UPDATE_STATIC(spoker)
MCFG_GFXDECODE(spoker)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/spool99.c b/src/mame/drivers/spool99.c
index 1727c2b494e..e9a80b79069 100644
--- a/src/mame/drivers/spool99.c
+++ b/src/mame/drivers/spool99.c
@@ -126,7 +126,7 @@ static VIDEO_START(spool99)
state->m_sc0_tilemap = tilemap_create(machine, get_spool99_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
}
-static SCREEN_UPDATE(spool99)
+static SCREEN_UPDATE_IND16(spool99)
{
spool99_state *state = screen.machine().driver_data<spool99_state>();
@@ -347,10 +347,9 @@ static MACHINE_CONFIG_START( spool99, spool99_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(spool99)
+ MCFG_SCREEN_UPDATE_STATIC(spool99)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/sprcros2.c b/src/mame/drivers/sprcros2.c
index e14fe8dc9df..638f644df0e 100644
--- a/src/mame/drivers/sprcros2.c
+++ b/src/mame/drivers/sprcros2.c
@@ -282,10 +282,9 @@ static MACHINE_CONFIG_START( sprcros2, sprcros2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(sprcros2)
+ MCFG_SCREEN_UPDATE_STATIC(sprcros2)
MCFG_GFXDECODE(sprcros2)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/sprint2.c b/src/mame/drivers/sprint2.c
index 373c9de6ece..c2f8ecf209e 100644
--- a/src/mame/drivers/sprint2.c
+++ b/src/mame/drivers/sprint2.c
@@ -513,10 +513,9 @@ static MACHINE_CONFIG_START( sprint2, sprint2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 223)
- MCFG_SCREEN_UPDATE(sprint2)
+ MCFG_SCREEN_UPDATE_STATIC(sprint2)
MCFG_SCREEN_EOF(sprint2)
MCFG_GFXDECODE(sprint2)
diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c
index 69183e54ad9..55c43aa41cf 100644
--- a/src/mame/drivers/sprint4.c
+++ b/src/mame/drivers/sprint4.c
@@ -406,9 +406,8 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE(sprint4)
+ MCFG_SCREEN_UPDATE_STATIC(sprint4)
MCFG_SCREEN_EOF(sprint4)
MCFG_GFXDECODE(sprint4)
diff --git a/src/mame/drivers/sprint8.c b/src/mame/drivers/sprint8.c
index 6baea42198d..5e3bccf439e 100644
--- a/src/mame/drivers/sprint8.c
+++ b/src/mame/drivers/sprint8.c
@@ -466,10 +466,9 @@ static MACHINE_CONFIG_START( sprint8, sprint8_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 261)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 231)
- MCFG_SCREEN_UPDATE(sprint8)
+ MCFG_SCREEN_UPDATE_STATIC(sprint8)
MCFG_SCREEN_EOF(sprint8)
MCFG_GFXDECODE(sprint8)
diff --git a/src/mame/drivers/spy.c b/src/mame/drivers/spy.c
index 0f748b58f83..a6a81afa55c 100644
--- a/src/mame/drivers/spy.c
+++ b/src/mame/drivers/spy.c
@@ -561,10 +561,9 @@ static MACHINE_CONFIG_START( spy, spy_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(spy)
+ MCFG_SCREEN_UPDATE_STATIC(spy)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c
index fc32321640e..75187582124 100644
--- a/src/mame/drivers/srmp2.c
+++ b/src/mame/drivers/srmp2.c
@@ -1188,10 +1188,9 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(464, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 464-1, 8, 256-1-24)
- MCFG_SCREEN_UPDATE(srmp2) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(srmp2) /* just draw the sprites */
MCFG_GFXDECODE(srmp2)
MCFG_PALETTE_LENGTH(1024) /* sprites only */
@@ -1230,10 +1229,9 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(400, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 8, 256-1-24)
- MCFG_SCREEN_UPDATE(srmp3) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(srmp3) /* just draw the sprites */
MCFG_GFXDECODE(srmp3)
MCFG_PALETTE_LENGTH(512) /* sprites only */
@@ -1281,10 +1279,9 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(400, 256-16)
MCFG_SCREEN_VISIBLE_AREA(16, 400-1, 0, 256-1-16)
- MCFG_SCREEN_UPDATE(mjyuugi) /* just draw the sprites */
+ MCFG_SCREEN_UPDATE_STATIC(mjyuugi) /* just draw the sprites */
MCFG_GFXDECODE(srmp3)
MCFG_PALETTE_LENGTH(512) /* sprites only */
diff --git a/src/mame/drivers/srmp5.c b/src/mame/drivers/srmp5.c
index 43b10f4b29e..23edbb54596 100644
--- a/src/mame/drivers/srmp5.c
+++ b/src/mame/drivers/srmp5.c
@@ -85,7 +85,7 @@ public:
};
-static SCREEN_UPDATE( srmp5 )
+static SCREEN_UPDATE_RGB32( srmp5 )
{
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;
@@ -570,10 +570,9 @@ static MACHINE_CONFIG_START( srmp5, srmp5_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(96*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(srmp5)
+ MCFG_SCREEN_UPDATE_STATIC(srmp5)
MCFG_PALETTE_LENGTH(0x1800)
#ifdef DEBUG_CHAR
diff --git a/src/mame/drivers/srmp6.c b/src/mame/drivers/srmp6.c
index 510c46fb154..1e1653b99e7 100644
--- a/src/mame/drivers/srmp6.c
+++ b/src/mame/drivers/srmp6.c
@@ -158,7 +158,7 @@ static VIDEO_START(srmp6)
static int xixi=0;
#endif
-static SCREEN_UPDATE(srmp6)
+static SCREEN_UPDATE_RGB32(srmp6)
{
srmp6_state *state = screen.machine().driver_data<srmp6_state>();
int alpha;
@@ -673,10 +673,9 @@ static MACHINE_CONFIG_START( srmp6, srmp6_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(srmp6)
+ MCFG_SCREEN_UPDATE_STATIC(srmp6)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c
index 18767ba8e0f..49c90f8da86 100644
--- a/src/mame/drivers/srumbler.c
+++ b/src/mame/drivers/srumbler.c
@@ -253,10 +253,9 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(srumbler)
+ MCFG_SCREEN_UPDATE_STATIC(srumbler)
MCFG_SCREEN_EOF(srumbler)
MCFG_GFXDECODE(srumbler)
diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c
index c54455e8798..03ee86d8e98 100644
--- a/src/mame/drivers/ssfindo.c
+++ b/src/mame/drivers/ssfindo.c
@@ -236,7 +236,7 @@ static void PS7500_startTimer0(running_machine &machine);
static void PS7500_startTimer1(running_machine &machine);
-static SCREEN_UPDATE(ssfindo)
+static SCREEN_UPDATE_IND16(ssfindo)
{
ssfindo_state *state = screen.machine().driver_data<ssfindo_state>();
int s,x,y;
@@ -752,10 +752,9 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(ssfindo)
+ MCFG_SCREEN_UPDATE_STATIC(ssfindo)
MCFG_PALETTE_LENGTH(256)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sshangha.c b/src/mame/drivers/sshangha.c
index 2f34f136581..7d519d78228 100644
--- a/src/mame/drivers/sshangha.c
+++ b/src/mame/drivers/sshangha.c
@@ -416,10 +416,9 @@ static MACHINE_CONFIG_START( sshangha, sshangha_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(sshangha)
+ MCFG_SCREEN_UPDATE_STATIC(sshangha)
MCFG_GFXDECODE(sshangha)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/sshot.c b/src/mame/drivers/sshot.c
index 691a3054a4c..3f89c2dd94e 100644
--- a/src/mame/drivers/sshot.c
+++ b/src/mame/drivers/sshot.c
@@ -189,7 +189,7 @@ static VIDEO_START( supershot )
state->m_tilemap = tilemap_create(machine, get_supershot_text_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( supershot )
+static SCREEN_UPDATE_IND16( supershot )
{
supershot_state *state = screen.machine().driver_data<supershot_state>();
tilemap_draw(bitmap, cliprect, state->m_tilemap, 0, 0);
@@ -333,12 +333,11 @@ static MACHINE_CONFIG_START( supershot, supershot_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_VIDEO_START(supershot)
- MCFG_SCREEN_UPDATE(supershot)
+ MCFG_SCREEN_UPDATE_STATIC(supershot)
MCFG_GFXDECODE(supershot)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/ssingles.c b/src/mame/drivers/ssingles.c
index bc5777b49ba..9a360fa1744 100644
--- a/src/mame/drivers/ssingles.c
+++ b/src/mame/drivers/ssingles.c
@@ -314,15 +314,6 @@ static VIDEO_START(ssingles)
}
-static SCREEN_UPDATE( ssingles )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
static READ8_HANDLER(c000_r)
{
ssingles_state *state = space->machine().driver_data<ssingles_state>();
@@ -578,9 +569,8 @@ static MACHINE_CONFIG_START( ssingles, ssingles_state )
MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(4000000, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(ssingles)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_PALETTE_LENGTH(4) //guess
diff --git a/src/mame/drivers/sslam.c b/src/mame/drivers/sslam.c
index b2561e7e000..0bca0f5aea9 100644
--- a/src/mame/drivers/sslam.c
+++ b/src/mame/drivers/sslam.c
@@ -724,10 +724,9 @@ static MACHINE_CONFIG_START( sslam, sslam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(sslam)
+ MCFG_SCREEN_UPDATE_STATIC(sslam)
MCFG_GFXDECODE(sslam)
MCFG_PALETTE_LENGTH(0x800)
@@ -755,10 +754,9 @@ static MACHINE_CONFIG_START( powerbls, sslam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(powerbls)
+ MCFG_SCREEN_UPDATE_STATIC(powerbls)
MCFG_GFXDECODE(powerbls)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/ssozumo.c b/src/mame/drivers/ssozumo.c
index bc3ccf66186..7f13c218214 100644
--- a/src/mame/drivers/ssozumo.c
+++ b/src/mame/drivers/ssozumo.c
@@ -204,10 +204,9 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8 - 1, 1*8, 31*8 - 1)
- MCFG_SCREEN_UPDATE(ssozumo)
+ MCFG_SCREEN_UPDATE_STATIC(ssozumo)
MCFG_GFXDECODE(ssozumo)
MCFG_PALETTE_LENGTH(64 + 16)
diff --git a/src/mame/drivers/sspeedr.c b/src/mame/drivers/sspeedr.c
index 8935d5c39f7..aba7dd55f9b 100644
--- a/src/mame/drivers/sspeedr.c
+++ b/src/mame/drivers/sspeedr.c
@@ -198,10 +198,9 @@ static MACHINE_CONFIG_START( sspeedr, sspeedr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.39)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(16 * 1000000 / 15680))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(376, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 375, 0, 247)
- MCFG_SCREEN_UPDATE(sspeedr)
+ MCFG_SCREEN_UPDATE_STATIC(sspeedr)
MCFG_SCREEN_EOF(sspeedr)
MCFG_GFXDECODE(sspeedr)
diff --git a/src/mame/drivers/ssrj.c b/src/mame/drivers/ssrj.c
index 6cc5531a0dc..1fc67e28a55 100644
--- a/src/mame/drivers/ssrj.c
+++ b/src/mame/drivers/ssrj.c
@@ -152,10 +152,9 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ssrj)
+ MCFG_SCREEN_UPDATE_STATIC(ssrj)
MCFG_SCREEN_EOF(ssrj)
MCFG_GFXDECODE(ssrj)
diff --git a/src/mame/drivers/sstrangr.c b/src/mame/drivers/sstrangr.c
index a4254b976e3..b49b2688611 100644
--- a/src/mame/drivers/sstrangr.c
+++ b/src/mame/drivers/sstrangr.c
@@ -32,7 +32,7 @@ public:
*
*************************************/
-static SCREEN_UPDATE( sstrangr )
+static SCREEN_UPDATE_RGB32( sstrangr )
{
sstrangr_state *state = screen.machine().driver_data<sstrangr_state>();
offs_t offs;
@@ -81,7 +81,7 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE( sstrngr2 )
+static SCREEN_UPDATE_RGB32( sstrngr2 )
{
sstrangr_state *state = screen.machine().driver_data<sstrangr_state>();
pen_t pens[NUM_PENS];
@@ -200,11 +200,10 @@ static MACHINE_CONFIG_START( sstrangr, sstrangr_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(sstrangr)
+ MCFG_SCREEN_UPDATE_STATIC(sstrangr)
/* sound hardware */
@@ -267,7 +266,7 @@ static MACHINE_CONFIG_DERIVED( sstrngr2, sstrangr )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(sstrngr2)
+ MCFG_SCREEN_UPDATE_STATIC(sstrngr2)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c
index cde3979d51d..b8d23b1b44e 100644
--- a/src/mame/drivers/ssv.c
+++ b/src/mame/drivers/ssv.c
@@ -2729,10 +2729,9 @@ static MACHINE_CONFIG_START( ssv, ssv_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x1c6, 0x106)
MCFG_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE(ssv)
+ MCFG_SCREEN_UPDATE_STATIC(ssv)
MCFG_GFXDECODE(ssv)
MCFG_PALETTE_LENGTH(0x8000)
@@ -2781,7 +2780,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(gdfs)
+ MCFG_SCREEN_UPDATE_STATIC(gdfs)
MCFG_GFXDECODE(gdfs)
MCFG_VIDEO_START(gdfs)
@@ -2959,7 +2958,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(eaglshot)
+ MCFG_SCREEN_UPDATE_STATIC(eaglshot)
MCFG_GFXDECODE(eaglshot)
MCFG_VIDEO_START(eaglshot)
diff --git a/src/mame/drivers/st0016.c b/src/mame/drivers/st0016.c
index 2d98caceb97..927f49dd2bf 100644
--- a/src/mame/drivers/st0016.c
+++ b/src/mame/drivers/st0016.c
@@ -447,10 +447,9 @@ static MACHINE_CONFIG_START( st0016, st0016_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(48*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(st0016)
+ MCFG_SCREEN_UPDATE_STATIC(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 e477946b5d3..efe132acc0b 100644
--- a/src/mame/drivers/stadhero.c
+++ b/src/mame/drivers/stadhero.c
@@ -226,10 +226,9 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(stadhero)
+ MCFG_SCREEN_UPDATE_STATIC(stadhero)
MCFG_GFXDECODE(stadhero)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/starcrus.c b/src/mame/drivers/starcrus.c
index bc3186265cb..4d246521f34 100644
--- a/src/mame/drivers/starcrus.c
+++ b/src/mame/drivers/starcrus.c
@@ -146,10 +146,9 @@ static MACHINE_CONFIG_START( starcrus, starcrus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(starcrus)
+ MCFG_SCREEN_UPDATE_STATIC(starcrus)
MCFG_GFXDECODE(starcrus)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/starfire.c b/src/mame/drivers/starfire.c
index 7814244dcc0..16eb82cd86d 100644
--- a/src/mame/drivers/starfire.c
+++ b/src/mame/drivers/starfire.c
@@ -270,9 +270,8 @@ static MACHINE_CONFIG_START( starfire, starfire_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(STARFIRE_PIXEL_CLOCK, STARFIRE_HTOTAL, STARFIRE_HBEND, STARFIRE_HBSTART, STARFIRE_VTOTAL, STARFIRE_VBEND, STARFIRE_VBSTART)
- MCFG_SCREEN_UPDATE(starfire)
+ MCFG_SCREEN_UPDATE_STATIC(starfire)
MCFG_VIDEO_START(starfire)
diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c
index 4a7543e6107..e2efad68979 100644
--- a/src/mame/drivers/starshp1.c
+++ b/src/mame/drivers/starshp1.c
@@ -310,9 +310,8 @@ static MACHINE_CONFIG_START( starshp1, starshp1_state )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART)
- MCFG_SCREEN_UPDATE(starshp1)
+ MCFG_SCREEN_UPDATE_STATIC(starshp1)
MCFG_SCREEN_EOF(starshp1)
MCFG_GFXDECODE(starshp1)
diff --git a/src/mame/drivers/starwars.c b/src/mame/drivers/starwars.c
index 9c9e2e6574e..c9b1c947fd7 100644
--- a/src/mame/drivers/starwars.c
+++ b/src/mame/drivers/starwars.c
@@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 250, 0, 280)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_starwars)
diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c
index e76e78797af..74faac9528d 100644
--- a/src/mame/drivers/statriv2.c
+++ b/src/mame/drivers/statriv2.c
@@ -177,7 +177,7 @@ static WRITE8_HANDLER( statriv2_videoram_w )
*
*************************************/
-static SCREEN_UPDATE( statriv2 )
+static SCREEN_UPDATE_IND16( statriv2 )
{
statriv2_state *state = screen.machine().driver_data<statriv2_state>();
if (tms9927_screen_reset(screen.machine().device("tms")))
@@ -602,9 +602,8 @@ static MACHINE_CONFIG_START( statriv2, statriv2_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 0, 320, 270, 0, 240)
- MCFG_SCREEN_UPDATE(statriv2)
+ MCFG_SCREEN_UPDATE_STATIC(statriv2)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/2, tms9927_intf)
diff --git a/src/mame/drivers/stepstag.c b/src/mame/drivers/stepstag.c
index fe4e6337f77..57da9b2a2c8 100644
--- a/src/mame/drivers/stepstag.c
+++ b/src/mame/drivers/stepstag.c
@@ -229,7 +229,7 @@ static GFXDECODE_START( stepstag )
GFXDECODE_ENTRY( "gfx8", 0, layout_8x8x8, 0x6000, 0x10 ) // [3] Foreground
GFXDECODE_END
-static SCREEN_UPDATE( stepstag )
+static SCREEN_UPDATE_IND16( stepstag )
{
return 0;
}
@@ -250,26 +250,23 @@ static MACHINE_CONFIG_START( stepstag, stepstag_state )
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(stepstag)
+ MCFG_SCREEN_UPDATE_STATIC(stepstag)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(tetrisp2)
+ MCFG_SCREEN_UPDATE_STATIC(tetrisp2)
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(stepstag)
+ MCFG_SCREEN_UPDATE_STATIC(stepstag)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/stfight.c b/src/mame/drivers/stfight.c
index 4db8183efa9..da445c9b3c9 100644
--- a/src/mame/drivers/stfight.c
+++ b/src/mame/drivers/stfight.c
@@ -450,10 +450,9 @@ static MACHINE_CONFIG_START( stfight, stfight_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(stfight)
+ MCFG_SCREEN_UPDATE_STATIC(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 bcbee8dcc2c..5a25c4d0ac3 100644
--- a/src/mame/drivers/stlforce.c
+++ b/src/mame/drivers/stlforce.c
@@ -197,10 +197,9 @@ static MACHINE_CONFIG_START( stlforce, stlforce_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 47*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(stlforce)
+ MCFG_SCREEN_UPDATE_STATIC(stlforce)
MCFG_GFXDECODE(stlforce)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/strnskil.c b/src/mame/drivers/strnskil.c
index 21daf70067a..b3a73b67ecd 100644
--- a/src/mame/drivers/strnskil.c
+++ b/src/mame/drivers/strnskil.c
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( strnskil, strnskil_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(strnskil)
+ MCFG_SCREEN_UPDATE_STATIC(strnskil)
MCFG_GFXDECODE(strnskil)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/sub.c b/src/mame/drivers/sub.c
index dc4b9945f9a..3b540ccfec3 100644
--- a/src/mame/drivers/sub.c
+++ b/src/mame/drivers/sub.c
@@ -130,7 +130,7 @@ static VIDEO_START(sub)
{
}
-static SCREEN_UPDATE(sub)
+static SCREEN_UPDATE_IND16(sub)
{
sub_state *state = screen.machine().driver_data<sub_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -435,10 +435,9 @@ static MACHINE_CONFIG_START( sub, sub_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(sub)
+ MCFG_SCREEN_UPDATE_STATIC(sub)
MCFG_GFXDECODE(sub)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/subs.c b/src/mame/drivers/subs.c
index da35cb86113..3288e7ba4d5 100644
--- a/src/mame/drivers/subs.c
+++ b/src/mame/drivers/subs.c
@@ -189,20 +189,18 @@ static MACHINE_CONFIG_START( subs, subs_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(subs_left)
+ MCFG_SCREEN_UPDATE_STATIC(subs_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(subs_right)
+ MCFG_SCREEN_UPDATE_STATIC(subs_right)
MCFG_PALETTE_INIT(subs)
diff --git a/src/mame/drivers/subsino.c b/src/mame/drivers/subsino.c
index 3c7e1a13ed3..a4fb607b8c3 100644
--- a/src/mame/drivers/subsino.c
+++ b/src/mame/drivers/subsino.c
@@ -451,7 +451,7 @@ static VIDEO_START( stisub )
}
-static SCREEN_UPDATE( subsino )
+static SCREEN_UPDATE_IND16( subsino )
{
subsino_state *state = screen.machine().driver_data<subsino_state>();
bitmap.fill(0, cliprect);
@@ -459,7 +459,7 @@ static SCREEN_UPDATE( subsino )
return 0;
}
-static SCREEN_UPDATE( subsino_reels )
+static SCREEN_UPDATE_IND16( subsino_reels )
{
subsino_state *state = screen.machine().driver_data<subsino_state>();
int i;
@@ -489,7 +489,7 @@ static SCREEN_UPDATE( subsino_reels )
}
-static SCREEN_UPDATE( stisub_reels )
+static SCREEN_UPDATE_IND16( stisub_reels )
{
subsino_state *state = screen.machine().driver_data<subsino_state>();
int i;
@@ -2629,10 +2629,9 @@ static MACHINE_CONFIG_START( victor21, subsino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(subsino)
+ MCFG_SCREEN_UPDATE_STATIC(subsino)
MCFG_GFXDECODE(subsino_depth3)
@@ -2670,10 +2669,9 @@ static MACHINE_CONFIG_START( crsbingo, subsino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(subsino)
+ MCFG_SCREEN_UPDATE_STATIC(subsino)
MCFG_GFXDECODE(subsino_depth4)
@@ -2700,10 +2698,9 @@ static MACHINE_CONFIG_START( srider, subsino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(subsino)
+ MCFG_SCREEN_UPDATE_STATIC(subsino)
MCFG_GFXDECODE(subsino_depth4)
@@ -2740,10 +2737,9 @@ static MACHINE_CONFIG_START( tisub, subsino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(subsino_reels)
+ MCFG_SCREEN_UPDATE_STATIC(subsino_reels)
MCFG_GFXDECODE(subsino_depth4_reels)
@@ -2769,10 +2765,9 @@ static MACHINE_CONFIG_START( stisub, subsino_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(stisub_reels)
+ MCFG_SCREEN_UPDATE_STATIC(stisub_reels)
MCFG_GFXDECODE(subsino_stisub)
diff --git a/src/mame/drivers/subsino2.c b/src/mame/drivers/subsino2.c
index 7ecc8588f69..a149a2772b3 100644
--- a/src/mame/drivers/subsino2.c
+++ b/src/mame/drivers/subsino2.c
@@ -597,7 +597,7 @@ static VIDEO_START( xtrain )
state->m_ss9601_reelrects[2].set(0, 0, 0x18*8, 256-16-1);
}
-static SCREEN_UPDATE( subsino2 )
+static SCREEN_UPDATE_IND16( subsino2 )
{
subsino2_state *state = screen.machine().driver_data<subsino2_state>();
int layers_ctrl = ~state->m_ss9601_disable;
@@ -2162,11 +2162,10 @@ static MACHINE_CONFIG_START( bishjan, subsino2_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 60 )
- MCFG_SCREEN_UPDATE( subsino2 )
+ MCFG_SCREEN_UPDATE_STATIC( subsino2 )
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2190,12 +2189,11 @@ static MACHINE_CONFIG_START( mtrain, subsino2_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-32-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE( subsino2 )
+ MCFG_SCREEN_UPDATE_STATIC( subsino2 )
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2224,12 +2222,11 @@ static MACHINE_CONFIG_START( saklove, subsino2_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE( subsino2 )
+ MCFG_SCREEN_UPDATE_STATIC( subsino2 )
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
@@ -2262,12 +2259,11 @@ static MACHINE_CONFIG_START( xplan, subsino2_state )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE( 512, 256 )
MCFG_SCREEN_VISIBLE_AREA( 0, 512-1, 0, 256-16-1 )
MCFG_SCREEN_REFRESH_RATE( 58.7270 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
- MCFG_SCREEN_UPDATE( subsino2 )
+ MCFG_SCREEN_UPDATE_STATIC( subsino2 )
MCFG_GFXDECODE( ss9601 )
MCFG_PALETTE_LENGTH( 256 )
diff --git a/src/mame/drivers/summit.c b/src/mame/drivers/summit.c
index cbe3b0c68c3..c1fc631b0b8 100644
--- a/src/mame/drivers/summit.c
+++ b/src/mame/drivers/summit.c
@@ -34,7 +34,7 @@ static VIDEO_START(summit)
{
}
-static SCREEN_UPDATE(summit)
+static SCREEN_UPDATE_IND16(summit)
{
summit_state *state = screen.machine().driver_data<summit_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -302,10 +302,9 @@ static MACHINE_CONFIG_START( summit, summit_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
- MCFG_SCREEN_UPDATE(summit)
+ MCFG_SCREEN_UPDATE_STATIC(summit)
MCFG_GFXDECODE(summit)
diff --git a/src/mame/drivers/suna16.c b/src/mame/drivers/suna16.c
index 194fa2eedb8..0646fb27875 100644
--- a/src/mame/drivers/suna16.c
+++ b/src/mame/drivers/suna16.c
@@ -775,10 +775,9 @@ static MACHINE_CONFIG_START( bssoccer, suna16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna16)
+ MCFG_SCREEN_UPDATE_STATIC(suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -835,10 +834,9 @@ static MACHINE_CONFIG_START( uballoon, suna16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna16)
+ MCFG_SCREEN_UPDATE_STATIC(suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -885,10 +883,9 @@ static MACHINE_CONFIG_START( sunaq, suna16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna16)
+ MCFG_SCREEN_UPDATE_STATIC(suna16)
MCFG_GFXDECODE(suna16)
MCFG_PALETTE_LENGTH(512)
@@ -958,10 +955,9 @@ static MACHINE_CONFIG_START( bestbest, suna16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1734) // measured on pcb (15.6218kHz HSync)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(bestbest)
+ MCFG_SCREEN_UPDATE_STATIC(bestbest)
MCFG_GFXDECODE(bestbest)
MCFG_PALETTE_LENGTH(256*8)
diff --git a/src/mame/drivers/suna8.c b/src/mame/drivers/suna8.c
index c7a520cc77a..cb8b48c49df 100644
--- a/src/mame/drivers/suna8.c
+++ b/src/mame/drivers/suna8.c
@@ -1510,10 +1510,9 @@ static MACHINE_CONFIG_START( hardhead, suna8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna8)
+ MCFG_SCREEN_UPDATE_STATIC(suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1575,10 +1574,9 @@ static MACHINE_CONFIG_START( rranger, suna8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna8)
+ MCFG_SCREEN_UPDATE_STATIC(suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1647,10 +1645,9 @@ static MACHINE_CONFIG_START( brickzn, suna8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // we're using IPT_VBLANK
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna8)
+ MCFG_SCREEN_UPDATE_STATIC(suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(512)
@@ -1749,10 +1746,9 @@ static MACHINE_CONFIG_START( starfigh, suna8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna8)
+ MCFG_SCREEN_UPDATE_STATIC(suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(256)
@@ -1798,10 +1794,9 @@ static MACHINE_CONFIG_START( sparkman, suna8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
- MCFG_SCREEN_UPDATE(suna8)
+ MCFG_SCREEN_UPDATE_STATIC(suna8)
MCFG_GFXDECODE(suna8)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/supbtime.c b/src/mame/drivers/supbtime.c
index 5cd71240f54..c551e8abe93 100644
--- a/src/mame/drivers/supbtime.c
+++ b/src/mame/drivers/supbtime.c
@@ -358,10 +358,9 @@ static MACHINE_CONFIG_START( supbtime, supbtime_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(supbtime)
+ MCFG_SCREEN_UPDATE_STATIC(supbtime)
MCFG_GFXDECODE(supbtime)
MCFG_PALETTE_LENGTH(1024)
@@ -401,10 +400,9 @@ static MACHINE_CONFIG_START( chinatwn, supbtime_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(supbtime)
+ MCFG_SCREEN_UPDATE_STATIC(supbtime)
MCFG_GFXDECODE(supbtime)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/supdrapo.c b/src/mame/drivers/supdrapo.c
index 5fab0d9de2a..753392287e8 100644
--- a/src/mame/drivers/supdrapo.c
+++ b/src/mame/drivers/supdrapo.c
@@ -87,7 +87,7 @@ static VIDEO_START( supdrapo )
}
-static SCREEN_UPDATE( supdrapo )
+static SCREEN_UPDATE_IND16( supdrapo )
{
supdrapo_state *state = screen.machine().driver_data<supdrapo_state>();
int x, y;
@@ -441,10 +441,9 @@ static MACHINE_CONFIG_START( supdrapo, supdrapo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(supdrapo)
+ MCFG_SCREEN_UPDATE_STATIC(supdrapo)
MCFG_GFXDECODE(supdrapo)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/superchs.c b/src/mame/drivers/superchs.c
index 529730e94bf..f831df4b1c1 100644
--- a/src/mame/drivers/superchs.c
+++ b/src/mame/drivers/superchs.c
@@ -386,10 +386,9 @@ static MACHINE_CONFIG_START( superchs, superchs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(superchs)
+ MCFG_SCREEN_UPDATE_STATIC(superchs)
MCFG_GFXDECODE(superchs)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/superdq.c b/src/mame/drivers/superdq.c
index 202ff7a12d4..32f074bf9a6 100644
--- a/src/mame/drivers/superdq.c
+++ b/src/mame/drivers/superdq.c
@@ -24,16 +24,17 @@
#include "cpu/z80/z80.h"
#include "render.h"
#include "sound/sn76496.h"
-#include "machine/laserdsc.h"
+#include "machine/ldv1000.h"
#include "video/resnet.h"
class superdq_state : public driver_device
{
public:
superdq_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ required_device<pioneer_ldv1000_device> m_laserdisc;
UINT8 m_ld_in_latch;
UINT8 m_ld_out_latch;
@@ -57,7 +58,7 @@ static VIDEO_START( superdq )
state->m_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( superdq )
+static SCREEN_UPDATE_IND16( superdq )
{
superdq_state *state = screen.machine().driver_data<superdq_state>();
@@ -129,12 +130,12 @@ static INTERRUPT_GEN( superdq_vblank )
/* status is read when the STATUS line from the laserdisc
toggles (600usec after the vblank). We could set up a
timer to do that, but this works as well */
- state->m_ld_in_latch = laserdisc_data_r(state->m_laserdisc);
+ state->m_ld_in_latch = state->m_laserdisc->status_r();
/* command is written when the COMMAND line from the laserdisc
toggles (680usec after the vblank). We could set up a
timer to do that, but this works as well */
- laserdisc_data_w(state->m_laserdisc, state->m_ld_out_latch);
+ state->m_laserdisc->data_w(state->m_ld_out_latch);
device_set_input_line(device, 0, ASSERT_LINE);
}
@@ -316,9 +317,6 @@ GFXDECODE_END
static MACHINE_START( superdq )
{
- superdq_state *state = machine.driver_data<superdq_state>();
-
- state->m_laserdisc = machine.device("laserdisc");
}
@@ -333,11 +331,11 @@ static MACHINE_CONFIG_START( superdq, superdq_state )
MCFG_MACHINE_START(superdq)
MCFG_MACHINE_RESET(superdq)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound")
- MCFG_LASERDISC_OVERLAY(superdq, 256, 256, BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_LDV1000_ADD("laserdisc")
+ MCFG_LASERDISC_OVERLAY(256, 256, superdq)
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_INDEXED16)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE(superdq)
MCFG_PALETTE_LENGTH(32)
@@ -351,7 +349,7 @@ static MACHINE_CONFIG_START( superdq, superdq_state )
MCFG_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.8)
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/superqix.c b/src/mame/drivers/superqix.c
index b741d1c0846..22c6b1422ba 100644
--- a/src/mame/drivers/superqix.c
+++ b/src/mame/drivers/superqix.c
@@ -1055,10 +1055,9 @@ static MACHINE_CONFIG_START( pbillian, superqix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pbillian)
+ MCFG_SCREEN_UPDATE_STATIC(pbillian)
MCFG_GFXDECODE(pbillian)
MCFG_PALETTE_LENGTH(512)
@@ -1091,10 +1090,9 @@ static MACHINE_CONFIG_START( hotsmash, superqix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(pbillian)
+ MCFG_SCREEN_UPDATE_STATIC(pbillian)
MCFG_GFXDECODE(pbillian)
MCFG_PALETTE_LENGTH(512)
@@ -1131,10 +1129,9 @@ static MACHINE_CONFIG_START( sqix, superqix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(superqix)
+ MCFG_SCREEN_UPDATE_STATIC(superqix)
MCFG_GFXDECODE(sqix)
MCFG_PALETTE_LENGTH(256)
@@ -1175,10 +1172,9 @@ static MACHINE_CONFIG_START( sqixbl, superqix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(superqix)
+ MCFG_SCREEN_UPDATE_STATIC(superqix)
MCFG_GFXDECODE(sqix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/supertnk.c b/src/mame/drivers/supertnk.c
index 5ae87cee647..9f4bd40ec18 100644
--- a/src/mame/drivers/supertnk.c
+++ b/src/mame/drivers/supertnk.c
@@ -242,7 +242,7 @@ static WRITE8_HANDLER( supertnk_bitplane_select_1_w )
}
-static SCREEN_UPDATE( supertnk )
+static SCREEN_UPDATE_RGB32( supertnk )
{
supertnk_state *state = screen.machine().driver_data<supertnk_state>();
offs_t offs;
@@ -434,12 +434,11 @@ static MACHINE_CONFIG_START( supertnk, supertnk_state )
MCFG_VIDEO_START(supertnk)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
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(supertnk)
+ MCFG_SCREEN_UPDATE_STATIC(supertnk)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/superwng.c b/src/mame/drivers/superwng.c
index ba42e0cab7a..fac99458695 100644
--- a/src/mame/drivers/superwng.c
+++ b/src/mame/drivers/superwng.c
@@ -102,7 +102,7 @@ static VIDEO_START( superwng )
tilemap_set_scrollx(state->m_bg_tilemap, 0, 64);
}
-static SCREEN_UPDATE( superwng )
+static SCREEN_UPDATE_IND16( superwng )
{
superwng_state *state = screen.machine().driver_data<superwng_state>();
int flip=flip_screen_get(screen.machine());
@@ -476,7 +476,6 @@ static MACHINE_CONFIG_START( superwng, superwng_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
@@ -485,7 +484,7 @@ static MACHINE_CONFIG_START( superwng, superwng_state )
MCFG_PALETTE_LENGTH(0x40)
MCFG_PALETTE_INIT(superwng)
MCFG_VIDEO_START( superwng )
- MCFG_SCREEN_UPDATE(superwng)
+ MCFG_SCREEN_UPDATE_STATIC(superwng)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprgolf.c b/src/mame/drivers/suprgolf.c
index cfc334cebb9..dd474c75366 100644
--- a/src/mame/drivers/suprgolf.c
+++ b/src/mame/drivers/suprgolf.c
@@ -75,7 +75,7 @@ static VIDEO_START( suprgolf )
tilemap_set_transparent_pen(state->m_tilemap,15);
}
-static SCREEN_UPDATE( suprgolf )
+static SCREEN_UPDATE_IND16( suprgolf )
{
suprgolf_state *state = screen.machine().driver_data<suprgolf_state>();
int x,y,count,color;
@@ -520,10 +520,9 @@ static MACHINE_CONFIG_START( suprgolf, suprgolf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
- MCFG_SCREEN_UPDATE(suprgolf)
+ MCFG_SCREEN_UPDATE_STATIC(suprgolf)
MCFG_GFXDECODE(suprgolf)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/suprloco.c b/src/mame/drivers/suprloco.c
index d1900858ed0..5dd1c8ef060 100644
--- a/src/mame/drivers/suprloco.c
+++ b/src/mame/drivers/suprloco.c
@@ -166,10 +166,9 @@ static MACHINE_CONFIG_START( suprloco, suprloco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(suprloco)
+ MCFG_SCREEN_UPDATE_STATIC(suprloco)
MCFG_GFXDECODE(suprloco)
MCFG_PALETTE_LENGTH(512+256)
diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c
index 19a541c23e0..256b770a73b 100644
--- a/src/mame/drivers/suprnova.c
+++ b/src/mame/drivers/suprnova.c
@@ -781,10 +781,9 @@ static MACHINE_CONFIG_START( skns, skns_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.5971) // measured by Guru
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(340,262)
MCFG_SCREEN_VISIBLE_AREA(0,319,0,239)
- MCFG_SCREEN_UPDATE(skns)
+ MCFG_SCREEN_UPDATE_STATIC(skns)
MCFG_SCREEN_EOF(skns)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/suprridr.c b/src/mame/drivers/suprridr.c
index e8718f3e421..e52e920e8c3 100644
--- a/src/mame/drivers/suprridr.c
+++ b/src/mame/drivers/suprridr.c
@@ -372,10 +372,9 @@ static MACHINE_CONFIG_START( suprridr, suprridr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(suprridr)
+ MCFG_SCREEN_UPDATE_STATIC(suprridr)
MCFG_GFXDECODE(suprridr)
MCFG_PALETTE_LENGTH(96)
diff --git a/src/mame/drivers/suprslam.c b/src/mame/drivers/suprslam.c
index bf601d61370..99faeb2b966 100644
--- a/src/mame/drivers/suprslam.c
+++ b/src/mame/drivers/suprslam.c
@@ -337,10 +337,9 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2300) /* hand-tuned */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(suprslam)
+ MCFG_SCREEN_UPDATE_STATIC(suprslam)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/surpratk.c b/src/mame/drivers/surpratk.c
index 33367d1395f..deffc516d89 100644
--- a/src/mame/drivers/surpratk.c
+++ b/src/mame/drivers/surpratk.c
@@ -254,10 +254,9 @@ static MACHINE_CONFIG_START( surpratk, surpratk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(surpratk)
+ MCFG_SCREEN_UPDATE_STATIC(surpratk)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c
index f745b5cf471..c8659d121cc 100644
--- a/src/mame/drivers/system1.c
+++ b/src/mame/drivers/system1.c
@@ -2166,9 +2166,8 @@ static MACHINE_CONFIG_START( sys1ppi, system1_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) /* needed for proper hardware collisions */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 260, 0, 224)
- MCFG_SCREEN_UPDATE(system1)
+ MCFG_SCREEN_UPDATE_STATIC(system1)
MCFG_GFXDECODE(system1)
MCFG_PALETTE_LENGTH(2048)
@@ -2256,7 +2255,7 @@ static MACHINE_CONFIG_DERIVED( sys2, sys1ppi )
/* video hardware */
MCFG_VIDEO_START(system2)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(system2)
+ MCFG_SCREEN_UPDATE_STATIC(system2)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sys2m, sys2 )
@@ -2268,7 +2267,7 @@ static MACHINE_CONFIG_DERIVED( sys2row, sys2 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(system2_rowscroll)
+ MCFG_SCREEN_UPDATE_STATIC(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 b8c675dd51d..95f77917a78 100644
--- a/src/mame/drivers/system16.c
+++ b/src/mame/drivers/system16.c
@@ -2060,10 +2060,9 @@ static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(system16)
+ MCFG_SCREEN_UPDATE_STATIC(system16)
MCFG_GFXDECODE(sys16)
MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
@@ -2153,7 +2152,7 @@ static MACHINE_CONFIG_DERIVED( shinobib, system16 )
MCFG_VIDEO_START( s16a_bootleg_shinobi )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
MACHINE_CONFIG_END
static const sega16sp_interface passshtb_sega16sp_intf =
@@ -2176,7 +2175,7 @@ static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 )
MCFG_VIDEO_START( s16a_bootleg_passsht )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
MACHINE_CONFIG_END
@@ -2191,7 +2190,7 @@ static MACHINE_CONFIG_DERIVED( passsht4b, system16_7759 )
MCFG_VIDEO_START( s16a_bootleg_passsht )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( s16a_bootleg_passht4b )
+ MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg_passht4b )
MACHINE_CONFIG_END
static const sega16sp_interface wb3bbl_sega16sp_intf =
@@ -2214,7 +2213,7 @@ static MACHINE_CONFIG_DERIVED( wb3bb, system16 )
MCFG_VIDEO_START( s16a_bootleg_wb3bl )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( s16a_bootleg )
+ MCFG_SCREEN_UPDATE_STATIC( s16a_bootleg )
MACHINE_CONFIG_END
@@ -2240,10 +2239,9 @@ static MACHINE_CONFIG_START( goldnaxeb1, segas1x_bootleg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(system16)
+ MCFG_SCREEN_UPDATE_STATIC(system16)
MCFG_GFXDECODE(sys16)
MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
@@ -2396,10 +2394,9 @@ static MACHINE_CONFIG_START( system18, segas1x_bootleg_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(system18old)
+ MCFG_SCREEN_UPDATE_STATIC(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 b4d4020f997..8fd2fe572c3 100644
--- a/src/mame/drivers/tagteam.c
+++ b/src/mame/drivers/tagteam.c
@@ -220,10 +220,9 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57) // measured?
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(tagteam)
+ MCFG_SCREEN_UPDATE_STATIC(tagteam)
MCFG_GFXDECODE(tagteam)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/tail2nos.c b/src/mame/drivers/tail2nos.c
index a218a1b2a63..baa2b31c89a 100644
--- a/src/mame/drivers/tail2nos.c
+++ b/src/mame/drivers/tail2nos.c
@@ -254,10 +254,9 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(tail2nos)
+ MCFG_SCREEN_UPDATE_STATIC(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 6c88ab970d2..12da1c59393 100644
--- a/src/mame/drivers/taito_b.c
+++ b/src/mame/drivers/taito_b.c
@@ -2066,10 +2066,9 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2113,10 +2112,9 @@ static MACHINE_CONFIG_START( ashura, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2160,10 +2158,9 @@ static MACHINE_CONFIG_START( crimec, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2207,10 +2204,9 @@ static MACHINE_CONFIG_START( tetrist, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2253,10 +2249,9 @@ static MACHINE_CONFIG_START( tetrista, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2300,10 +2295,9 @@ static MACHINE_CONFIG_START( hitice, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2352,10 +2346,9 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(rambo3)
@@ -2399,10 +2392,9 @@ static MACHINE_CONFIG_START( rambo3, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2449,10 +2441,9 @@ static MACHINE_CONFIG_START( pbobble, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2500,10 +2491,9 @@ static MACHINE_CONFIG_START( spacedx, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2547,10 +2537,9 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2598,10 +2587,9 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2645,10 +2633,9 @@ static MACHINE_CONFIG_START( viofight, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2695,10 +2682,9 @@ static MACHINE_CONFIG_START( masterw, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2743,10 +2729,9 @@ static MACHINE_CONFIG_START( silentd, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2790,10 +2775,9 @@ static MACHINE_CONFIG_START( selfeena, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2846,10 +2830,9 @@ static MACHINE_CONFIG_START( ryujin, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2900,10 +2883,9 @@ static MACHINE_CONFIG_START( sbm, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
@@ -2952,17 +2934,16 @@ static MACHINE_CONFIG_START( realpunc, taitob_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitob)
+ MCFG_SCREEN_UPDATE_STATIC(taitob)
MCFG_SCREEN_EOF(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
MCFG_VIDEO_START(realpunc)
- MCFG_SCREEN_UPDATE(realpunc)
+ MCFG_SCREEN_UPDATE_STATIC(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 e8e674caad4..6daf07dc95b 100644
--- a/src/mame/drivers/taito_f2.c
+++ b/src/mame/drivers/taito_f2.c
@@ -3039,10 +3039,9 @@ static MACHINE_CONFIG_START( taito_f2, taitof2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitof2)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2)
MCFG_SCREEN_EOF(taitof2_no_buffer)
MCFG_GFXDECODE(taitof2)
@@ -3106,7 +3105,7 @@ static MACHINE_CONFIG_DERIVED( dondokod, taito_f2_tc0220ioc )
MCFG_VIDEO_START(taitof2_dondokod)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_EOF(taitof2_partial_buffer_delayed)
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0280grd", taitof2_tc0280grd_intf)
@@ -3123,7 +3122,7 @@ static MACHINE_CONFIG_DERIVED( megab, taito_f2_tc0220ioc )
/* video hardware */
MCFG_VIDEO_START(taitof2_megab)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3140,7 +3139,7 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc )
MCFG_GFXDECODE(thundfox)
MCFG_VIDEO_START(taitof2_thundfox)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_thundfox)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_thundfox)
MCFG_SCREEN_EOF(taitof2_partial_buffer_delayed_thundfox)
MCFG_TC0100SCN_ADD("tc0100scn_1", thundfox_tc0100scn_intf_1)
@@ -3159,7 +3158,7 @@ static MACHINE_CONFIG_DERIVED( cameltry, taito_f2_tc0220ioc )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START(taitof2_dondokod)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0280grd", taitof2_tc0280grd_intf)
@@ -3192,7 +3191,7 @@ static MACHINE_CONFIG_DERIVED( liquidk, taito_f2_tc0220ioc )
/* video hardware */
MCFG_VIDEO_START(taitof2_megab)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_SCREEN_EOF(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
@@ -3225,7 +3224,7 @@ static MACHINE_CONFIG_DERIVED( ssi, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_ssi)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_ssi)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_ssi)
MCFG_SCREEN_EOF(taitof2_partial_buffer_delayed_thundfox) // buffer_delayed_thundfox instead of buffer_delayed fixes the butterfly powerup
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
@@ -3241,7 +3240,7 @@ static MACHINE_CONFIG_DERIVED( gunfront, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_gunfront)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_SCREEN_EOF(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
@@ -3258,7 +3257,7 @@ static MACHINE_CONFIG_DERIVED( growl, taito_f2 )
/* video hardware */
MCFG_VIDEO_START(taitof2_growl)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3289,7 +3288,7 @@ static MACHINE_CONFIG_DERIVED( footchmp, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START(taitof2_footchmp)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
MCFG_SCREEN_EOF(taitof2_full_buffer_delayed)
MCFG_TC0480SCP_ADD("tc0480scp", footchmp_tc0480scp_intf)
@@ -3313,7 +3312,7 @@ static MACHINE_CONFIG_DERIVED( hthero, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START(taitof2_hthero)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
MCFG_SCREEN_EOF(taitof2_full_buffer_delayed)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3330,7 +3329,7 @@ static MACHINE_CONFIG_DERIVED( koshien, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_koshien)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", koshien_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3347,7 +3346,7 @@ static MACHINE_CONFIG_DERIVED( yuyugogo, taito_f2_tc0510nio )
MCFG_GFXDECODE(yuyugogo)
MCFG_VIDEO_START(taitof2_yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_yesnoj)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_yesnoj)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3362,7 +3361,7 @@ static MACHINE_CONFIG_DERIVED( ninjak, taito_f2 )
/* video hardware */
MCFG_VIDEO_START(taitof2_ninjak)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3378,7 +3377,7 @@ static MACHINE_CONFIG_DERIVED( solfigtr, taito_f2 )
/* video hardware */
MCFG_VIDEO_START(taitof2_solfigtr)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", solfigtr_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3409,7 +3408,7 @@ static MACHINE_CONFIG_DERIVED( pulirula, taito_f2_tc0510nio )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START(taitof2_pulirula)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf)
@@ -3428,7 +3427,7 @@ static MACHINE_CONFIG_DERIVED( metalb, taito_f2_tc0510nio )
MCFG_PALETTE_LENGTH(8192)
MCFG_VIDEO_START(taitof2_metalb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_metalb)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_metalb)
MCFG_TC0480SCP_ADD("tc0480scp", metalb_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3460,7 +3459,7 @@ static MACHINE_CONFIG_DERIVED( yesnoj, taito_f2 )
MCFG_GFXDECODE(yuyugogo)
MCFG_VIDEO_START(taitof2_yesnoj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_yesnoj)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_yesnoj)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3476,7 +3475,7 @@ static MACHINE_CONFIG_DERIVED( deadconx, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START(taitof2_deadconx)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
MCFG_TC0480SCP_ADD("tc0480scp", deadconx_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3493,7 +3492,7 @@ static MACHINE_CONFIG_DERIVED( deadconxj, taito_f2 )
MCFG_GFXDECODE(deadconx)
MCFG_VIDEO_START(taitof2_deadconxj)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_deadconx)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
MCFG_TC0480SCP_ADD("tc0480scp", deadconxj_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3509,7 +3508,7 @@ static MACHINE_CONFIG_DERIVED( dinorex, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_dinorex)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3525,7 +3524,7 @@ static MACHINE_CONFIG_DERIVED( qjinsei, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3541,7 +3540,7 @@ static MACHINE_CONFIG_DERIVED( qcrayon, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3557,7 +3556,7 @@ static MACHINE_CONFIG_DERIVED( qcrayon2, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_quiz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3574,7 +3573,7 @@ static MACHINE_CONFIG_DERIVED( driftout, taito_f2_tc0510nio )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START(taitof2_driftout)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf)
@@ -3600,10 +3599,9 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_SCREEN_EOF(taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
@@ -3650,10 +3648,9 @@ static MACHINE_CONFIG_START( driveout, taitof2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitof2_pri_roz)
+ MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_SCREEN_EOF(taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c
index d78ee18c377..3ab46c7baa2 100644
--- a/src/mame/drivers/taito_f3.c
+++ b/src/mame/drivers/taito_f3.c
@@ -443,10 +443,9 @@ static MACHINE_CONFIG_START( f3, taito_f3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58.97)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(624) /* 58.97 Hz, 624us vblank time */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(f3)
+ MCFG_SCREEN_UPDATE_STATIC(f3)
MCFG_SCREEN_EOF(f3)
MCFG_GFXDECODE(taito_f3)
@@ -538,10 +537,9 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58.97)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(624) /* 58.97 Hz, 624us vblank time */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(f3)
+ MCFG_SCREEN_UPDATE_STATIC(f3)
MCFG_SCREEN_EOF(f3)
MCFG_GFXDECODE(bubsympb)
diff --git a/src/mame/drivers/taito_h.c b/src/mame/drivers/taito_h.c
index c7521496a89..ad72a518b59 100644
--- a/src/mame/drivers/taito_h.c
+++ b/src/mame/drivers/taito_h.c
@@ -579,10 +579,9 @@ static MACHINE_CONFIG_START( syvalion, taitoh_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 28*16-1)
- MCFG_SCREEN_UPDATE(syvalion)
+ MCFG_SCREEN_UPDATE_STATIC(syvalion)
MCFG_GFXDECODE(syvalion)
MCFG_PALETTE_LENGTH(33*16)
@@ -623,10 +622,9 @@ static MACHINE_CONFIG_START( recordbr, taitoh_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 21*16-1, 2*16, 17*16-1)
- MCFG_SCREEN_UPDATE(recordbr)
+ MCFG_SCREEN_UPDATE_STATIC(recordbr)
MCFG_GFXDECODE(recordbr)
MCFG_PALETTE_LENGTH(32*16)
@@ -667,10 +665,9 @@ static MACHINE_CONFIG_START( dleague, taitoh_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(1*16, 21*16-1, 2*16, 17*16-1)
- MCFG_SCREEN_UPDATE(dleague)
+ MCFG_SCREEN_UPDATE_STATIC(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 5def9416c00..58940610377 100644
--- a/src/mame/drivers/taito_l.c
+++ b/src/mame/drivers/taito_l.c
@@ -1897,10 +1897,9 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitol)
+ MCFG_SCREEN_UPDATE_STATIC(taitol)
MCFG_SCREEN_EOF(taitol)
MCFG_GFXDECODE(2)
@@ -1994,10 +1993,9 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitol)
+ MCFG_SCREEN_UPDATE_STATIC(taitol)
MCFG_SCREEN_EOF(taitol)
MCFG_GFXDECODE(2)
@@ -2041,10 +2039,9 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitol)
+ MCFG_SCREEN_UPDATE_STATIC(taitol)
MCFG_SCREEN_EOF(taitol)
MCFG_GFXDECODE(1)
@@ -2135,10 +2132,9 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitol)
+ MCFG_SCREEN_UPDATE_STATIC(taitol)
MCFG_SCREEN_EOF(taitol)
MCFG_GFXDECODE(2)
diff --git a/src/mame/drivers/taito_o.c b/src/mame/drivers/taito_o.c
index d55486327f2..c974189914e 100644
--- a/src/mame/drivers/taito_o.c
+++ b/src/mame/drivers/taito_o.c
@@ -261,10 +261,9 @@ static MACHINE_CONFIG_START( parentj, taitoo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 31*16-1)
- MCFG_SCREEN_UPDATE(parentj)
+ MCFG_SCREEN_UPDATE_STATIC(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 1dfbe9d0259..22ce2b2ce09 100644
--- a/src/mame/drivers/taito_x.c
+++ b/src/mame/drivers/taito_x.c
@@ -831,10 +831,9 @@ static MACHINE_CONFIG_START( superman, taitox_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.43)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers)
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -874,10 +873,9 @@ static MACHINE_CONFIG_START( daisenpu, taitox_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers)
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -915,10 +913,9 @@ static MACHINE_CONFIG_START( gigandes, taitox_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers)
+ MCFG_SCREEN_UPDATE_STATIC(seta_no_layers)
MCFG_GFXDECODE(superman)
MCFG_PALETTE_LENGTH(2048)
@@ -958,10 +955,9 @@ static MACHINE_CONFIG_START( ballbros, taitox_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(52*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(seta_no_layers)
+ MCFG_SCREEN_UPDATE_STATIC(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 31f082cfcfe..11c786e8c61 100644
--- a/src/mame/drivers/taito_z.c
+++ b/src/mame/drivers/taito_z.c
@@ -3117,10 +3117,9 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
- MCFG_SCREEN_UPDATE(contcirc)
+ MCFG_SCREEN_UPDATE_STATIC(contcirc)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3182,10 +3181,9 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(chasehq)
+ MCFG_SCREEN_UPDATE_STATIC(chasehq)
MCFG_GFXDECODE(chasehq)
MCFG_PALETTE_LENGTH(4096)
@@ -3247,10 +3245,9 @@ static MACHINE_CONFIG_START( enforce, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 31*8-1)
- MCFG_SCREEN_UPDATE(contcirc)
+ MCFG_SCREEN_UPDATE_STATIC(contcirc)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3310,10 +3307,9 @@ static MACHINE_CONFIG_START( bshark, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(bshark)
+ MCFG_SCREEN_UPDATE_STATIC(bshark)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3382,10 +3378,9 @@ static MACHINE_CONFIG_START( sci, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(sci)
+ MCFG_SCREEN_UPDATE_STATIC(sci)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3445,10 +3440,9 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(chasehq)
+ MCFG_SCREEN_UPDATE_STATIC(chasehq)
MCFG_GFXDECODE(chasehq)
MCFG_PALETTE_LENGTH(4096)
@@ -3510,10 +3504,9 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(aquajack)
+ MCFG_SCREEN_UPDATE_STATIC(aquajack)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3572,10 +3565,9 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(spacegun)
+ MCFG_SCREEN_UPDATE_STATIC(spacegun)
MCFG_GFXDECODE(taitoz)
MCFG_PALETTE_LENGTH(4096)
@@ -3634,10 +3626,9 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(dblaxle)
+ MCFG_SCREEN_UPDATE_STATIC(dblaxle)
MCFG_GFXDECODE(dblaxle)
MCFG_PALETTE_LENGTH(4096)
@@ -3697,10 +3688,9 @@ static MACHINE_CONFIG_START( racingb, taitoz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(dblaxle)
+ MCFG_SCREEN_UPDATE_STATIC(dblaxle)
MCFG_GFXDECODE(dblaxle)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/taitoair.c b/src/mame/drivers/taitoair.c
index 0773dc2c1c6..c16196c8d17 100644
--- a/src/mame/drivers/taitoair.c
+++ b/src/mame/drivers/taitoair.c
@@ -741,10 +741,9 @@ static MACHINE_CONFIG_START( airsys, taitoair_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 28*16-1)
- MCFG_SCREEN_UPDATE(taitoair)
+ MCFG_SCREEN_UPDATE_STATIC(taitoair)
MCFG_VIDEO_START(taitoair);
MCFG_GFXDECODE(airsys)
diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c
index cddc9fd6798..10da40ce708 100644
--- a/src/mame/drivers/taitojc.c
+++ b/src/mame/drivers/taitojc.c
@@ -1431,10 +1431,9 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_SCREEN_UPDATE(taitojc)
+ MCFG_SCREEN_UPDATE_STATIC(taitojc)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/taitopjc.c b/src/mame/drivers/taitopjc.c
index 65fc904568d..238bc9650e2 100644
--- a/src/mame/drivers/taitopjc.c
+++ b/src/mame/drivers/taitopjc.c
@@ -71,7 +71,7 @@ static VIDEO_START( taitopjc )
}
-static SCREEN_UPDATE( taitopjc )
+static SCREEN_UPDATE_RGB32( taitopjc )
{
{
UINT8 *s = (UINT8*)jc_char_ram;
@@ -407,12 +407,11 @@ static MACHINE_CONFIG_START( taitopjc, driver_device )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 767)
- MCFG_SCREEN_UPDATE(taitopjc)
+ MCFG_SCREEN_UPDATE_STATIC(taitopjc)
MCFG_VIDEO_START(taitopjc)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitosj.c b/src/mame/drivers/taitosj.c
index 9e8b3d88e77..ae8a11faf85 100644
--- a/src/mame/drivers/taitosj.c
+++ b/src/mame/drivers/taitosj.c
@@ -1813,10 +1813,9 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(taitosj)
+ MCFG_SCREEN_UPDATE_STATIC(taitosj)
MCFG_GFXDECODE(taitosj)
MCFG_PALETTE_LENGTH(64)
@@ -1868,7 +1867,7 @@ static MACHINE_CONFIG_DERIVED( kikstart, mcu )
MCFG_CPU_PROGRAM_MAP(kikstart_main_map)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(kikstart)
+ MCFG_SCREEN_UPDATE_STATIC(kikstart)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitotz.c b/src/mame/drivers/taitotz.c
index 0d7274eb9fb..3bccf955645 100644
--- a/src/mame/drivers/taitotz.c
+++ b/src/mame/drivers/taitotz.c
@@ -98,7 +98,7 @@ public:
UINT32 *video_ram;
UINT32 video_ram_ptr;
- bitmap_t *framebuffer;
+ bitmap_rgb32 framebuffer;
};
@@ -107,10 +107,10 @@ static VIDEO_START( taitotz )
{
taitotz_state *state = machine.driver_data<taitotz_state>();
- state->framebuffer = machine.primary_screen->alloc_compatible_bitmap();
+ state->framebuffer.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
-static SCREEN_UPDATE( taitotz )
+static SCREEN_UPDATE_RGB32( taitotz )
{
/*
{
@@ -159,7 +159,7 @@ static SCREEN_UPDATE( taitotz )
taitotz_state *state = screen.machine().driver_data<taitotz_state>();
bitmap.fill(0, cliprect);
- copybitmap_trans(bitmap, *state->framebuffer, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, state->framebuffer, 0, 0, 0, 0, cliprect, 0);
return 0;
}
@@ -182,7 +182,7 @@ static void draw_tile(running_machine &machine, UINT32 pos, UINT32 tile)
{
int u = tileu;
- UINT32 *fb = &state->framebuffer->pix32(j);
+ UINT32 *fb = &state->framebuffer.pix32(j);
for (int i=tilex; i < (tilex+16); i++)
{
@@ -426,12 +426,11 @@ static MACHINE_CONFIG_START( taitotz, taitotz_state )
MCFG_MACHINE_RESET( taitotz )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 511)
- MCFG_SCREEN_UPDATE(taitotz)
+ MCFG_SCREEN_UPDATE_STATIC(taitotz)
MCFG_VIDEO_START(taitotz)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 1f444efcdfe..57eda59f3ff 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -63,7 +63,7 @@ public:
};
#if !ENABLE_VGA
-static SCREEN_UPDATE( taitowlf )
+static SCREEN_UPDATE_RGB32( taitowlf )
{
int x,y,count;
const UINT8 *blit_ram = screen.machine().region("user5")->base();
@@ -655,11 +655,10 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_PALETTE_LENGTH(256)
- MCFG_SCREEN_UPDATE(taitowlf)
+ MCFG_SCREEN_UPDATE_STATIC(taitowlf)
MCFG_PALETTE_INIT(taitowlf)
#endif
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tank8.c b/src/mame/drivers/tank8.c
index a4fad73fbf7..72ef91d1f9e 100644
--- a/src/mame/drivers/tank8.c
+++ b/src/mame/drivers/tank8.c
@@ -341,10 +341,9 @@ static MACHINE_CONFIG_START( tank8, tank8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(30 * 1000000 / 15681))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 524)
MCFG_SCREEN_VISIBLE_AREA(16, 495, 0, 463)
- MCFG_SCREEN_UPDATE(tank8)
+ MCFG_SCREEN_UPDATE_STATIC(tank8)
MCFG_SCREEN_EOF(tank8)
MCFG_GFXDECODE(tank8)
diff --git a/src/mame/drivers/tankbatt.c b/src/mame/drivers/tankbatt.c
index 869323f74bb..9cfb218a6f5 100644
--- a/src/mame/drivers/tankbatt.c
+++ b/src/mame/drivers/tankbatt.c
@@ -298,10 +298,9 @@ static MACHINE_CONFIG_START( tankbatt, tankbatt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tankbatt)
+ MCFG_SCREEN_UPDATE_STATIC(tankbatt)
MCFG_GFXDECODE(tankbatt)
MCFG_PALETTE_LENGTH(256*2)
diff --git a/src/mame/drivers/tankbust.c b/src/mame/drivers/tankbust.c
index ae9799c69cf..7caf9a099d6 100644
--- a/src/mame/drivers/tankbust.c
+++ b/src/mame/drivers/tankbust.c
@@ -350,11 +350,10 @@ static MACHINE_CONFIG_START( tankbust, tankbust_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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 ( tankbust )
+ MCFG_SCREEN_UPDATE_STATIC ( tankbust )
MCFG_GFXDECODE( tankbust )
diff --git a/src/mame/drivers/taotaido.c b/src/mame/drivers/taotaido.c
index 0693774af16..1926a175a5a 100644
--- a/src/mame/drivers/taotaido.c
+++ b/src/mame/drivers/taotaido.c
@@ -347,10 +347,9 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(taotaido)
+ MCFG_SCREEN_UPDATE_STATIC(taotaido)
MCFG_SCREEN_EOF( taotaido )
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/tapatune.c b/src/mame/drivers/tapatune.c
index 4eef8ca844a..41e307ceb83 100644
--- a/src/mame/drivers/tapatune.c
+++ b/src/mame/drivers/tapatune.c
@@ -349,13 +349,6 @@ static VIDEO_START( tapatune )
{
}
-static SCREEN_UPDATE( tapatune )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>("crtc");
- mc6845->update(bitmap, cliprect);
- return 0;
-}
-
static WRITE_LINE_DEVICE_HANDLER(crtc_vsync)
{
cputag_set_input_line(device->machine(), "maincpu", 2, state ? ASSERT_LINE : CLEAR_LINE);
@@ -390,10 +383,9 @@ static MACHINE_CONFIG_START( tapatune, tapatune_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tapatune)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/targeth.c b/src/mame/drivers/targeth.c
index b73cebc0edf..74e1d211a34 100644
--- a/src/mame/drivers/targeth.c
+++ b/src/mame/drivers/targeth.c
@@ -182,10 +182,9 @@ static MACHINE_CONFIG_START( targeth, targeth_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16) /* 1024x512 */
MCFG_SCREEN_VISIBLE_AREA(0, 24*16-1, 16, 16*16-1) /* 400x240 */
- MCFG_SCREEN_UPDATE(targeth)
+ MCFG_SCREEN_UPDATE_STATIC(targeth)
MCFG_GFXDECODE(0x080000)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tatsumi.c b/src/mame/drivers/tatsumi.c
index 59af391466b..56e9e6a6d04 100644
--- a/src/mame/drivers/tatsumi.c
+++ b/src/mame/drivers/tatsumi.c
@@ -898,9 +898,8 @@ static MACHINE_CONFIG_START( apache3, tatsumi_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 280, 0, 240) // TODO: Hook up CRTC
- MCFG_SCREEN_UPDATE(apache3)
+ MCFG_SCREEN_UPDATE_STATIC(apache3)
MCFG_GFXDECODE(apache3)
MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
@@ -939,10 +938,9 @@ static MACHINE_CONFIG_START( roundup5, tatsumi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(roundup5)
+ MCFG_SCREEN_UPDATE_STATIC(roundup5)
MCFG_GFXDECODE(roundup5)
MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
@@ -982,10 +980,9 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(cyclwarr)
+ MCFG_SCREEN_UPDATE_STATIC(cyclwarr)
MCFG_GFXDECODE(cyclwarr)
MCFG_PALETTE_LENGTH(8192 + 8192)
@@ -1025,10 +1022,9 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(bigfight)
+ MCFG_SCREEN_UPDATE_STATIC(bigfight)
MCFG_GFXDECODE(cyclwarr)
MCFG_PALETTE_LENGTH(8192 + 8192)
diff --git a/src/mame/drivers/tattack.c b/src/mame/drivers/tattack.c
index c7de04157c3..4214d5c7973 100644
--- a/src/mame/drivers/tattack.c
+++ b/src/mame/drivers/tattack.c
@@ -53,7 +53,7 @@ static TILE_GET_INFO( get_tile_info )
0);
}
-static SCREEN_UPDATE( tattack )
+static SCREEN_UPDATE_IND16( tattack )
{
tattack_state *state = screen.machine().driver_data<tattack_state>();
tilemap_mark_all_tiles_dirty(state->m_tmap);
@@ -203,10 +203,9 @@ static MACHINE_CONFIG_START( tattack, tattack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(tattack)
+ MCFG_SCREEN_UPDATE_STATIC(tattack)
MCFG_GFXDECODE(tattack)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/taxidriv.c b/src/mame/drivers/taxidriv.c
index 3c7a46c2591..65315d8c625 100644
--- a/src/mame/drivers/taxidriv.c
+++ b/src/mame/drivers/taxidriv.c
@@ -399,10 +399,9 @@ static MACHINE_CONFIG_START( taxidriv, taxidriv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 27*8-1)
- MCFG_SCREEN_UPDATE(taxidriv)
+ MCFG_SCREEN_UPDATE_STATIC(taxidriv)
MCFG_GFXDECODE(taxidriv)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tbowl.c b/src/mame/drivers/tbowl.c
index 6514c43286b..b5d28ee66b6 100644
--- a/src/mame/drivers/tbowl.c
+++ b/src/mame/drivers/tbowl.c
@@ -483,20 +483,18 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tbowl_left)
+ MCFG_SCREEN_UPDATE_STATIC(tbowl_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tbowl_right)
+ MCFG_SCREEN_UPDATE_STATIC(tbowl_right)
MCFG_VIDEO_START(tbowl)
diff --git a/src/mame/drivers/tceptor.c b/src/mame/drivers/tceptor.c
index d53ee7b39ec..eff06faaa52 100644
--- a/src/mame/drivers/tceptor.c
+++ b/src/mame/drivers/tceptor.c
@@ -402,28 +402,25 @@ static MACHINE_CONFIG_START( tceptor, tceptor_state )
MCFG_DEFAULT_LAYOUT(layout_horizont)
MCFG_SCREEN_ADD("2dscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tceptor_2d)
+ MCFG_SCREEN_UPDATE_STATIC(tceptor_2d)
MCFG_SCREEN_ADD("3dleft", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tceptor_3d_left)
+ MCFG_SCREEN_UPDATE_STATIC(tceptor_3d_left)
MCFG_SCREEN_ADD("3dright", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tceptor_3d_right)
+ MCFG_SCREEN_UPDATE_STATIC(tceptor_3d_right)
MCFG_SCREEN_EOF(tceptor)
MCFG_PALETTE_INIT(tceptor)
diff --git a/src/mame/drivers/tcl.c b/src/mame/drivers/tcl.c
index 14874ef8562..6b35c78a5f5 100644
--- a/src/mame/drivers/tcl.c
+++ b/src/mame/drivers/tcl.c
@@ -58,7 +58,7 @@ public:
static VIDEO_START( tcl )
{
}
-static SCREEN_UPDATE( tcl )
+static SCREEN_UPDATE_IND16( tcl )
{
return 0;
}
@@ -131,10 +131,9 @@ static MACHINE_CONFIG_START( tcl, tcl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tcl)
+ MCFG_SCREEN_UPDATE_STATIC(tcl)
MCFG_GFXDECODE(tcl)
MCFG_PALETTE_LENGTH(16*16)
diff --git a/src/mame/drivers/tecmo.c b/src/mame/drivers/tecmo.c
index 9fbbad5b9c5..b75e10ec79f 100644
--- a/src/mame/drivers/tecmo.c
+++ b/src/mame/drivers/tecmo.c
@@ -632,10 +632,9 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tecmo)
+ MCFG_SCREEN_UPDATE_STATIC(tecmo)
MCFG_GFXDECODE(tecmo)
MCFG_PALETTE_LENGTH(1024)
@@ -692,10 +691,9 @@ static MACHINE_CONFIG_START( backfirt, tecmo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tecmo)
+ MCFG_SCREEN_UPDATE_STATIC(tecmo)
MCFG_GFXDECODE(tecmo)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tecmo16.c b/src/mame/drivers/tecmo16.c
index ad4fd1a08ff..fba104929f4 100644
--- a/src/mame/drivers/tecmo16.c
+++ b/src/mame/drivers/tecmo16.c
@@ -389,10 +389,9 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tecmo16)
+ MCFG_SCREEN_UPDATE_STATIC(tecmo16)
MCFG_GFXDECODE(tecmo16)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/tecmosys.c b/src/mame/drivers/tecmosys.c
index ff7eb143a87..9957d58a488 100644
--- a/src/mame/drivers/tecmosys.c
+++ b/src/mame/drivers/tecmosys.c
@@ -473,10 +473,9 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.4458)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tecmosys)
+ MCFG_SCREEN_UPDATE_STATIC(tecmosys)
MCFG_PALETTE_LENGTH(0x4000+0x800)
diff --git a/src/mame/drivers/tehkanwc.c b/src/mame/drivers/tehkanwc.c
index bab91b24d82..2dd0ef29ca0 100644
--- a/src/mame/drivers/tehkanwc.c
+++ b/src/mame/drivers/tehkanwc.c
@@ -666,10 +666,9 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tehkanwc)
+ MCFG_SCREEN_UPDATE_STATIC(tehkanwc)
MCFG_GFXDECODE(tehkanwc)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/tempest.c b/src/mame/drivers/tempest.c
index bb3fb4dbea6..4c239150dcc 100644
--- a/src/mame/drivers/tempest.c
+++ b/src/mame/drivers/tempest.c
@@ -597,7 +597,7 @@ static MACHINE_CONFIG_START( tempest, tempest_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 580, 0, 570)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_tempest)
diff --git a/src/mame/drivers/terracre.c b/src/mame/drivers/terracre.c
index ac4761f3b3a..f9ab3fee700 100644
--- a/src/mame/drivers/terracre.c
+++ b/src/mame/drivers/terracre.c
@@ -543,10 +543,9 @@ static MACHINE_CONFIG_START( amazon, terracre_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( 60 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(amazon)
+ MCFG_SCREEN_UPDATE_STATIC(amazon)
MCFG_GFXDECODE(terracre)
MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
@@ -579,10 +578,9 @@ static MACHINE_CONFIG_START( ym3526, terracre_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( 60 )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(amazon)
+ MCFG_SCREEN_UPDATE_STATIC(amazon)
MCFG_GFXDECODE(terracre)
MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
@@ -615,10 +613,9 @@ static MACHINE_CONFIG_START( ym2203, terracre_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(amazon)
+ MCFG_SCREEN_UPDATE_STATIC(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 eba6a1c21ec..59758ae01e2 100644
--- a/src/mame/drivers/tetrisp2.c
+++ b/src/mame/drivers/tetrisp2.c
@@ -1114,10 +1114,9 @@ static MACHINE_CONFIG_START( tetrisp2, tetrisp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(tetrisp2)
+ MCFG_SCREEN_UPDATE_STATIC(tetrisp2)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1146,10 +1145,9 @@ static MACHINE_CONFIG_START( nndmseal, tetrisp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xf0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xf0-1)
- MCFG_SCREEN_UPDATE(tetrisp2)
+ MCFG_SCREEN_UPDATE_STATIC(tetrisp2)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1177,10 +1175,9 @@ static MACHINE_CONFIG_START( rockn, tetrisp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(rockntread)
+ MCFG_SCREEN_UPDATE_STATIC(rockntread)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1209,10 +1206,9 @@ static MACHINE_CONFIG_START( rockn2, tetrisp2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(rockntread)
+ MCFG_SCREEN_UPDATE_STATIC(rockntread)
MCFG_GFXDECODE(tetrisp2)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1248,20 +1244,18 @@ static MACHINE_CONFIG_START( rocknms, tetrisp2_state )
MCFG_DEFAULT_LAYOUT(layout_rocknms)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(rocknms_left)
+ MCFG_SCREEN_UPDATE_STATIC(rocknms_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(rocknms_right)
+ MCFG_SCREEN_UPDATE_STATIC(rocknms_right)
MCFG_VIDEO_START(rocknms)
diff --git a/src/mame/drivers/tgtpanic.c b/src/mame/drivers/tgtpanic.c
index 6f40f04f8e9..cf97d641bbc 100644
--- a/src/mame/drivers/tgtpanic.c
+++ b/src/mame/drivers/tgtpanic.c
@@ -30,7 +30,7 @@ public:
*
*************************************/
-static SCREEN_UPDATE( tgtpanic )
+static SCREEN_UPDATE_RGB32( tgtpanic )
{
tgtpanic_state *state = screen.machine().driver_data<tgtpanic_state>();
UINT32 colors[4];
@@ -139,10 +139,9 @@ static MACHINE_CONFIG_START( tgtpanic, tgtpanic_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) /* Unverified */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* Unverified */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 192 - 1, 0, 192 - 1)
- MCFG_SCREEN_UPDATE(tgtpanic)
+ MCFG_SCREEN_UPDATE_STATIC(tgtpanic)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thayers.c b/src/mame/drivers/thayers.c
index cfbec641405..716e579fd1a 100644
--- a/src/mame/drivers/thayers.c
+++ b/src/mame/drivers/thayers.c
@@ -13,7 +13,8 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "render.h"
-#include "machine/laserdsc.h"
+#include "machine/ldstub.h"
+#include "machine/ldv1000.h"
#include "cpu/cop400/cop400.h"
//#include "dlair.lh"
@@ -35,9 +36,12 @@ class thayers_state : public driver_device
{
public:
thayers_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_pr7820(*this, "laserdisc"),
+ m_ldv1000(*this, "laserdisc") { }
- device_t *m_laserdisc;
+ optional_device<pioneer_pr7820_device> m_pr7820;
+ optional_device<pioneer_ldv1000_device> m_ldv1000;
UINT8 m_laserdisc_data;
int m_rx_bit;
int m_keylatch;
@@ -350,7 +354,9 @@ static READ8_HANDLER( dsw_b_r )
static READ8_HANDLER( laserdsc_data_r )
{
thayers_state *state = space->machine().driver_data<thayers_state>();
- return laserdisc_data_r(state->m_laserdisc);
+ if (state->m_ldv1000 != NULL) return state->m_ldv1000->status_r();
+ if (state->m_pr7820 != NULL) return state->m_pr7820->data_r();
+ return 0;
}
static WRITE8_HANDLER( laserdsc_data_w )
@@ -381,22 +387,18 @@ static WRITE8_HANDLER( laserdsc_control_w )
if (BIT(data, 5))
{
- laserdisc_data_w(state->m_laserdisc, state->m_laserdisc_data);
- }
-
- switch (laserdisc_get_type(state->m_laserdisc))
- {
- case LASERDISC_TYPE_PIONEER_PR7820:
+ if (state->m_ldv1000 != NULL)
+ {
+ state->m_ldv1000->data_w(state->m_laserdisc_data);
+ state->m_ldv1000->enter_w(BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
+ }
+ if (state->m_pr7820 != NULL)
+ {
+ state->m_pr7820->data_w(state->m_laserdisc_data);
state->m_pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE;
-
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_ENTER, state->m_pr7820_enter);
-
+ state->m_pr7820->enter_w(state->m_pr7820_enter);
// BIT(data, 7) is INT/_EXT, but there is no such input line in laserdsc.h
- break;
-
- case LASERDISC_TYPE_PIONEER_LDV1000:
- laserdisc_line_w(state->m_laserdisc, LASERDISC_LINE_ENTER, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
- break;
+ }
}
}
@@ -615,30 +617,16 @@ ADDRESS_MAP_END
static CUSTOM_INPUT( laserdisc_enter_r )
{
thayers_state *state = field.machine().driver_data<thayers_state>();
- switch (laserdisc_get_type(state->m_laserdisc))
- {
- case LASERDISC_TYPE_PIONEER_PR7820:
- return state->m_pr7820_enter;
-
- case LASERDISC_TYPE_PIONEER_LDV1000:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
- }
-
+ if (state->m_pr7820 != NULL) return state->m_pr7820_enter;
+ if (state->m_ldv1000 != NULL) return (state->m_ldv1000->status_strobe_r() == ASSERT_LINE) ? 0 : 1;
return 0;
}
static CUSTOM_INPUT( laserdisc_ready_r )
{
thayers_state *state = field.machine().driver_data<thayers_state>();
- switch (laserdisc_get_type(state->m_laserdisc))
- {
- case LASERDISC_TYPE_PIONEER_PR7820:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
-
- case LASERDISC_TYPE_PIONEER_LDV1000:
- return (laserdisc_line_r(state->m_laserdisc, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
- }
-
+ if (state->m_pr7820 != NULL) return (state->m_pr7820->ready_r() == ASSERT_LINE) ? 0 : 1;
+ if (state->m_ldv1000 != NULL) return (state->m_ldv1000->command_strobe_r() == ASSERT_LINE) ? 0 : 1;
return 0;
}
@@ -748,14 +736,12 @@ INPUT_PORTS_END
static MACHINE_START( thayers )
{
thayers_state *state = machine.driver_data<thayers_state>();
- state->m_laserdisc = machine.device("laserdisc");
memset(&state->m_ssi263, 0, sizeof(state->m_ssi263));
}
static MACHINE_RESET( thayers )
{
thayers_state *state = machine.driver_data<thayers_state>();
- int newtype;
state->m_laserdisc_data = 0;
@@ -774,8 +760,8 @@ static MACHINE_RESET( thayers )
state->m_cart_present = 0;
state->m_pr7820_enter = 0;
- newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
- laserdisc_set_type(state->m_laserdisc, newtype);
+// newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
+// laserdisc_set_type(state->m_laserdisc, newtype);
}
/* COP400 Interface */
@@ -802,10 +788,10 @@ static MACHINE_CONFIG_START( thayers, thayers_state )
MCFG_MACHINE_START(thayers)
MCFG_MACHINE_RESET(thayers)
- MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR7820, "screen", "ldsound")
+ MCFG_LASERDISC_PR7820_ADD("laserdisc")
/* video hardware */
- MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", BITMAP_FORMAT_RGB32)
+ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_PALETTE_LENGTH(256)
@@ -813,7 +799,7 @@ static MACHINE_CONFIG_START( thayers, thayers_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
// SSI 263 @ 2MHz
- MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0)
+ MCFG_SOUND_MODIFY("laserdisc")
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thedeep.c b/src/mame/drivers/thedeep.c
index c220794b555..29d76ed5368 100644
--- a/src/mame/drivers/thedeep.c
+++ b/src/mame/drivers/thedeep.c
@@ -473,10 +473,9 @@ static MACHINE_CONFIG_START( thedeep, thedeep_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x100, 0xf8)
MCFG_SCREEN_VISIBLE_AREA(0, 0x100-1, 0, 0xf8-1)
- MCFG_SCREEN_UPDATE(thedeep)
+ MCFG_SCREEN_UPDATE_STATIC(thedeep)
MCFG_GFXDECODE(thedeep)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/thepit.c b/src/mame/drivers/thepit.c
index 9cb3fcbed15..685f7a37125 100644
--- a/src/mame/drivers/thepit.c
+++ b/src/mame/drivers/thepit.c
@@ -662,9 +662,8 @@ static MACHINE_CONFIG_START( thepit, thepit_state )
MCFG_PALETTE_LENGTH(32+8)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(thepit)
+ MCFG_SCREEN_UPDATE_STATIC(thepit)
MCFG_PALETTE_INIT(thepit)
MCFG_VIDEO_START(thepit)
diff --git a/src/mame/drivers/thief.c b/src/mame/drivers/thief.c
index ead0409a781..33183235cd1 100644
--- a/src/mame/drivers/thief.c
+++ b/src/mame/drivers/thief.c
@@ -444,12 +444,11 @@ static MACHINE_CONFIG_START( sharkatt, thief_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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, 24*8-1)
- MCFG_SCREEN_UPDATE(thief)
+ MCFG_SCREEN_UPDATE_STATIC(thief)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
@@ -484,10 +483,9 @@ static MACHINE_CONFIG_START( thief, thief_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(thief)
+ MCFG_SCREEN_UPDATE_STATIC(thief)
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
@@ -522,10 +520,9 @@ static MACHINE_CONFIG_START( natodef, thief_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(thief)
+ MCFG_SCREEN_UPDATE_STATIC(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 fec83d69427..c07871ab506 100644
--- a/src/mame/drivers/thoop2.c
+++ b/src/mame/drivers/thoop2.c
@@ -197,10 +197,9 @@ static MACHINE_CONFIG_START( thoop2, thoop2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
- MCFG_SCREEN_UPDATE(thoop2)
+ MCFG_SCREEN_UPDATE_STATIC(thoop2)
MCFG_GFXDECODE(thoop2)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/thunderj.c b/src/mame/drivers/thunderj.c
index c9f752bcb34..17ad4e2f8ec 100644
--- a/src/mame/drivers/thunderj.c
+++ b/src/mame/drivers/thunderj.c
@@ -306,11 +306,10 @@ static MACHINE_CONFIG_START( thunderj, thunderj_state )
MCFG_PALETTE_LENGTH(2048)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(thunderj)
+ MCFG_SCREEN_UPDATE_STATIC(thunderj)
MCFG_VIDEO_START(thunderj)
diff --git a/src/mame/drivers/thunderx.c b/src/mame/drivers/thunderx.c
index 26a4deca0c2..b282b6670b6 100644
--- a/src/mame/drivers/thunderx.c
+++ b/src/mame/drivers/thunderx.c
@@ -698,10 +698,9 @@ static MACHINE_CONFIG_START( scontra, thunderx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(scontra)
+ MCFG_SCREEN_UPDATE_STATIC(scontra)
MCFG_PALETTE_LENGTH(1024)
@@ -743,10 +742,9 @@ static MACHINE_CONFIG_START( thunderx, thunderx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(scontra)
+ MCFG_SCREEN_UPDATE_STATIC(scontra)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tiamc1.c b/src/mame/drivers/tiamc1.c
index 3efc821e824..4f3576048c0 100644
--- a/src/mame/drivers/tiamc1.c
+++ b/src/mame/drivers/tiamc1.c
@@ -232,10 +232,9 @@ static MACHINE_CONFIG_START( tiamc1, tiamc1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1600))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(tiamc1)
+ MCFG_SCREEN_UPDATE_STATIC(tiamc1)
MCFG_GFXDECODE(tiamc1)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tickee.c b/src/mame/drivers/tickee.c
index d9396b5415a..1c90be35307 100644
--- a/src/mame/drivers/tickee.c
+++ b/src/mame/drivers/tickee.c
@@ -141,7 +141,7 @@ static VIDEO_START( tickee )
*
*************************************/
-static void scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
tickee_state *state = screen.machine().driver_data<tickee_state>();
UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
@@ -167,7 +167,7 @@ static void scanline_update(screen_device &screen, bitmap_t &bitmap, int scanlin
}
-static void rapidfir_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void rapidfir_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
tickee_state *state = screen.machine().driver_data<tickee_state>();
UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
@@ -725,7 +725,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
VIDEO_CLOCK/2, /* pixel clock */
1, /* pixels per clock */
- scanline_update, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ scanline_update, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
NULL, /* write to shiftreg function */
NULL /* read from shiftreg function */
@@ -738,7 +739,8 @@ static const tms34010_config rapidfir_tms_config =
"screen", /* the screen operated on */
VIDEO_CLOCK/2, /* pixel clock */
1, /* pixels per clock */
- rapidfir_scanline_update, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ rapidfir_scanline_update, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
rapidfir_to_shiftreg, /* write to shiftreg function */
rapidfir_from_shiftreg /* read from shiftreg function */
@@ -771,9 +773,8 @@ static MACHINE_CONFIG_START( tickee, tickee_state )
MCFG_VIDEO_START(tickee)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -812,9 +813,8 @@ static MACHINE_CONFIG_START( rapidfir, tickee_state )
MCFG_VIDEO_START(tickee)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -841,9 +841,8 @@ static MACHINE_CONFIG_START( mouseatk, tickee_state )
MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c
index 990ea445902..72951f1cd30 100644
--- a/src/mame/drivers/tigeroad.c
+++ b/src/mame/drivers/tigeroad.c
@@ -534,10 +534,9 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.08) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tigeroad)
+ MCFG_SCREEN_UPDATE_STATIC(tigeroad)
MCFG_SCREEN_EOF(tigeroad)
MCFG_GFXDECODE(tigeroad)
diff --git a/src/mame/drivers/timelimt.c b/src/mame/drivers/timelimt.c
index 92ed559935d..44de0aeb21f 100644
--- a/src/mame/drivers/timelimt.c
+++ b/src/mame/drivers/timelimt.c
@@ -254,10 +254,9 @@ static MACHINE_CONFIG_START( timelimt, timelimt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(timelimt)
+ MCFG_SCREEN_UPDATE_STATIC(timelimt)
MCFG_GFXDECODE(timelimt)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/timeplt.c b/src/mame/drivers/timeplt.c
index 342c62a28f1..1c8c2d676ad 100644
--- a/src/mame/drivers/timeplt.c
+++ b/src/mame/drivers/timeplt.c
@@ -392,10 +392,9 @@ static MACHINE_CONFIG_START( timeplt, timeplt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(timeplt)
+ MCFG_SCREEN_UPDATE_STATIC(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 068adb0c1ea..9954e05a6ae 100644
--- a/src/mame/drivers/timetrv.c
+++ b/src/mame/drivers/timetrv.c
@@ -44,7 +44,7 @@ static VIDEO_START( timetrv )
}
-static SCREEN_UPDATE( timetrv )
+static SCREEN_UPDATE_IND16( timetrv )
{
timetrv_state *state = screen.machine().driver_data<timetrv_state>();
popmessage("%s%s",state->m_led_vram_lo,state->m_led_vram_hi);
@@ -150,10 +150,9 @@ static MACHINE_CONFIG_START( timetrv, timetrv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
- MCFG_SCREEN_UPDATE(timetrv)
+ MCFG_SCREEN_UPDATE_STATIC(timetrv)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c
index 7b6eb35fb2d..d323c00fca4 100644
--- a/src/mame/drivers/tmaster.c
+++ b/src/mame/drivers/tmaster.c
@@ -126,7 +126,7 @@ public:
int m_okibank;
UINT8 m_rtc_ram[8];
- bitmap_t *m_bitmap[2][2];
+ bitmap_ind16 m_bitmap[2][2];
UINT16 *m_regs;
UINT16 m_color;
UINT16 m_addr;
@@ -299,8 +299,8 @@ static VIDEO_START( tmaster )
{
for (buffer = 0; buffer < 2; buffer++)
{
- state->m_bitmap[layer][buffer] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_bitmap[layer][buffer]->fill(0xff);
+ state->m_bitmap[layer][buffer].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_bitmap[layer][buffer].fill(0xff);
}
}
@@ -314,7 +314,7 @@ static VIDEO_START( galgames )
state->m_compute_addr = galgames_compute_addr;
}
-static SCREEN_UPDATE( tmaster )
+static SCREEN_UPDATE_IND16( tmaster )
{
tmaster_state *state = screen.machine().driver_data<tmaster_state>();
int layers_ctrl = -1;
@@ -332,8 +332,8 @@ static SCREEN_UPDATE( 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, 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);
return 0;
}
@@ -371,7 +371,7 @@ static void tmaster_draw(running_machine &machine)
layer = (mode >> 7) & 1; // layer to draw to
buffer = ((mode >> 6) & 1) ^ ((buffer >> layer) & 1); // bit 6 selects whether to use the opposite buffer to that displayed
- bitmap_t &bitmap = *state->m_bitmap[layer][buffer];
+ bitmap_ind16 &bitmap = state->m_bitmap[layer][buffer];
addr <<= 1;
@@ -914,10 +914,9 @@ static MACHINE_CONFIG_START( tm3k, tmaster_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(400, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(tmaster)
+ MCFG_SCREEN_UPDATE_STATIC(tmaster)
MCFG_PALETTE_LENGTH(0x1000)
@@ -971,12 +970,11 @@ static MACHINE_CONFIG_START( galgames, tmaster_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(400, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
- MCFG_SCREEN_UPDATE(tmaster)
+ MCFG_SCREEN_UPDATE_STATIC(tmaster)
MCFG_PALETTE_LENGTH(0x1000) // only 0x100 used
diff --git a/src/mame/drivers/tmmjprd.c b/src/mame/drivers/tmmjprd.c
index 356c52ec407..cc7cb0f291a 100644
--- a/src/mame/drivers/tmmjprd.c
+++ b/src/mame/drivers/tmmjprd.c
@@ -78,7 +78,7 @@ static WRITE32_HANDLER( tmmjprd_tilemap3_w )
COMBINE_DATA(&state->m_tilemap_ram[3][offset]);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int screen)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int screen)
{
tmmjprd_state *state = machine.driver_data<tmmjprd_state>();
int xpos,ypos,tileno,xflip,yflip, colr;
@@ -155,7 +155,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static void ttmjprd_draw_tile(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int x,int y,int sizex,int sizey, UINT32 tiledata, UINT8* rom)
+static void ttmjprd_draw_tile(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int x,int y,int sizex,int sizey, UINT32 tiledata, UINT8* rom)
{
/* note, it's tile address _NOT_ tile number, 'sub-tile' access is possible, hence using the custom rendering */
int tileaddr = (tiledata&0x000fffff)>>0;
@@ -234,7 +234,7 @@ static void ttmjprd_draw_tile(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void ttmjprd_draw_tilemap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom )
+static void ttmjprd_draw_tilemap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom )
{
int y,x;
int count;
@@ -275,7 +275,7 @@ static void ttmjprd_draw_tilemap(running_machine &machine, bitmap_t &bitmap, con
}
-static SCREEN_UPDATE( tmmjprd_left )
+static SCREEN_UPDATE_IND16( tmmjprd_left )
{
tmmjprd_state *state = screen.machine().driver_data<tmmjprd_state>();
UINT8* gfxroms = screen.machine().region("gfx2")->base();
@@ -310,7 +310,7 @@ static SCREEN_UPDATE( tmmjprd_left )
return 0;
}
-static SCREEN_UPDATE( tmmjprd_right )
+static SCREEN_UPDATE_IND16( tmmjprd_right )
{
tmmjprd_state *state = screen.machine().driver_data<tmmjprd_state>();
UINT8* gfxroms = screen.machine().region("gfx2")->base();
@@ -752,7 +752,7 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state )
// MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
-// MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+// MCFG_SCREEN_UPDATE_DRIVER(tmmjprd_state, screen_update)
// MCFG_SCREEN_SIZE(64*16, 64*16)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_PALETTE_LENGTH(0x1000)
@@ -761,22 +761,20 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*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(tmmjprd_left)
+ MCFG_SCREEN_UPDATE_STATIC(tmmjprd_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*16, 64*16)
MCFG_SCREEN_VISIBLE_AREA(0*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(tmmjprd_right)
+ MCFG_SCREEN_UPDATE_STATIC(tmmjprd_right)
MCFG_VIDEO_START(tmmjprd)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index 64d8fd9c116..959aea7bbc5 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -2342,10 +2342,9 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mia)
+ MCFG_SCREEN_UPDATE_STATIC(mia)
MCFG_PALETTE_LENGTH(1024)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -2384,10 +2383,9 @@ static MACHINE_CONFIG_START( mia, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(mia)
+ MCFG_SCREEN_UPDATE_STATIC(mia)
MCFG_PALETTE_LENGTH(1024)
@@ -2438,11 +2436,10 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tmnt)
+ MCFG_SCREEN_UPDATE_STATIC(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)
@@ -2493,10 +2490,9 @@ static MACHINE_CONFIG_START( punkshot, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(punkshot)
+ MCFG_SCREEN_UPDATE_STATIC(punkshot)
MCFG_PALETTE_LENGTH(2048)
@@ -2535,10 +2531,9 @@ static MACHINE_CONFIG_START( lgtnfght, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lgtnfght)
+ MCFG_SCREEN_UPDATE_STATIC(lgtnfght)
MCFG_PALETTE_LENGTH(2048)
@@ -2583,10 +2578,9 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(lgtnfght)
+ MCFG_SCREEN_UPDATE_STATIC(lgtnfght)
MCFG_SCREEN_EOF( blswhstl )
MCFG_PALETTE_LENGTH(2048)
@@ -2648,10 +2642,9 @@ static MACHINE_CONFIG_START( glfgreat, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(glfgreat)
+ MCFG_SCREEN_UPDATE_STATIC(glfgreat)
MCFG_GFXDECODE(glfgreat)
MCFG_PALETTE_LENGTH(2048)
@@ -2714,10 +2707,9 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(glfgreat)
+ MCFG_SCREEN_UPDATE_STATIC(glfgreat)
MCFG_GFXDECODE(glfgreat)
MCFG_PALETTE_LENGTH(2048)
@@ -2765,10 +2757,9 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tmnt2)
+ MCFG_SCREEN_UPDATE_STATIC(tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2813,10 +2804,9 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tmnt2)
+ MCFG_SCREEN_UPDATE_STATIC(tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2857,10 +2847,9 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tmnt2)
+ MCFG_SCREEN_UPDATE_STATIC(tmnt2)
MCFG_PALETTE_LENGTH(2048)
@@ -2898,10 +2887,9 @@ static MACHINE_CONFIG_START( thndrx2, tmnt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(thndrx2)
+ MCFG_SCREEN_UPDATE_STATIC(thndrx2)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/tmspoker.c b/src/mame/drivers/tmspoker.c
index 41ccbf22d7c..01a8e15271b 100644
--- a/src/mame/drivers/tmspoker.c
+++ b/src/mame/drivers/tmspoker.c
@@ -257,7 +257,7 @@ static VIDEO_START( tmspoker )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( tmspoker )
+static SCREEN_UPDATE_IND16( tmspoker )
{
tmspoker_state *state = screen.machine().driver_data<tmspoker_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -571,7 +571,6 @@ static MACHINE_CONFIG_START( tmspoker, tmspoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
@@ -581,7 +580,7 @@ static MACHINE_CONFIG_START( tmspoker, tmspoker_state )
MCFG_PALETTE_LENGTH(256)
MCFG_VIDEO_START(tmspoker)
- MCFG_SCREEN_UPDATE(tmspoker)
+ MCFG_SCREEN_UPDATE_STATIC(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 28a8c1b6c26..be2a7ec9291 100644
--- a/src/mame/drivers/tnzs.c
+++ b/src/mame/drivers/tnzs.c
@@ -1636,10 +1636,9 @@ static MACHINE_CONFIG_START( arknoid2, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
@@ -1678,10 +1677,9 @@ static MACHINE_CONFIG_START( drtoppel, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
@@ -1723,10 +1721,9 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.15) /* it should be the same as the newer pcb vsync */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
@@ -1764,10 +1761,9 @@ static MACHINE_CONFIG_START( insectx, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(insectx)
@@ -1804,10 +1800,9 @@ static MACHINE_CONFIG_START( kageki, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
@@ -1855,10 +1850,9 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.15) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
@@ -1919,10 +1913,9 @@ static MACHINE_CONFIG_START( jpopnics, tnzs_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tnzs)
+ MCFG_SCREEN_UPDATE_STATIC(tnzs)
MCFG_SCREEN_EOF(tnzs)
MCFG_GFXDECODE(tnzs)
diff --git a/src/mame/drivers/toaplan1.c b/src/mame/drivers/toaplan1.c
index 057a327c819..50ba2c37687 100644
--- a/src/mame/drivers/toaplan1.c
+++ b/src/mame/drivers/toaplan1.c
@@ -1527,10 +1527,9 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.14) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x288 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(rallybik)
+ MCFG_SCREEN_UPDATE_STATIC(rallybik)
MCFG_SCREEN_EOF(rallybik)
MCFG_GFXDECODE(rallybik)
@@ -1567,10 +1566,9 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.59) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x320 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(toaplan1)
@@ -1607,10 +1605,9 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x240 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(toaplan1)
@@ -1647,10 +1644,9 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (XTAL_28MHz / 4) / (450 * 282) ) /* fixed by SUZ */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x240 mostly active, 512x512 actually used */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(toaplan1)
@@ -1691,10 +1687,9 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55.14) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x240 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(toaplan1)
@@ -1729,10 +1724,9 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.59) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x320 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(samesame)
MCFG_GFXDECODE(toaplan1)
@@ -1769,10 +1763,9 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x256 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(outzone)
@@ -1807,10 +1800,9 @@ static MACHINE_CONFIG_START( vimana, toaplan1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57.59) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512) /* 512x256 active */
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan1)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan1)
MCFG_SCREEN_EOF(toaplan1)
MCFG_GFXDECODE(vm)
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index 4ea3dca23dd..491c8b14c66 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -3044,10 +3044,9 @@ static MACHINE_CONFIG_START( tekipaki, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3086,10 +3085,9 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3177,10 +3175,9 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(dogyuun)
+ MCFG_SCREEN_UPDATE_STATIC(dogyuun)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(t2dualvdp)
@@ -3222,10 +3219,9 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3260,10 +3256,9 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3298,10 +3293,9 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(truxton2)
@@ -3354,10 +3348,9 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3396,10 +3389,9 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3478,10 +3470,9 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* 27MHz Oscillator */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(truxton2)
@@ -3516,10 +3507,9 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(fixeightbl)
@@ -3557,10 +3547,9 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (double)(XTAL_27MHz / 4) / (432 * 263) ) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3596,10 +3585,9 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(batsugun)
+ MCFG_SCREEN_UPDATE_STATIC(batsugun)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(t2dualvdp)
@@ -3635,10 +3623,9 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(toaplan2)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(toaplan2)
@@ -3679,10 +3666,9 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(raizing)
@@ -3723,10 +3709,9 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(raizing)
@@ -3778,10 +3763,9 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(truxton2)
+ MCFG_SCREEN_UPDATE_STATIC(truxton2)
MCFG_SCREEN_EOF(toaplan2)
MCFG_GFXDECODE(raizing)
@@ -3825,10 +3809,9 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(batrider)
+ MCFG_SCREEN_UPDATE_STATIC(batrider)
MCFG_GFXDECODE(batrider)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3877,10 +3860,9 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(batrider)
+ MCFG_SCREEN_UPDATE_STATIC(batrider)
MCFG_GFXDECODE(batrider)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c
index e370aa482af..9694bc5de5a 100644
--- a/src/mame/drivers/toki.c
+++ b/src/mame/drivers/toki.c
@@ -429,10 +429,9 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu *
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(toki)
+ MCFG_SCREEN_UPDATE_STATIC(toki)
MCFG_SCREEN_EOF(toki)
MCFG_GFXDECODE(toki)
@@ -460,10 +459,9 @@ static MACHINE_CONFIG_START( tokib, toki_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tokib)
+ MCFG_SCREEN_UPDATE_STATIC(tokib)
MCFG_SCREEN_EOF(tokib)
MCFG_GFXDECODE(tokib)
diff --git a/src/mame/drivers/tokyocop.c b/src/mame/drivers/tokyocop.c
index 7d0fbae301b..02dab9109df 100644
--- a/src/mame/drivers/tokyocop.c
+++ b/src/mame/drivers/tokyocop.c
@@ -33,6 +33,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -40,7 +42,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -48,7 +49,7 @@ void tokyocop_state::video_start()
{
}
-bool tokyocop_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 tokyocop_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -68,7 +69,7 @@ static MACHINE_CONFIG_START( tokyocop, tokyocop_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(tokyocop_state, screen_update)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
diff --git a/src/mame/drivers/tomcat.c b/src/mame/drivers/tomcat.c
index c9df5f74e6a..dde9ab84322 100644
--- a/src/mame/drivers/tomcat.c
+++ b/src/mame/drivers/tomcat.c
@@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( tomcat, tomcat_state )
//MCFG_SCREEN_REFRESH_RATE((double)XTAL_12MHz / 16 / 16 / 16 / 12 / 5 )
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 280, 0, 250)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(avg_tomcat)
diff --git a/src/mame/drivers/tonton.c b/src/mame/drivers/tonton.c
index c0ffc7f2d69..6b59b8bd308 100644
--- a/src/mame/drivers/tonton.c
+++ b/src/mame/drivers/tonton.c
@@ -34,9 +34,10 @@ class tonton_state : public driver_device
{
public:
tonton_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
-
- bitmap_t *m_vdp0_bitmap;
+ : driver_device(mconfig, type, tag),
+ m_v9938(*this, "v9938") { }
+
+ required_device<v9938_device> m_v9938;
};
#define MAIN_CLOCK XTAL_21_4772MHz
@@ -55,27 +56,9 @@ public:
* Video Hardware *
*************************************************/
-static void tonton_vdp0_interrupt(running_machine &machine, int i)
-{
- cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
-}
-
-static VIDEO_START( tonton )
+static void tonton_vdp0_interrupt(device_t *, v99x8_device &device, int i)
{
- tonton_state *state = machine.driver_data<tonton_state>();
- state->m_vdp0_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- v9938_init (machine, 0, *machine.primary_screen, *state->m_vdp0_bitmap, MODEL_V9938, 0x40000, tonton_vdp0_interrupt);
- v9938_reset(0);
-}
-
-static SCREEN_UPDATE( tonton )
-{
- tonton_state *state = screen.machine().driver_data<tonton_state>();
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
-
- copybitmap(bitmap, *state->m_vdp0_bitmap, 0, 0, 0, 0, cliprect);
-
- return 0;
+ cputag_set_input_line (device.machine(), "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
}
@@ -112,10 +95,7 @@ static ADDRESS_MAP_START( tonton_io, AS_IO, 8 )
AM_RANGE(0x00, 0x01) AM_WRITE(tonton_outport_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2")
- AM_RANGE(0x88, 0x88) AM_READWRITE( v9938_0_vram_r, v9938_0_vram_w )
- AM_RANGE(0x89, 0x89) AM_READWRITE( v9938_0_status_r, v9938_0_command_w )
- AM_RANGE(0x8a, 0x8a) AM_WRITE( v9938_0_palette_w )
- AM_RANGE(0x8b, 0x8b) AM_WRITE( v9938_0_register_w )
+ AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE_MODERN( "v9938", v9938_device, read, write )
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_r)
ADDRESS_MAP_END
@@ -210,7 +190,6 @@ static MACHINE_START( tonton )
static MACHINE_RESET( tonton )
{
- v9938_reset(0);
}
@@ -220,9 +199,10 @@ static MACHINE_RESET( tonton )
static TIMER_DEVICE_CALLBACK( tonton_interrupt )
{
- v9938_set_sprite_limit(0, 0);
- v9938_set_resolution(0, 0);
- v9938_interrupt(timer.machine(), 0);
+ tonton_state *state = timer.machine().driver_data<tonton_state>();
+ state->m_v9938->set_sprite_limit(0);
+ state->m_v9938->set_resolution(0);
+ state->m_v9938->interrupt();
}
@@ -280,20 +260,20 @@ static MACHINE_CONFIG_START( tonton, tonton_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_V9938_ADD("v9938", "screen", 0x40000)
+ MCFG_V99X8_INTERRUPT_CALLBACK_STATIC(tonton_vdp0_interrupt)
+
MCFG_SCREEN_ADD("screen",RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, MSX2_TOTAL_YRES_PIXELS)
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(tonton)
+ MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT( v9938 )
- MCFG_VIDEO_START(tonton)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", YM2149, MAIN_CLOCK/12) /* Guess. According to other MSX2 based gambling games */
diff --git a/src/mame/drivers/toobin.c b/src/mame/drivers/toobin.c
index c86cc4050c1..553305b7fd8 100644
--- a/src/mame/drivers/toobin.c
+++ b/src/mame/drivers/toobin.c
@@ -240,8 +240,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_FORMAT(BITMAP_FORMAT_RGB32)
- MCFG_SCREEN_UPDATE(toobin)
+ MCFG_SCREEN_UPDATE_STATIC(toobin)
MCFG_GFXDECODE(toobin)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/topspeed.c b/src/mame/drivers/topspeed.c
index c7a058a8104..ea1ea739ef1 100644
--- a/src/mame/drivers/topspeed.c
+++ b/src/mame/drivers/topspeed.c
@@ -716,10 +716,9 @@ static MACHINE_CONFIG_START( topspeed, topspeed_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(topspeed)
+ MCFG_SCREEN_UPDATE_STATIC(topspeed)
MCFG_GFXDECODE(topspeed)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/toratora.c b/src/mame/drivers/toratora.c
index 509d9755781..46a97338fd2 100644
--- a/src/mame/drivers/toratora.c
+++ b/src/mame/drivers/toratora.c
@@ -65,7 +65,7 @@ static WRITE_LINE_DEVICE_HANDLER( cb2_u3_w )
*
*************************************/
-static SCREEN_UPDATE( toratora )
+static SCREEN_UPDATE_RGB32( toratora )
{
toratora_state *state = screen.machine().driver_data<toratora_state>();
offs_t offs;
@@ -411,12 +411,11 @@ static MACHINE_CONFIG_START( toratora, toratora_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
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(toratora)
+ MCFG_SCREEN_UPDATE_STATIC(toratora)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tourtabl.c b/src/mame/drivers/tourtabl.c
index 10345cfb4e4..b8d72ea932c 100644
--- a/src/mame/drivers/tourtabl.c
+++ b/src/mame/drivers/tourtabl.c
@@ -186,9 +186,8 @@ static MACHINE_CONFIG_START( tourtabl, tourtabl_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS( MASTER_CLOCK, 228, 34, 34 + 160, 262, 46, 46 + 200 )
- MCFG_SCREEN_UPDATE(tia)
+ MCFG_SCREEN_UPDATE_STATIC(tia)
MCFG_PALETTE_LENGTH(TIA_PALETTE_LENGTH)
MCFG_PALETTE_INIT(tia_NTSC)
diff --git a/src/mame/drivers/tourvis.c b/src/mame/drivers/tourvis.c
index f0dc9e19f32..3f824976e58 100644
--- a/src/mame/drivers/tourvis.c
+++ b/src/mame/drivers/tourvis.c
@@ -267,9 +267,8 @@ static MACHINE_CONFIG_START( tourvision, tourvision_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
- MCFG_SCREEN_UPDATE( pce )
+ MCFG_SCREEN_UPDATE_STATIC( pce )
/* MCFG_GFXDECODE( pce_gfxdecodeinfo ) */
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/toypop.c b/src/mame/drivers/toypop.c
index e6ee35ef8fa..30c5a0b2dbc 100644
--- a/src/mame/drivers/toypop.c
+++ b/src/mame/drivers/toypop.c
@@ -581,10 +581,9 @@ static MACHINE_CONFIG_START( liblrabl, toypop_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(toypop)
+ MCFG_SCREEN_UPDATE_STATIC(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 d21e3c93225..a1c9967f50e 100644
--- a/src/mame/drivers/tp84.c
+++ b/src/mame/drivers/tp84.c
@@ -313,10 +313,9 @@ static MACHINE_CONFIG_START( tp84, tp84_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tp84)
+ MCFG_SCREEN_UPDATE_STATIC(tp84)
MCFG_GFXDECODE(tp84)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/trackfld.c b/src/mame/drivers/trackfld.c
index df27af22c09..eaf8a6b9ee9 100644
--- a/src/mame/drivers/trackfld.c
+++ b/src/mame/drivers/trackfld.c
@@ -938,10 +938,9 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(trackfld)
+ MCFG_SCREEN_UPDATE_STATIC(trackfld)
MCFG_GFXDECODE(trackfld)
MCFG_PALETTE_LENGTH(16*16+16*16)
@@ -993,10 +992,9 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(trackfld)
+ MCFG_SCREEN_UPDATE_STATIC(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 42828241a8a..8b6256a0ee8 100644
--- a/src/mame/drivers/travrusa.c
+++ b/src/mame/drivers/travrusa.c
@@ -312,10 +312,9 @@ static MACHINE_CONFIG_START( travrusa, travrusa_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */)
/* the Lode Runner manual (similar but different hardware) */
/* talks about 55Hz and 1790ms vblank duration. */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(travrusa)
+ MCFG_SCREEN_UPDATE_STATIC(travrusa)
MCFG_GFXDECODE(travrusa)
diff --git a/src/mame/drivers/triforce.c b/src/mame/drivers/triforce.c
index 2abcbe15b02..7354600c335 100644
--- a/src/mame/drivers/triforce.c
+++ b/src/mame/drivers/triforce.c
@@ -418,7 +418,7 @@ static VIDEO_START(triforce)
}
-static SCREEN_UPDATE(triforce)
+static SCREEN_UPDATE_RGB32(triforce)
{
return 0;
}
@@ -437,10 +437,9 @@ static MACHINE_CONFIG_START( triforce_base, driver_device )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(triforce)
+ MCFG_SCREEN_UPDATE_STATIC(triforce)
MCFG_PALETTE_LENGTH(65536)
diff --git a/src/mame/drivers/triplhnt.c b/src/mame/drivers/triplhnt.c
index 774cb895f15..dec0543bf43 100644
--- a/src/mame/drivers/triplhnt.c
+++ b/src/mame/drivers/triplhnt.c
@@ -322,10 +322,9 @@ static MACHINE_CONFIG_START( triplhnt, triplhnt_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE(triplhnt)
+ MCFG_SCREEN_UPDATE_STATIC(triplhnt)
MCFG_GFXDECODE(triplhnt)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c
index 9f3b98e2ebe..a395836e4a9 100644
--- a/src/mame/drivers/truco.c
+++ b/src/mame/drivers/truco.c
@@ -145,10 +145,9 @@ static MACHINE_CONFIG_START( truco, truco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 192)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
- MCFG_SCREEN_UPDATE(truco)
+ MCFG_SCREEN_UPDATE_STATIC(truco)
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT(truco)
diff --git a/src/mame/drivers/trucocl.c b/src/mame/drivers/trucocl.c
index 50be1a53aa1..ec17f410b50 100644
--- a/src/mame/drivers/trucocl.c
+++ b/src/mame/drivers/trucocl.c
@@ -142,10 +142,9 @@ static MACHINE_CONFIG_START( trucocl, trucocl_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(trucocl)
+ MCFG_SCREEN_UPDATE_STATIC(trucocl)
MCFG_GFXDECODE(trucocl)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/trvmadns.c b/src/mame/drivers/trvmadns.c
index c401fcbf5cf..1047358b95f 100644
--- a/src/mame/drivers/trvmadns.c
+++ b/src/mame/drivers/trvmadns.c
@@ -285,7 +285,7 @@ static VIDEO_START( trvmadns )
gfx_element_set_source(machine.gfx[0], state->m_gfxram);
}
-static SCREEN_UPDATE( trvmadns )
+static SCREEN_UPDATE_IND16( trvmadns )
{
trvmadns_state *state = screen.machine().driver_data<trvmadns_state>();
int x,y,count;
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( trvmadns, trvmadns_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(trvmadns)
+ MCFG_SCREEN_UPDATE_STATIC(trvmadns)
MCFG_GFXDECODE(trvmadns)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/tryout.c b/src/mame/drivers/tryout.c
index 8da31c38030..916a1532b9a 100644
--- a/src/mame/drivers/tryout.c
+++ b/src/mame/drivers/tryout.c
@@ -198,10 +198,9 @@ static MACHINE_CONFIG_START( tryout, tryout_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(tryout)
+ MCFG_SCREEN_UPDATE_STATIC(tryout)
MCFG_GFXDECODE(tryout)
MCFG_PALETTE_LENGTH(0x20)
diff --git a/src/mame/drivers/tsamurai.c b/src/mame/drivers/tsamurai.c
index eb30e1b7614..324f973ac5b 100644
--- a/src/mame/drivers/tsamurai.c
+++ b/src/mame/drivers/tsamurai.c
@@ -658,10 +658,9 @@ static MACHINE_CONFIG_START( tsamurai, tsamurai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE(tsamurai)
+ MCFG_SCREEN_UPDATE_STATIC(tsamurai)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
@@ -706,10 +705,9 @@ static MACHINE_CONFIG_START( m660, tsamurai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE(tsamurai)
+ MCFG_SCREEN_UPDATE_STATIC(tsamurai)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
@@ -747,10 +745,9 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
- MCFG_SCREEN_UPDATE(vsgongf)
+ MCFG_SCREEN_UPDATE_STATIC(vsgongf)
MCFG_GFXDECODE(tsamurai)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/ttchamp.c b/src/mame/drivers/ttchamp.c
index f910bedaf83..6fb9261a347 100644
--- a/src/mame/drivers/ttchamp.c
+++ b/src/mame/drivers/ttchamp.c
@@ -60,7 +60,7 @@ static VIDEO_START(ttchamp)
{
}
-static SCREEN_UPDATE(ttchamp)
+static SCREEN_UPDATE_IND16(ttchamp)
{
ttchamp_state *state = screen.machine().driver_data<ttchamp_state>();
int y,x,count;
@@ -244,10 +244,9 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(1024,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(ttchamp)
+ MCFG_SCREEN_UPDATE_STATIC(ttchamp)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/tubep.c b/src/mame/drivers/tubep.c
index c09e614afd8..72bbc5f81d2 100644
--- a/src/mame/drivers/tubep.c
+++ b/src/mame/drivers/tubep.c
@@ -920,10 +920,9 @@ static MACHINE_CONFIG_START( tubep, tubep_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(tubep)
+ MCFG_SCREEN_UPDATE_STATIC(tubep)
MCFG_PALETTE_LENGTH(32 + 256*64)
@@ -981,10 +980,9 @@ static MACHINE_CONFIG_START( rjammer, tubep_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 264)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(rjammer)
+ MCFG_SCREEN_UPDATE_STATIC(rjammer)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/tugboat.c b/src/mame/drivers/tugboat.c
index da6bb6f1d63..76b88e29810 100644
--- a/src/mame/drivers/tugboat.c
+++ b/src/mame/drivers/tugboat.c
@@ -90,7 +90,7 @@ static WRITE8_HANDLER( tugboat_score_w )
if (offset<0x8 ) state->m_ram[0x291d + 32*offset + 32*9] = data ^ 0x0f;
}
-static void draw_tilemap(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,
+static void draw_tilemap(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,
int addr,int gfx0,int gfx1,int transparency)
{
tugboat_state *state = machine.driver_data<tugboat_state>();
@@ -125,7 +125,7 @@ static void draw_tilemap(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-static SCREEN_UPDATE( tugboat )
+static SCREEN_UPDATE_IND16( tugboat )
{
tugboat_state *state = screen.machine().driver_data<tugboat_state>();
int startaddr0 = state->m_hd46505_0_reg[0x0c]*256 + state->m_hd46505_0_reg[0x0d];
@@ -338,10 +338,9 @@ static MACHINE_CONFIG_START( tugboat, tugboat_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8,32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8,31*8-1,2*8,30*8-1)
- MCFG_SCREEN_UPDATE(tugboat)
+ MCFG_SCREEN_UPDATE_STATIC(tugboat)
MCFG_GFXDECODE(tugboat)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/tumbleb.c b/src/mame/drivers/tumbleb.c
index d2c80698a15..56f617eae4f 100644
--- a/src/mame/drivers/tumbleb.c
+++ b/src/mame/drivers/tumbleb.c
@@ -2087,10 +2087,9 @@ static MACHINE_CONFIG_START( tumblepb, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(tumblepb)
+ MCFG_SCREEN_UPDATE_STATIC(tumblepb)
MCFG_GFXDECODE(tumbleb)
MCFG_PALETTE_LENGTH(1024)
@@ -2119,10 +2118,9 @@ static MACHINE_CONFIG_START( tumbleb2, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(tumblepb)
+ MCFG_SCREEN_UPDATE_STATIC(tumblepb)
MCFG_GFXDECODE(tumbleb)
MCFG_PALETTE_LENGTH(1024)
@@ -2154,10 +2152,9 @@ static MACHINE_CONFIG_START( jumpkids, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(jumpkids)
+ MCFG_SCREEN_UPDATE_STATIC(jumpkids)
MCFG_GFXDECODE(tumbleb)
MCFG_PALETTE_LENGTH(1024)
@@ -2185,10 +2182,9 @@ static MACHINE_CONFIG_START( fncywld, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(fncywld)
+ MCFG_SCREEN_UPDATE_STATIC(fncywld)
MCFG_GFXDECODE(fncywld)
MCFG_PALETTE_LENGTH(0x800)
@@ -2252,10 +2248,9 @@ static MACHINE_CONFIG_START( htchctch, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
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_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(semicom)
+ MCFG_SCREEN_UPDATE_STATIC(semicom)
MCFG_GFXDECODE(tumbleb)
MCFG_PALETTE_LENGTH(1024)
@@ -2277,7 +2272,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib, htchctch )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( semicom_altoffsets )
+ MCFG_SCREEN_UPDATE_STATIC( semicom_altoffsets )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib_mcu, htchctch )
@@ -2289,12 +2284,12 @@ static MACHINE_CONFIG_DERIVED( cookbib_mcu, htchctch )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE( semicom_altoffsets )
+ MCFG_SCREEN_UPDATE_STATIC( semicom_altoffsets )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bcstory, htchctch )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(bcstory)
+ MCFG_SCREEN_UPDATE_STATIC(bcstory)
MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
MCFG_SOUND_CONFIG(semicom_ym2151_interface)
@@ -2304,13 +2299,13 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( semibase, bcstory )
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(semibase )
+ MCFG_SCREEN_UPDATE_STATIC(semibase )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sdfight, bcstory )
MCFG_VIDEO_START(sdfight)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(sdfight)
+ MCFG_SCREEN_UPDATE_STATIC(sdfight)
MACHINE_CONFIG_END
@@ -2341,10 +2336,9 @@ static MACHINE_CONFIG_START( jumppop, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(jumppop)
+ MCFG_SCREEN_UPDATE_STATIC(jumppop)
MCFG_GFXDECODE(jumppop)
MCFG_PALETTE_LENGTH(1024)
@@ -2379,10 +2373,9 @@ static MACHINE_CONFIG_START( suprtrio, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(suprtrio)
+ MCFG_SCREEN_UPDATE_STATIC(suprtrio)
MCFG_GFXDECODE(suprtrio)
MCFG_PALETTE_LENGTH(1024)
@@ -2411,10 +2404,9 @@ static MACHINE_CONFIG_START( pangpang, tumbleb_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(pangpang)
+ MCFG_SCREEN_UPDATE_STATIC(pangpang)
MCFG_GFXDECODE(tumbleb)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tumblep.c b/src/mame/drivers/tumblep.c
index 2aec88bff6d..0dd0c79287a 100644
--- a/src/mame/drivers/tumblep.c
+++ b/src/mame/drivers/tumblep.c
@@ -321,10 +321,9 @@ static MACHINE_CONFIG_START( tumblep, tumblep_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(tumblep)
+ MCFG_SCREEN_UPDATE_STATIC(tumblep)
MCFG_GFXDECODE(tumblep)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/tunhunt.c b/src/mame/drivers/tunhunt.c
index 2990dda80b9..8da78e4373c 100644
--- a/src/mame/drivers/tunhunt.c
+++ b/src/mame/drivers/tunhunt.c
@@ -311,10 +311,9 @@ static MACHINE_CONFIG_START( tunhunt, tunhunt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256-16)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255-16)
- MCFG_SCREEN_UPDATE(tunhunt)
+ MCFG_SCREEN_UPDATE_STATIC(tunhunt)
MCFG_GFXDECODE(tunhunt)
MCFG_PALETTE_LENGTH(0x1a)
diff --git a/src/mame/drivers/turbo.c b/src/mame/drivers/turbo.c
index e8f96d03f0e..5b9da3c1895 100644
--- a/src/mame/drivers/turbo.c
+++ b/src/mame/drivers/turbo.c
@@ -1092,9 +1092,8 @@ static MACHINE_CONFIG_START( turbo, turbo_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(turbo)
+ MCFG_SCREEN_UPDATE_STATIC(turbo)
MCFG_PALETTE_INIT(turbo)
MCFG_VIDEO_START(turbo)
@@ -1120,9 +1119,8 @@ static MACHINE_CONFIG_START( subroc3d, turbo_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(subroc3d)
+ MCFG_SCREEN_UPDATE_STATIC(subroc3d)
MCFG_PALETTE_INIT(subroc3d)
MCFG_VIDEO_START(turbo)
@@ -1155,9 +1153,8 @@ static MACHINE_CONFIG_START( buckrog, turbo_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(buckrog)
+ MCFG_SCREEN_UPDATE_STATIC(buckrog)
MCFG_PALETTE_INIT(buckrog)
MCFG_VIDEO_START(buckrog)
diff --git a/src/mame/drivers/turrett.c b/src/mame/drivers/turrett.c
index 95219b4d335..1dbdd08a590 100644
--- a/src/mame/drivers/turrett.c
+++ b/src/mame/drivers/turrett.c
@@ -71,6 +71,8 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -78,7 +80,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -89,7 +90,7 @@ void turrett_state::video_start()
{
}
-bool turrett_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 turrett_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -133,7 +134,7 @@ static MACHINE_CONFIG_START( turrett, turrett_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(turrett_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0*8, 32*8-1)
diff --git a/src/mame/drivers/tutankhm.c b/src/mame/drivers/tutankhm.c
index 936b51dfc15..45fc6a4574c 100644
--- a/src/mame/drivers/tutankhm.c
+++ b/src/mame/drivers/tutankhm.c
@@ -233,10 +233,9 @@ static MACHINE_CONFIG_START( tutankhm, tutankhm_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
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(tutankhm)
+ MCFG_SCREEN_UPDATE_STATIC(tutankhm)
/* sound hardware */
MCFG_FRAGMENT_ADD(timeplt_sound)
diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c
index 1392c16b54b..f7db58355bb 100644
--- a/src/mame/drivers/twin16.c
+++ b/src/mame/drivers/twin16.c
@@ -751,10 +751,9 @@ static MACHINE_CONFIG_START( twin16, twin16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(((double)XTAL_18_432MHz / 2) / (576 * 264))
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2062)) // 32 lines
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(twin16)
+ MCFG_SCREEN_UPDATE_STATIC(twin16)
MCFG_SCREEN_EOF(twin16)
MCFG_GFXDECODE(twin16)
@@ -805,10 +804,9 @@ static MACHINE_CONFIG_START( fround, twin16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(twin16)
+ MCFG_SCREEN_UPDATE_STATIC(twin16)
MCFG_SCREEN_EOF(twin16)
MCFG_GFXDECODE(twin16)
diff --git a/src/mame/drivers/twincobr.c b/src/mame/drivers/twincobr.c
index 2c4e642870b..881c34ebbb1 100644
--- a/src/mame/drivers/twincobr.c
+++ b/src/mame/drivers/twincobr.c
@@ -583,8 +583,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(toaplan0)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan0)
MCFG_SCREEN_EOF(toaplan0)
MCFG_GFXDECODE(twincobr)
diff --git a/src/mame/drivers/twins.c b/src/mame/drivers/twins.c
index 8de6aa16ca4..08629631c88 100644
--- a/src/mame/drivers/twins.c
+++ b/src/mame/drivers/twins.c
@@ -110,7 +110,7 @@ static VIDEO_START(twins)
state->m_pal = auto_alloc_array(machine, UINT16, 0x100);
}
-static SCREEN_UPDATE(twins)
+static SCREEN_UPDATE_IND16(twins)
{
twins_state *state = screen.machine().driver_data<twins_state>();
int y,x,count;
@@ -191,10 +191,9 @@ static MACHINE_CONFIG_START( twins, twins_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320,256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(twins)
+ MCFG_SCREEN_UPDATE_STATIC(twins)
MCFG_PALETTE_LENGTH(0x100)
@@ -217,7 +216,7 @@ static VIDEO_START(twinsa)
state->m_pal = auto_alloc_array(machine, UINT16, 0x1000);
}
-static SCREEN_UPDATE(twinsa)
+static SCREEN_UPDATE_IND16(twinsa)
{
twins_state *state = screen.machine().driver_data<twins_state>();
int y,x,count;
@@ -282,10 +281,9 @@ static MACHINE_CONFIG_START( twinsa, twins_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320,256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_SCREEN_UPDATE(twinsa)
+ MCFG_SCREEN_UPDATE_STATIC(twinsa)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index e200161f8a3..23680390aaa 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -718,19 +718,16 @@ static MACHINE_CONFIG_START( tx1, tx1_state )
MCFG_DEFAULT_LAYOUT(layout_triphsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE(tx1_left)
+ MCFG_SCREEN_UPDATE_STATIC(tx1_left)
MCFG_SCREEN_ADD("cscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE(tx1_middle)
+ MCFG_SCREEN_UPDATE_STATIC(tx1_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
- MCFG_SCREEN_UPDATE(tx1_right)
+ MCFG_SCREEN_UPDATE_STATIC(tx1_right)
MCFG_SCREEN_EOF(tx1)
MCFG_VIDEO_START(tx1)
@@ -770,19 +767,16 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state )
MCFG_DEFAULT_LAYOUT(layout_triphsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE(buggyboy_left)
+ MCFG_SCREEN_UPDATE_STATIC(buggyboy_left)
MCFG_SCREEN_ADD("cscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE(buggyboy_middle)
+ MCFG_SCREEN_UPDATE_STATIC(buggyboy_middle)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE(buggyboy_right)
+ MCFG_SCREEN_UPDATE_STATIC(buggyboy_right)
MCFG_SCREEN_EOF(buggyboy)
MCFG_PALETTE_LENGTH(256)
@@ -823,9 +817,8 @@ static MACHINE_CONFIG_START( buggybjr, tx1_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
- MCFG_SCREEN_UPDATE(buggybjr)
+ MCFG_SCREEN_UPDATE_STATIC(buggybjr)
MCFG_SCREEN_EOF(buggyboy)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/uapce.c b/src/mame/drivers/uapce.c
index affb788ce73..856fa4f42f2 100644
--- a/src/mame/drivers/uapce.c
+++ b/src/mame/drivers/uapce.c
@@ -318,9 +318,8 @@ static MACHINE_CONFIG_START( uapce, uapce_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
- MCFG_SCREEN_UPDATE( pce )
+ MCFG_SCREEN_UPDATE_STATIC( pce )
/* MCFG_GFXDECODE( pce_gfxdecodeinfo ) */
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/ultraman.c b/src/mame/drivers/ultraman.c
index 7ce7599c724..6c6e68cdf46 100644
--- a/src/mame/drivers/ultraman.c
+++ b/src/mame/drivers/ultraman.c
@@ -238,10 +238,9 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(ultraman)
+ MCFG_SCREEN_UPDATE_STATIC(ultraman)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c
index 0cd7935c0e8..5ae6158ec04 100644
--- a/src/mame/drivers/ultratnk.c
+++ b/src/mame/drivers/ultratnk.c
@@ -303,9 +303,8 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE(ultratnk)
+ MCFG_SCREEN_UPDATE_STATIC(ultratnk)
MCFG_SCREEN_EOF(ultratnk)
MCFG_GFXDECODE(ultratnk)
diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c
index 8cb86c5efdc..259b25fda99 100644
--- a/src/mame/drivers/ultrsprt.c
+++ b/src/mame/drivers/ultrsprt.c
@@ -30,7 +30,7 @@ public:
-static SCREEN_UPDATE( ultrsprt )
+static SCREEN_UPDATE_IND16( ultrsprt )
{
ultrsprt_state *state = screen.machine().driver_data<ultrsprt_state>();
int i, j;
@@ -232,10 +232,9 @@ static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_SCREEN_UPDATE(ultrsprt)
+ MCFG_SCREEN_UPDATE_STATIC(ultrsprt)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/umipoker.c b/src/mame/drivers/umipoker.c
index aaeb4d23339..fd6d9d2e38f 100644
--- a/src/mame/drivers/umipoker.c
+++ b/src/mame/drivers/umipoker.c
@@ -108,7 +108,7 @@ static VIDEO_START( umipoker )
}
-static SCREEN_UPDATE( umipoker )
+static SCREEN_UPDATE_IND16( umipoker )
{
umipoker_state *state = screen.machine().driver_data<umipoker_state>();
@@ -662,10 +662,9 @@ static MACHINE_CONFIG_START( umipoker, umipoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(umipoker)
+ MCFG_SCREEN_UPDATE_STATIC(umipoker)
MCFG_GFXDECODE(umipoker)
diff --git a/src/mame/drivers/undrfire.c b/src/mame/drivers/undrfire.c
index ce6ebcb0e59..29b6ef07ecc 100644
--- a/src/mame/drivers/undrfire.c
+++ b/src/mame/drivers/undrfire.c
@@ -728,10 +728,9 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE(undrfire)
+ MCFG_SCREEN_UPDATE_STATIC(undrfire)
MCFG_GFXDECODE(undrfire)
MCFG_PALETTE_LENGTH(16384)
@@ -765,10 +764,9 @@ static MACHINE_CONFIG_START( cbombers, undrfire_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1)
- MCFG_SCREEN_UPDATE(cbombers)
+ MCFG_SCREEN_UPDATE_STATIC(cbombers)
MCFG_GFXDECODE(cbombers)
MCFG_PALETTE_LENGTH(16384)
diff --git a/src/mame/drivers/unico.c b/src/mame/drivers/unico.c
index b102233a0c2..d37f347758b 100644
--- a/src/mame/drivers/unico.c
+++ b/src/mame/drivers/unico.c
@@ -599,10 +599,9 @@ static MACHINE_CONFIG_START( burglarx, unico_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(unico)
+ MCFG_SCREEN_UPDATE_STATIC(unico)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
@@ -645,10 +644,9 @@ static MACHINE_CONFIG_START( zeropnt, unico_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(unico)
+ MCFG_SCREEN_UPDATE_STATIC(unico)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
@@ -688,10 +686,9 @@ static MACHINE_CONFIG_START( zeropnt2, unico_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(zeropnt2)
+ MCFG_SCREEN_UPDATE_STATIC(zeropnt2)
MCFG_GFXDECODE(unico)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/upscope.c b/src/mame/drivers/upscope.c
index bbb345a1ecb..299f128fa79 100644
--- a/src/mame/drivers/upscope.c
+++ b/src/mame/drivers/upscope.c
@@ -322,10 +322,9 @@ static MACHINE_CONFIG_START( upscope, upscope_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(amiga)
+ MCFG_SCREEN_UPDATE_STATIC(amiga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT(amiga)
diff --git a/src/mame/drivers/usgames.c b/src/mame/drivers/usgames.c
index 76409e5e883..84d7f3cc9f4 100644
--- a/src/mame/drivers/usgames.c
+++ b/src/mame/drivers/usgames.c
@@ -242,10 +242,9 @@ static MACHINE_CONFIG_START( usg32, usgames_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(7*8, 57*8-1, 0*8, 31*8-1)
- MCFG_SCREEN_UPDATE(usgames)
+ MCFG_SCREEN_UPDATE_STATIC(usgames)
MCFG_GFXDECODE(usgames)
MCFG_PALETTE_LENGTH(2*256)
diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c
index e1a3083e6e5..c21e184bcfc 100644
--- a/src/mame/drivers/vamphalf.c
+++ b/src/mame/drivers/vamphalf.c
@@ -401,7 +401,7 @@ or
Offset+3
-------x xxxxxxxx X offs
*/
-static void draw_sprites(screen_device &screen, bitmap_t &bitmap)
+static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap)
{
vamphalf_state *state = screen.machine().driver_data<vamphalf_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -475,7 +475,7 @@ static void draw_sprites(screen_device &screen, bitmap_t &bitmap)
}
}
-static void draw_sprites_aoh(screen_device &screen, bitmap_t &bitmap)
+static void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap)
{
vamphalf_state *state = screen.machine().driver_data<vamphalf_state>();
const gfx_element *gfx = screen.machine().gfx[0];
@@ -530,14 +530,14 @@ static void draw_sprites_aoh(screen_device &screen, bitmap_t &bitmap)
}
-static SCREEN_UPDATE( common )
+static SCREEN_UPDATE_IND16( common )
{
bitmap.fill(0, cliprect);
draw_sprites(screen, bitmap);
return 0;
}
-static SCREEN_UPDATE( aoh )
+static SCREEN_UPDATE_IND16( aoh )
{
bitmap.fill(0, cliprect);
draw_sprites_aoh(screen, bitmap);
@@ -683,10 +683,9 @@ static MACHINE_CONFIG_START( common, vamphalf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(31, 350, 16, 255)
- MCFG_SCREEN_UPDATE(common)
+ MCFG_SCREEN_UPDATE_STATIC(common)
MCFG_PALETTE_LENGTH(0x8000)
MCFG_GFXDECODE(vamphalf)
@@ -813,10 +812,9 @@ static MACHINE_CONFIG_START( aoh, vamphalf_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.185)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(64, 511-64, 16, 255-16)
- MCFG_SCREEN_UPDATE(aoh)
+ MCFG_SCREEN_UPDATE_STATIC(aoh)
MCFG_PALETTE_LENGTH(0x8000)
MCFG_GFXDECODE(vamphalf)
diff --git a/src/mame/drivers/vaportra.c b/src/mame/drivers/vaportra.c
index ef5b197f29f..09686132534 100644
--- a/src/mame/drivers/vaportra.c
+++ b/src/mame/drivers/vaportra.c
@@ -282,10 +282,9 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(58)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(vaportra)
+ MCFG_SCREEN_UPDATE_STATIC(vaportra)
MCFG_GFXDECODE(vaportra)
MCFG_PALETTE_LENGTH(1280)
diff --git a/src/mame/drivers/vastar.c b/src/mame/drivers/vastar.c
index 8ed50a62e7b..00d1474fd79 100644
--- a/src/mame/drivers/vastar.c
+++ b/src/mame/drivers/vastar.c
@@ -321,10 +321,9 @@ static MACHINE_CONFIG_START( vastar, vastar_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(vastar)
+ MCFG_SCREEN_UPDATE_STATIC(vastar)
MCFG_GFXDECODE(vastar)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vball.c b/src/mame/drivers/vball.c
index 4dbdef7c699..73789fe4e63 100644
--- a/src/mame/drivers/vball.c
+++ b/src/mame/drivers/vball.c
@@ -420,10 +420,9 @@ static MACHINE_CONFIG_START( vball, vball_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vb)
+ MCFG_SCREEN_UPDATE_STATIC(vb)
MCFG_GFXDECODE(vb)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vcombat.c b/src/mame/drivers/vcombat.c
index 1299844f66e..1c94ee2a208 100644
--- a/src/mame/drivers/vcombat.c
+++ b/src/mame/drivers/vcombat.c
@@ -104,7 +104,7 @@ public:
int m_crtc_select;
};
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int index)
+static UINT32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index)
{
vcombat_state *state = screen.machine().driver_data<vcombat_state>();
int y;
@@ -153,8 +153,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-static SCREEN_UPDATE( vcombat_main ) { return update_screen(screen, bitmap, cliprect, 0); }
-static SCREEN_UPDATE( vcombat_aux ) { return update_screen(screen, bitmap, cliprect, 1); }
+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); }
static WRITE16_HANDLER( main_video_write )
@@ -598,14 +598,12 @@ static MACHINE_CONFIG_START( vcombat, vcombat_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz / 2, 400, 0, 256, 291, 0, 208)
- MCFG_SCREEN_UPDATE(vcombat_main)
+ MCFG_SCREEN_UPDATE_STATIC(vcombat_main)
MCFG_SCREEN_ADD("aux", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz / 2, 400, 0, 256, 291, 0, 208)
- MCFG_SCREEN_UPDATE(vcombat_aux)
+ MCFG_SCREEN_UPDATE_STATIC(vcombat_aux)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -635,9 +633,8 @@ static MACHINE_CONFIG_START( shadfgtr, vcombat_state )
MCFG_MC6845_ADD("crtc", MC6845, XTAL_20MHz / 4 / 16, mc6845_intf)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(XTAL_20MHz / 4, 320, 0, 256, 277, 0, 224)
- MCFG_SCREEN_UPDATE(vcombat_main)
+ MCFG_SCREEN_UPDATE_STATIC(vcombat_main)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/vectrex.c b/src/mame/drivers/vectrex.c
index a94154a2655..7894d90ed9b 100644
--- a/src/mame/drivers/vectrex.c
+++ b/src/mame/drivers/vectrex.c
@@ -104,10 +104,9 @@ static MACHINE_CONFIG_START( vectrex, vectrex_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", VECTOR)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 299)
- MCFG_SCREEN_UPDATE(vectrex)
+ MCFG_SCREEN_UPDATE_STATIC(vectrex)
MCFG_VIDEO_START(vectrex)
diff --git a/src/mame/drivers/vega.c b/src/mame/drivers/vega.c
index 7f7416f5461..a1d0d856168 100644
--- a/src/mame/drivers/vega.c
+++ b/src/mame/drivers/vega.c
@@ -40,7 +40,7 @@ static PALETTE_INIT(vega)
}
-static SCREEN_UPDATE(vega)
+static SCREEN_UPDATE_IND16(vega)
{
return 0;
}
@@ -53,10 +53,9 @@ static MACHINE_CONFIG_START( vega, vega_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(vega)
+ MCFG_SCREEN_UPDATE_STATIC(vega)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/vegaeo.c b/src/mame/drivers/vegaeo.c
index fe7767ce750..d09fac3f03e 100644
--- a/src/mame/drivers/vegaeo.c
+++ b/src/mame/drivers/vegaeo.c
@@ -146,7 +146,7 @@ static VIDEO_START( vega )
state->m_vega_vram = auto_alloc_array(machine, UINT32, 0x14000*2/4);
}
-static SCREEN_UPDATE( vega )
+static SCREEN_UPDATE_IND16( vega )
{
vegaeo_state *state = screen.machine().driver_data<vegaeo_state>();
int x,y,count;
@@ -187,10 +187,9 @@ static MACHINE_CONFIG_START( vega, vegaeo_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_SCREEN_UPDATE(vega)
+ MCFG_SCREEN_UPDATE_STATIC(vega)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vegas.c b/src/mame/drivers/vegas.c
index 4b37d977dc1..aae3265a32c 100644
--- a/src/mame/drivers/vegas.c
+++ b/src/mame/drivers/vegas.c
@@ -508,7 +508,7 @@ static void remap_dynamic_addresses(running_machine &machine);
*
*************************************/
-static SCREEN_UPDATE( vegas )
+static SCREEN_UPDATE_RGB32( vegas )
{
vegas_state *state = screen.machine().driver_data<vegas_state>();
return voodoo_update(state->m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
@@ -2234,10 +2234,9 @@ static MACHINE_CONFIG_START( vegascore, vegas_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(57)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE(vegas)
+ MCFG_SCREEN_UPDATE_STATIC(vegas)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vendetta.c b/src/mame/drivers/vendetta.c
index 00ab6e9abe9..36c241dcaaf 100644
--- a/src/mame/drivers/vendetta.c
+++ b/src/mame/drivers/vendetta.c
@@ -531,10 +531,9 @@ static MACHINE_CONFIG_START( vendetta, vendetta_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vendetta)
+ MCFG_SCREEN_UPDATE_STATIC(vendetta)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/vertigo.c b/src/mame/drivers/vertigo.c
index 53444d9f447..fe6c26105e5 100644
--- a/src/mame/drivers/vertigo.c
+++ b/src/mame/drivers/vertigo.c
@@ -132,7 +132,7 @@ static MACHINE_CONFIG_START( vertigo, vertigo_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 510, 0, 400)
- MCFG_SCREEN_UPDATE(vector)
+ MCFG_SCREEN_UPDATE_STATIC(vector)
MCFG_VIDEO_START(vector)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vicdual.c b/src/mame/drivers/vicdual.c
index d5e4c9827f1..fef8affd480 100644
--- a/src/mame/drivers/vicdual.c
+++ b/src/mame/drivers/vicdual.c
@@ -220,7 +220,6 @@ static MACHINE_CONFIG_START( vicdual_root, vicdual_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART)
MACHINE_CONFIG_END
@@ -299,7 +298,7 @@ static MACHINE_CONFIG_DERIVED( depthch, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -387,7 +386,7 @@ static MACHINE_CONFIG_DERIVED( safari, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
MACHINE_CONFIG_END
@@ -490,7 +489,7 @@ static MACHINE_CONFIG_DERIVED( frogs, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -678,7 +677,7 @@ static MACHINE_CONFIG_DERIVED( headon, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw_or_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw_or_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -690,7 +689,7 @@ static MACHINE_CONFIG_DERIVED( headons, headon )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw) // no colour prom on PCB, must be bw?
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw) // no colour prom on PCB, must be bw?
MACHINE_CONFIG_END
@@ -704,7 +703,7 @@ static MACHINE_CONFIG_DERIVED( sspaceat, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw_or_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw_or_color)
MACHINE_CONFIG_END
@@ -898,7 +897,7 @@ static MACHINE_CONFIG_DERIVED( headon2, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -911,7 +910,7 @@ static MACHINE_CONFIG_DERIVED( headon2bw, headon2 )
/* basic machine hardware */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_bw)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_bw)
MACHINE_CONFIG_END
@@ -924,7 +923,7 @@ static MACHINE_CONFIG_DERIVED( digger, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
MACHINE_CONFIG_END
@@ -1908,7 +1907,7 @@ static MACHINE_CONFIG_DERIVED( vicdual_dualgame_root, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
MACHINE_CONFIG_END
@@ -2157,7 +2156,7 @@ static MACHINE_CONFIG_DERIVED( samurai, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
MACHINE_CONFIG_END
@@ -2252,7 +2251,7 @@ static MACHINE_CONFIG_DERIVED( nsub, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
MACHINE_CONFIG_END
@@ -2351,7 +2350,7 @@ static MACHINE_CONFIG_DERIVED( invinco, vicdual_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(vicdual_color)
+ MCFG_SCREEN_UPDATE_STATIC(vicdual_color)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/victory.c b/src/mame/drivers/victory.c
index 0d4123737b2..090c20799d1 100644
--- a/src/mame/drivers/victory.c
+++ b/src/mame/drivers/victory.c
@@ -222,10 +222,9 @@ static MACHINE_CONFIG_START( victory, victory_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(victory)
+ MCFG_SCREEN_UPDATE_STATIC(victory)
MCFG_PALETTE_LENGTH(64)
diff --git a/src/mame/drivers/videopin.c b/src/mame/drivers/videopin.c
index e6755a7b6c5..fca8dce7e2f 100644
--- a/src/mame/drivers/videopin.c
+++ b/src/mame/drivers/videopin.c
@@ -331,10 +331,9 @@ static MACHINE_CONFIG_START( videopin, videopin_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(304, 263)
MCFG_SCREEN_VISIBLE_AREA(0, 303, 0, 255)
- MCFG_SCREEN_UPDATE(videopin)
+ MCFG_SCREEN_UPDATE_STATIC(videopin)
MCFG_GFXDECODE(videopin)
MCFG_PALETTE_LENGTH(2)
diff --git a/src/mame/drivers/videopkr.c b/src/mame/drivers/videopkr.c
index 0522152f760..c54b266761e 100644
--- a/src/mame/drivers/videopkr.c
+++ b/src/mame/drivers/videopkr.c
@@ -493,7 +493,7 @@ static VIDEO_START( vidadcba )
}
-static SCREEN_UPDATE( videopkr )
+static SCREEN_UPDATE_IND16( videopkr )
{
videopkr_state *state = screen.machine().driver_data<videopkr_state>();
tilemap_mark_all_tiles_dirty(state->m_bg_tilemap);
@@ -1240,14 +1240,13 @@ static MACHINE_CONFIG_START( videopkr, videopkr_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(5*8, 31*8-1, 3*8, 29*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(2080)
- MCFG_SCREEN_UPDATE(videopkr)
+ MCFG_SCREEN_UPDATE_STATIC(videopkr)
MCFG_GFXDECODE(videopkr)
MCFG_PALETTE_INIT(videopkr)
diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c
index f7703cff7d2..7e185b6feb0 100644
--- a/src/mame/drivers/vigilant.c
+++ b/src/mame/drivers/vigilant.c
@@ -494,10 +494,9 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vigilant)
+ MCFG_SCREEN_UPDATE_STATIC(vigilant)
MCFG_GFXDECODE(vigilant)
MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
@@ -537,10 +536,9 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vigilant)
+ MCFG_SCREEN_UPDATE_STATIC(vigilant)
MCFG_GFXDECODE(buccanrs)
MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
@@ -596,10 +594,9 @@ static MACHINE_CONFIG_START( kikcubic, vigilant_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(kikcubic)
+ MCFG_SCREEN_UPDATE_STATIC(kikcubic)
MCFG_GFXDECODE(kikcubic)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/vindictr.c b/src/mame/drivers/vindictr.c
index a10fbc8508f..bb6a0be988e 100644
--- a/src/mame/drivers/vindictr.c
+++ b/src/mame/drivers/vindictr.c
@@ -210,11 +210,10 @@ static MACHINE_CONFIG_START( vindictr, vindictr_state )
MCFG_PALETTE_LENGTH(2048*8)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(vindictr)
+ MCFG_SCREEN_UPDATE_STATIC(vindictr)
MCFG_VIDEO_START(vindictr)
diff --git a/src/mame/drivers/viper.c b/src/mame/drivers/viper.c
index db378712173..2fc02f98a86 100644
--- a/src/mame/drivers/viper.c
+++ b/src/mame/drivers/viper.c
@@ -371,7 +371,7 @@ static emu_timer *ds2430_timer;
static timer_device *ds2430_bit_timer;
-static SCREEN_UPDATE(viper)
+static SCREEN_UPDATE_RGB32(viper)
{
device_t *device = screen.machine().device("voodoo");
return voodoo_update(device, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
@@ -2012,13 +2012,12 @@ static MACHINE_CONFIG_START( viper, viper_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(1024, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 1023, 0, 383)
MCFG_PALETTE_LENGTH(65536)
- MCFG_SCREEN_UPDATE(viper)
+ MCFG_SCREEN_UPDATE_STATIC(viper)
MCFG_TIMER_ADD("ds2430_timer2", NULL)
diff --git a/src/mame/drivers/vmetal.c b/src/mame/drivers/vmetal.c
index e28abf4d011..b002cb7d3b7 100644
--- a/src/mame/drivers/vmetal.c
+++ b/src/mame/drivers/vmetal.c
@@ -416,7 +416,7 @@ static VIDEO_START(varia)
tilemap_set_transparent_pen(state->m_mid2tilemap, 15);
}
-static SCREEN_UPDATE(varia)
+static SCREEN_UPDATE_IND16(varia)
{
vmetal_state *state = screen.machine().driver_data<vmetal_state>();
@@ -450,10 +450,9 @@ static MACHINE_CONFIG_START( varia, vmetal_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(2048, 2048)
MCFG_SCREEN_VISIBLE_AREA(0+64, 319+64, 0+64, 223+64)
- MCFG_SCREEN_UPDATE(varia)
+ MCFG_SCREEN_UPDATE_STATIC(varia)
MCFG_GFXDECODE(vmetal)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/volfied.c b/src/mame/drivers/volfied.c
index f8ae742ebf2..458a291705d 100644
--- a/src/mame/drivers/volfied.c
+++ b/src/mame/drivers/volfied.c
@@ -276,10 +276,9 @@ static MACHINE_CONFIG_START( volfied, volfied_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
- MCFG_SCREEN_UPDATE(volfied)
+ MCFG_SCREEN_UPDATE_STATIC(volfied)
MCFG_GFXDECODE(volfied)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/vp101.c b/src/mame/drivers/vp101.c
index 258f016f540..f879c386a83 100644
--- a/src/mame/drivers/vp101.c
+++ b/src/mame/drivers/vp101.c
@@ -30,6 +30,8 @@ public:
DECLARE_READ32_MEMBER(tty_ready_r);
DECLARE_WRITE32_MEMBER(tty_w);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// devices
@@ -37,7 +39,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
@@ -45,7 +46,7 @@ void vp10x_state::video_start()
{
}
-bool vp10x_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 vp10x_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
@@ -89,7 +90,7 @@ static MACHINE_CONFIG_START( vp101, vp10x_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_PALETTE_LENGTH(32768)
diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c
index c56434f8db8..97b4c646ada 100644
--- a/src/mame/drivers/vpoker.c
+++ b/src/mame/drivers/vpoker.c
@@ -129,7 +129,7 @@ static VIDEO_START( vpoker )
state->m_videoram = auto_alloc_array(machine, UINT8, 0x200);
}
-static SCREEN_UPDATE( vpoker )
+static SCREEN_UPDATE_IND16( vpoker )
{
vpoker_state *state = screen.machine().driver_data<vpoker_state>();
UINT8 *videoram = state->m_videoram;
@@ -659,11 +659,10 @@ static MACHINE_CONFIG_START( vpoker, vpoker_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vpoker)
+ MCFG_SCREEN_UPDATE_STATIC(vpoker)
MCFG_GFXDECODE(vpoker)
MCFG_PALETTE_LENGTH(8)
diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c
index baf962a0a27..f0b8439c1dd 100644
--- a/src/mame/drivers/vroulet.c
+++ b/src/mame/drivers/vroulet.c
@@ -108,7 +108,7 @@ static VIDEO_START(vroulet)
8, 8, 32, 32);
}
-static SCREEN_UPDATE(vroulet)
+static SCREEN_UPDATE_IND16(vroulet)
{
vroulet_state *state = screen.machine().driver_data<vroulet_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -292,10 +292,9 @@ static MACHINE_CONFIG_START( vroulet, vroulet_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(vroulet)
+ MCFG_SCREEN_UPDATE_STATIC(vroulet)
MCFG_GFXDECODE(vroulet)
MCFG_PALETTE_LENGTH(128*4)
diff --git a/src/mame/drivers/vsnes.c b/src/mame/drivers/vsnes.c
index 1082415ebae..99351e63e1e 100644
--- a/src/mame/drivers/vsnes.c
+++ b/src/mame/drivers/vsnes.c
@@ -1652,10 +1652,9 @@ static MACHINE_CONFIG_START( vsnes, vsnes_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(vsnes)
+ MCFG_SCREEN_UPDATE_STATIC(vsnes)
MCFG_PALETTE_LENGTH(8*4*16)
@@ -1716,18 +1715,16 @@ static MACHINE_CONFIG_START( vsdual, vsnes_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("top", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vsnes)
+ MCFG_SCREEN_UPDATE_STATIC(vsnes)
MCFG_SCREEN_ADD("bottom", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(vsnes_bottom)
+ MCFG_SCREEN_UPDATE_STATIC(vsnes_bottom)
MCFG_PALETTE_INIT(vsdual)
MCFG_VIDEO_START(vsdual)
diff --git a/src/mame/drivers/vulgus.c b/src/mame/drivers/vulgus.c
index 918de4d7e09..05c7728fb0d 100644
--- a/src/mame/drivers/vulgus.c
+++ b/src/mame/drivers/vulgus.c
@@ -221,10 +221,9 @@ static MACHINE_CONFIG_START( vulgus, vulgus_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(vulgus)
+ MCFG_SCREEN_UPDATE_STATIC(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 f557c332299..52d98da8e18 100644
--- a/src/mame/drivers/wallc.c
+++ b/src/mame/drivers/wallc.c
@@ -147,7 +147,7 @@ static VIDEO_START( wallc )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols_flip_y, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( wallc )
+static SCREEN_UPDATE_IND16( wallc )
{
wallc_state *state = screen.machine().driver_data<wallc_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -302,10 +302,9 @@ static MACHINE_CONFIG_START( wallc, wallc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(wallc)
+ MCFG_SCREEN_UPDATE_STATIC(wallc)
MCFG_GFXDECODE(wallc)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/wardner.c b/src/mame/drivers/wardner.c
index 7c184239acd..7dce3dda273 100644
--- a/src/mame/drivers/wardner.c
+++ b/src/mame/drivers/wardner.c
@@ -431,8 +431,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_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(toaplan0)
+ MCFG_SCREEN_UPDATE_STATIC(toaplan0)
MCFG_SCREEN_EOF(toaplan0)
MCFG_GFXDECODE(wardner)
diff --git a/src/mame/drivers/warpsped.c b/src/mame/drivers/warpsped.c
index 44f902b448e..03e573e6769 100644
--- a/src/mame/drivers/warpsped.c
+++ b/src/mame/drivers/warpsped.c
@@ -140,7 +140,7 @@ static VIDEO_START( warpspeed )
tilemap_mark_all_tiles_dirty(state->m_starfield_tilemap);
}
-static void draw_circle_line(bitmap_t &bitmap, int x, int y, int l, int color)
+static void draw_circle_line(bitmap_ind16 &bitmap, int x, int y, int l, int color)
{
if (y >= 0 && y <= bitmap.height() - 1)
{
@@ -159,7 +159,7 @@ static void draw_circle_line(bitmap_t &bitmap, int x, int y, int l, int color)
}
}
-static void warpspeed_draw_circle(bitmap_t &bitmap, INT16 cx, INT16 cy, UINT16 radius, UINT8 color )
+static void warpspeed_draw_circle(bitmap_ind16 &bitmap, INT16 cx, INT16 cy, UINT16 radius, UINT8 color )
{
/* Bresenham's circle algorithm */
@@ -184,7 +184,7 @@ static void warpspeed_draw_circle(bitmap_t &bitmap, INT16 cx, INT16 cy, UINT16 r
}
}
-static void warpspeed_draw_circles(bitmap_t &bitmap, warpspeed_state *state)
+static void warpspeed_draw_circles(bitmap_ind16 &bitmap, warpspeed_state *state)
{
for (int i = 0; i < 4; i++)
{
@@ -203,7 +203,7 @@ static void warpspeed_draw_circles(bitmap_t &bitmap, warpspeed_state *state)
}
}
-static SCREEN_UPDATE( warpspeed )
+static SCREEN_UPDATE_IND16( warpspeed )
{
warpspeed_state *state = screen.machine().driver_data<warpspeed_state>();
@@ -310,12 +310,11 @@ static MACHINE_CONFIG_START( warpspeed, warpspeed_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(4*8, 32*8-1, 8*8, 32*8-1)
MCFG_VIDEO_START(warpspeed)
- MCFG_SCREEN_UPDATE(warpspeed)
+ MCFG_SCREEN_UPDATE_STATIC(warpspeed)
MCFG_GFXDECODE(warpspeed)
MCFG_PALETTE_LENGTH(2+8)
diff --git a/src/mame/drivers/warpwarp.c b/src/mame/drivers/warpwarp.c
index 82704620417..1d03f88806f 100644
--- a/src/mame/drivers/warpwarp.c
+++ b/src/mame/drivers/warpwarp.c
@@ -742,9 +742,8 @@ static MACHINE_CONFIG_START( geebee, warpwarp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
- MCFG_SCREEN_UPDATE(geebee)
+ MCFG_SCREEN_UPDATE_STATIC(geebee)
MCFG_GFXDECODE(1k)
MCFG_PALETTE_LENGTH(4*2)
@@ -778,9 +777,8 @@ static MACHINE_CONFIG_START( bombbee, warpwarp_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 272, 264, 0, 224)
- MCFG_SCREEN_UPDATE(geebee)
+ MCFG_SCREEN_UPDATE_STATIC(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 5cffd661490..642e630963d 100644
--- a/src/mame/drivers/warriorb.c
+++ b/src/mame/drivers/warriorb.c
@@ -599,20 +599,18 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(warriorb_left)
+ MCFG_SCREEN_UPDATE_STATIC(warriorb_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(warriorb_right)
+ MCFG_SCREEN_UPDATE_STATIC(warriorb_right)
MCFG_VIDEO_START(warriorb)
@@ -667,20 +665,18 @@ static MACHINE_CONFIG_START( warriorb, warriorb_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(warriorb_left)
+ MCFG_SCREEN_UPDATE_STATIC(warriorb_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(warriorb_right)
+ MCFG_SCREEN_UPDATE_STATIC(warriorb_right)
MCFG_VIDEO_START(warriorb)
diff --git a/src/mame/drivers/wc90.c b/src/mame/drivers/wc90.c
index ec9275d17bc..9133bb889b3 100644
--- a/src/mame/drivers/wc90.c
+++ b/src/mame/drivers/wc90.c
@@ -325,10 +325,9 @@ static MACHINE_CONFIG_START( wc90, wc90_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(wc90)
+ MCFG_SCREEN_UPDATE_STATIC(wc90)
MCFG_GFXDECODE(wc90)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/wc90b.c b/src/mame/drivers/wc90b.c
index ba5bcabafcb..e628312225b 100644
--- a/src/mame/drivers/wc90b.c
+++ b/src/mame/drivers/wc90b.c
@@ -379,10 +379,9 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(wc90b)
+ MCFG_SCREEN_UPDATE_STATIC(wc90b)
MCFG_GFXDECODE(wc90b)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/wecleman.c b/src/mame/drivers/wecleman.c
index 853c33d5ca0..63b50787b42 100644
--- a/src/mame/drivers/wecleman.c
+++ b/src/mame/drivers/wecleman.c
@@ -1055,10 +1055,9 @@ static MACHINE_CONFIG_START( wecleman, wecleman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(320 +16, 256)
MCFG_SCREEN_VISIBLE_AREA(0 +8, 320-1 +8, 0 +8, 224-1 +8)
- MCFG_SCREEN_UPDATE(wecleman)
+ MCFG_SCREEN_UPDATE_STATIC(wecleman)
MCFG_GFXDECODE(wecleman)
@@ -1140,10 +1139,9 @@ static MACHINE_CONFIG_START( hotchase, wecleman_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320 +16, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE(hotchase)
+ MCFG_SCREEN_UPDATE_STATIC(hotchase)
MCFG_GFXDECODE(hotchase)
MCFG_PALETTE_LENGTH(2048*2)
diff --git a/src/mame/drivers/welltris.c b/src/mame/drivers/welltris.c
index 6d5f3413e0a..ebbfc1c3c94 100644
--- a/src/mame/drivers/welltris.c
+++ b/src/mame/drivers/welltris.c
@@ -720,10 +720,9 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(15, 367-1, 8, 248-1)
- MCFG_SCREEN_UPDATE(welltris)
+ MCFG_SCREEN_UPDATE_STATIC(welltris)
MCFG_GFXDECODE(welltris)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/wgp.c b/src/mame/drivers/wgp.c
index 82f641ccaa6..f3808561d6f 100644
--- a/src/mame/drivers/wgp.c
+++ b/src/mame/drivers/wgp.c
@@ -1023,10 +1023,9 @@ static MACHINE_CONFIG_START( wgp, wgp_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE(wgp)
+ MCFG_SCREEN_UPDATE_STATIC(wgp)
MCFG_GFXDECODE(wgp)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c
index 97a7f5e47de..4e21c3eda3f 100644
--- a/src/mame/drivers/wheelfir.c
+++ b/src/mame/drivers/wheelfir.c
@@ -257,7 +257,7 @@ public:
INT16 m_scanline_cnt;
- bitmap_t *m_tmp_bitmap[2];
+ bitmap_ind16 *m_tmp_bitmap[2];
INT32 get_scale(INT32 index)
{
@@ -560,11 +560,11 @@ static WRITE16_HANDLER(wheelfir_blit_w)
static VIDEO_START(wheelfir)
{
wheelfir_state *state = machine.driver_data<wheelfir_state>();
- state->m_tmp_bitmap[0] = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
- state->m_tmp_bitmap[1] = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
+ state->m_tmp_bitmap[0] = auto_bitmap_ind16_alloc(machine, 512, 512);
+ state->m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine, 512, 512);
}
-static SCREEN_UPDATE(wheelfir)
+static SCREEN_UPDATE_IND16(wheelfir)
{
wheelfir_state *state = screen.machine().driver_data<wheelfir_state>();
@@ -818,10 +818,9 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, NUM_SCANLINES+NUM_VBLANK_LINES)
MCFG_SCREEN_VISIBLE_AREA(0,335, 0, NUM_SCANLINES-1)
- MCFG_SCREEN_UPDATE(wheelfir)
+ MCFG_SCREEN_UPDATE_STATIC(wheelfir)
MCFG_SCREEN_EOF(wheelfir)
MCFG_PALETTE_LENGTH(NUM_COLORS)
diff --git a/src/mame/drivers/whitestar.c b/src/mame/drivers/whitestar.c
index 775b7617fa2..afbd4783966 100644
--- a/src/mame/drivers/whitestar.c
+++ b/src/mame/drivers/whitestar.c
@@ -46,8 +46,6 @@ public:
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ8_MEMBER(dedicated_switch_r);
-
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
static INPUT_PORTS_START( whitestar )
@@ -192,13 +190,13 @@ static INTERRUPT_GEN( whitestar_firq_interrupt )
MCFG_SCREEN_TYPE(LCD) \
MCFG_SCREEN_REFRESH_RATE(60) \
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
+ MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update) \
MCFG_SCREEN_SIZE( _width * DMD_CHUNK_SIZE, _height *DMD_CHUNK_SIZE) \
MCFG_SCREEN_VISIBLE_AREA( 0, _width * DMD_CHUNK_SIZE-1, 0, _height*DMD_CHUNK_SIZE-1 ) \
MCFG_DEFAULT_LAYOUT( layout_lcd )
-void dmd_put_pixel(bitmap_t &bitmap, int x, int y, int color)
+void dmd_put_pixel(bitmap_rgb32 &bitmap, int x, int y, rgb_t color)
{
int midx = x * DMD_CHUNK_SIZE + DMD_CHUNK_SIZE/2;
int midy = y * DMD_CHUNK_SIZE + DMD_CHUNK_SIZE/2;
@@ -210,8 +208,8 @@ void dmd_put_pixel(bitmap_t &bitmap, int x, int y, int color)
// iterate over y
for (UINT32 y = 0; y <= width; y++)
{
- UINT16 *d0 = &bitmap.pix16(midy - y);
- UINT16 *d1 = &bitmap.pix16(midy + y);
+ UINT32 *d0 = &bitmap.pix32(midy - y);
+ UINT32 *d1 = &bitmap.pix32(midy + y);
float xval = width * sqrt(1.0f - (float)(y * y) * ooradius2);
INT32 left, right;
@@ -221,13 +219,14 @@ void dmd_put_pixel(bitmap_t &bitmap, int x, int y, int color)
// draw this scanline
for (UINT32 x = left; x < right; x++)
- d0[x] = d1[x] = color + 1;
+ d0[x] = d1[x] = color;
}
}
MC6845_UPDATE_ROW( whitestar_update_row )
{
whitestar_state *state = device->machine().driver_data<whitestar_state>();
+ const rgb_t *palette = palette_entry_list_raw(bitmap.palette());
UINT8 *vram = state->m_vram + ((ma & 0x100)<<2) + (ra << 4);
int xi;
@@ -237,7 +236,7 @@ MC6845_UPDATE_ROW( whitestar_update_row )
val = BITSWAP16(val,15,7,14,6,13,5,12,4,11,3,10,2,9,1,8,0);
for(xi=0;xi<8;xi++)
- dmd_put_pixel(bitmap, (x*8 + xi), ra, (val>>(14-xi*2)) & 0x03);
+ dmd_put_pixel(bitmap, (x*8 + xi), ra, palette[((val>>(14-xi*2)) & 0x03) + 1]);
}
}
@@ -265,12 +264,6 @@ static PALETTE_INIT( whitestar )
palette_set_color(machine, 4, MAKE_RGB(255, 224, 32));
}
-bool whitestar_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
-{
- m_mc6845->update(bitmap, cliprect);
- return 0;
-}
-
static MACHINE_CONFIG_START( whitestar, whitestar_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, 2000000)
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index e5a8944de1d..d2d9c3a6fa8 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -1450,9 +1450,8 @@ static MACHINE_CONFIG_START( defender, williams_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 10, 304, 260, 7, 245)
- MCFG_SCREEN_UPDATE(williams)
+ MCFG_SCREEN_UPDATE_STATIC(williams)
MCFG_VIDEO_START(williams)
@@ -1591,7 +1590,7 @@ static MACHINE_CONFIG_DERIVED( blastkit, williams )
/* video hardware */
MCFG_VIDEO_START(blaster)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(blaster)
+ MCFG_SCREEN_UPDATE_STATIC(blaster)
/* pia */
MCFG_PIA6821_MODIFY("pia_0", williams_49way_muxed_pia_0_intf)
@@ -1643,9 +1642,8 @@ static MACHINE_CONFIG_START( williams2, williams_state )
MCFG_GFXDECODE(williams2)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*2/3, 512, 8, 284, 260, 8, 248)
- MCFG_SCREEN_UPDATE(williams2)
+ MCFG_SCREEN_UPDATE_STATIC(williams2)
MCFG_VIDEO_START(williams2)
diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c
index e9cfabe32a4..a70d6e3aecb 100644
--- a/src/mame/drivers/wink.c
+++ b/src/mame/drivers/wink.c
@@ -52,7 +52,7 @@ static VIDEO_START( wink )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static SCREEN_UPDATE( wink )
+static SCREEN_UPDATE_IND16( wink )
{
wink_state *state = screen.machine().driver_data<wink_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -350,10 +350,9 @@ static MACHINE_CONFIG_START( wink, wink_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE(wink)
+ MCFG_SCREEN_UPDATE_STATIC(wink)
MCFG_GFXDECODE(wink)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/wiping.c b/src/mame/drivers/wiping.c
index b48982202b7..eefd72ad96f 100644
--- a/src/mame/drivers/wiping.c
+++ b/src/mame/drivers/wiping.c
@@ -297,10 +297,9 @@ static MACHINE_CONFIG_START( wiping, wiping_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_UPDATE(wiping)
+ MCFG_SCREEN_UPDATE_STATIC(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 27a8f8611c2..81993f344f6 100644
--- a/src/mame/drivers/witch.c
+++ b/src/mame/drivers/witch.c
@@ -708,7 +708,7 @@ static VIDEO_START(witch)
tilemap_set_palette_offset(state->m_gfx1_tilemap,0x200);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
witch_state *state = machine.driver_data<witch_state>();
int i,sx,sy,tileno,flags,color;
@@ -756,7 +756,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static SCREEN_UPDATE(witch)
+static SCREEN_UPDATE_IND16(witch)
{
witch_state *state = screen.machine().driver_data<witch_state>();
tilemap_set_scrollx( state->m_gfx1_tilemap, 0, state->m_scrollx-7 ); //offset to have it aligned with the sprites
@@ -798,10 +798,9 @@ static MACHINE_CONFIG_START( witch, witch_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(8, 256-1-8, 8*4, 256-8*4-1)
- MCFG_SCREEN_UPDATE(witch)
+ MCFG_SCREEN_UPDATE_STATIC(witch)
MCFG_GFXDECODE(witch)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/wiz.c b/src/mame/drivers/wiz.c
index 038d9a7b6c3..a260bcd68ec 100644
--- a/src/mame/drivers/wiz.c
+++ b/src/mame/drivers/wiz.c
@@ -739,10 +739,9 @@ static MACHINE_CONFIG_START( wiz, wiz_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(wiz)
+ MCFG_SCREEN_UPDATE_STATIC(wiz)
MCFG_GFXDECODE(wiz)
MCFG_PALETTE_LENGTH(256)
@@ -774,7 +773,7 @@ static MACHINE_CONFIG_DERIVED( stinger, wiz )
/* video hardware */
MCFG_GFXDECODE(stinger)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(stinger)
+ MCFG_SCREEN_UPDATE_STATIC(stinger)
/* sound hardware */
MCFG_SOUND_MODIFY("8910.1")
@@ -809,7 +808,7 @@ static MACHINE_CONFIG_DERIVED( kungfut, wiz )
/* video hardware */
MCFG_GFXDECODE(stinger)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(kungfut)
+ MCFG_SCREEN_UPDATE_STATIC(kungfut)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wldarrow.c b/src/mame/drivers/wldarrow.c
index e0652ea4134..3f07faee396 100644
--- a/src/mame/drivers/wldarrow.c
+++ b/src/mame/drivers/wldarrow.c
@@ -58,7 +58,7 @@ static void get_pens(pen_t *pens)
}
-static SCREEN_UPDATE( wldarrow )
+static SCREEN_UPDATE_RGB32( wldarrow )
{
wldarrow_state *state = screen.machine().driver_data<wldarrow_state>();
pen_t pens[NUM_PENS];
@@ -362,12 +362,11 @@ static MACHINE_CONFIG_START( wldarrow, wldarrow_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE(wldarrow)
+ MCFG_SCREEN_UPDATE_STATIC(wldarrow)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wolfpack.c b/src/mame/drivers/wolfpack.c
index 2aa1a8e76b5..860522df61c 100644
--- a/src/mame/drivers/wolfpack.c
+++ b/src/mame/drivers/wolfpack.c
@@ -299,10 +299,9 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 239)
- MCFG_SCREEN_UPDATE(wolfpack)
+ MCFG_SCREEN_UPDATE_STATIC(wolfpack)
MCFG_SCREEN_EOF(wolfpack)
MCFG_GFXDECODE(wolfpack)
diff --git a/src/mame/drivers/wrally.c b/src/mame/drivers/wrally.c
index 13e13efcb00..c71a5d9a212 100644
--- a/src/mame/drivers/wrally.c
+++ b/src/mame/drivers/wrally.c
@@ -263,10 +263,9 @@ static MACHINE_CONFIG_START( wrally, wrally_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1)
- MCFG_SCREEN_UPDATE(wrally)
+ MCFG_SCREEN_UPDATE_STATIC(wrally)
MCFG_GFXDECODE(wrally)
MCFG_PALETTE_LENGTH(1024*8)
diff --git a/src/mame/drivers/wwfsstar.c b/src/mame/drivers/wwfsstar.c
index 47d746383d6..5dcb7950da5 100644
--- a/src/mame/drivers/wwfsstar.c
+++ b/src/mame/drivers/wwfsstar.c
@@ -435,9 +435,8 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 320, 0, 256, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE(wwfsstar)
+ MCFG_SCREEN_UPDATE_STATIC(wwfsstar)
MCFG_GFXDECODE(wwfsstar)
MCFG_PALETTE_LENGTH(384)
diff --git a/src/mame/drivers/wwfwfest.c b/src/mame/drivers/wwfwfest.c
index 5341fd23118..79095cd9a65 100644
--- a/src/mame/drivers/wwfwfest.c
+++ b/src/mame/drivers/wwfwfest.c
@@ -406,9 +406,8 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
- MCFG_SCREEN_UPDATE(wwfwfest)
+ MCFG_SCREEN_UPDATE_STATIC(wwfwfest)
MCFG_SCREEN_EOF(wwfwfest)
MCFG_GFXDECODE(wwfwfest)
diff --git a/src/mame/drivers/xain.c b/src/mame/drivers/xain.c
index 31c57b9f9dc..41c6ebdc3cc 100644
--- a/src/mame/drivers/xain.c
+++ b/src/mame/drivers/xain.c
@@ -611,9 +611,8 @@ static MACHINE_CONFIG_START( xsleena, xain_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */
- MCFG_SCREEN_UPDATE(xain)
+ MCFG_SCREEN_UPDATE_STATIC(xain)
MCFG_GFXDECODE(xain)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/xexex.c b/src/mame/drivers/xexex.c
index 4a97db0536d..1994c871497 100644
--- a/src/mame/drivers/xexex.c
+++ b/src/mame/drivers/xexex.c
@@ -547,10 +547,9 @@ static MACHINE_CONFIG_START( xexex, xexex_state )
// MCFG_SCREEN_REFRESH_RATE(8000000/512/288)
MCFG_SCREEN_RAW_PARAMS(8000000, 384+33+40+55, 0, 383, 256+12+6+14, 0, 255)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 0, 0+256-1)
- MCFG_SCREEN_UPDATE(xexex)
+ MCFG_SCREEN_UPDATE_STATIC(xexex)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c
index 4a11ce84ea9..c3a96b5a3b6 100644
--- a/src/mame/drivers/xmen.c
+++ b/src/mame/drivers/xmen.c
@@ -391,10 +391,9 @@ static MACHINE_CONFIG_START( xmen, xmen_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(xmen)
+ MCFG_SCREEN_UPDATE_STATIC(xmen)
MCFG_PALETTE_LENGTH(2048)
MCFG_K052109_ADD("k052109", xmen_k052109_intf)
@@ -444,20 +443,18 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state )
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, 48*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(xmen6p_left)
+ MCFG_SCREEN_UPDATE_STATIC(xmen6p_left)
MCFG_SCREEN_ADD("rscreen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
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(xmen6p_right)
+ MCFG_SCREEN_UPDATE_STATIC(xmen6p_right)
MCFG_SCREEN_EOF(xmen6p)
MCFG_VIDEO_START(xmen6p)
diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c
index 7d9b1b4269a..1b39139b5c2 100644
--- a/src/mame/drivers/xorworld.c
+++ b/src/mame/drivers/xorworld.c
@@ -183,10 +183,9 @@ static MACHINE_CONFIG_START( xorworld, xorworld_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(xorworld)
+ MCFG_SCREEN_UPDATE_STATIC(xorworld)
MCFG_GFXDECODE(xorworld)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/xtheball.c b/src/mame/drivers/xtheball.c
index 5aad349d18c..0a27afbcc2d 100644
--- a/src/mame/drivers/xtheball.c
+++ b/src/mame/drivers/xtheball.c
@@ -34,7 +34,7 @@ public:
*
*************************************/
-static void xtheball_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+static void xtheball_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
xtheball_state *state = screen.machine().driver_data<xtheball_state>();
UINT16 *srcbg = &state->m_vram_bg[(params->rowaddr << 8) & 0xff00];
@@ -314,7 +314,8 @@ static const tms34010_config tms_config =
"screen", /* the screen operated on */
10000000, /* pixel clock */
1, /* pixels per clock */
- xtheball_scanline_update, /* scanline callback */
+ NULL, /* scanline callback (indexed16) */
+ xtheball_scanline_update, /* scanline callback (rgb32) */
NULL, /* generate interrupt */
xtheball_to_shiftreg, /* write to shiftreg function */
xtheball_from_shiftreg /* read from shiftreg function */
@@ -343,9 +344,8 @@ static MACHINE_CONFIG_START( xtheball, xtheball_state )
MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(10000000, 640, 114, 626, 257, 24, 248)
- MCFG_SCREEN_UPDATE(tms340x0)
+ MCFG_SCREEN_UPDATE_STATIC(tms340x0_rgb32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/xxmissio.c b/src/mame/drivers/xxmissio.c
index a7064b21445..ba970384c0c 100644
--- a/src/mame/drivers/xxmissio.c
+++ b/src/mame/drivers/xxmissio.c
@@ -303,10 +303,9 @@ static MACHINE_CONFIG_START( xxmissio, xxmissio_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 4*8, 28*8-1)
- MCFG_SCREEN_UPDATE(xxmissio)
+ MCFG_SCREEN_UPDATE_STATIC(xxmissio)
MCFG_GFXDECODE(xxmissio)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/xybots.c b/src/mame/drivers/xybots.c
index 89602eb2503..acb3002fe92 100644
--- a/src/mame/drivers/xybots.c
+++ b/src/mame/drivers/xybots.c
@@ -209,11 +209,10 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
/* 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(xybots)
+ MCFG_SCREEN_UPDATE_STATIC(xybots)
MCFG_VIDEO_START(xybots)
diff --git a/src/mame/drivers/xyonix.c b/src/mame/drivers/xyonix.c
index 32191d791ee..9ad4f3b65a4 100644
--- a/src/mame/drivers/xyonix.c
+++ b/src/mame/drivers/xyonix.c
@@ -227,10 +227,9 @@ static MACHINE_CONFIG_START( xyonix, xyonix_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(80*4, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 80*4-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE(xyonix)
+ MCFG_SCREEN_UPDATE_STATIC(xyonix)
MCFG_GFXDECODE(xyonix)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/yiear.c b/src/mame/drivers/yiear.c
index 0ecf808df55..9250d4247a7 100644
--- a/src/mame/drivers/yiear.c
+++ b/src/mame/drivers/yiear.c
@@ -279,10 +279,9 @@ static MACHINE_CONFIG_START( yiear, yiear_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.58) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(yiear)
+ MCFG_SCREEN_UPDATE_STATIC(yiear)
MCFG_GFXDECODE(yiear)
MCFG_PALETTE_LENGTH(32)
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index f5d669291ef..e5aedd6f1ba 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -606,10 +606,9 @@ static MACHINE_CONFIG_START( magicbub, yunsun16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0+0x20, 0x180-1-0x20, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(yunsun16)
+ MCFG_SCREEN_UPDATE_STATIC(yunsun16)
MCFG_GFXDECODE(yunsun16)
MCFG_PALETTE_LENGTH(8192)
@@ -648,10 +647,9 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x180, 0xe0)
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1-4, 0, 0xe0-1)
- MCFG_SCREEN_UPDATE(yunsun16)
+ MCFG_SCREEN_UPDATE_STATIC(yunsun16)
MCFG_GFXDECODE(yunsun16)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/yunsung8.c b/src/mame/drivers/yunsung8.c
index 48338a019e3..c0aaf1d192c 100644
--- a/src/mame/drivers/yunsung8.c
+++ b/src/mame/drivers/yunsung8.c
@@ -518,10 +518,9 @@ static MACHINE_CONFIG_START( yunsung8, yunsung8_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0+64, 512-64-1, 0+8, 256-8-1)
- MCFG_SCREEN_UPDATE(yunsung8)
+ MCFG_SCREEN_UPDATE_STATIC(yunsung8)
MCFG_GFXDECODE(yunsung8)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/zac2650.c b/src/mame/drivers/zac2650.c
index 90fd286e40c..becd175b830 100644
--- a/src/mame/drivers/zac2650.c
+++ b/src/mame/drivers/zac2650.c
@@ -242,10 +242,9 @@ static MACHINE_CONFIG_START( tinvader, zac2650_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1041))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(30*24, 32*24)
MCFG_SCREEN_VISIBLE_AREA(0, 719, 0, 767)
- MCFG_SCREEN_UPDATE(tinvader)
+ MCFG_SCREEN_UPDATE_STATIC(tinvader)
MCFG_GFXDECODE(tinvader)
MCFG_PALETTE_LENGTH(4)
diff --git a/src/mame/drivers/zaccaria.c b/src/mame/drivers/zaccaria.c
index c81d92bea7a..cb748fdf009 100644
--- a/src/mame/drivers/zaccaria.c
+++ b/src/mame/drivers/zaccaria.c
@@ -611,10 +611,9 @@ static MACHINE_CONFIG_START( zaccaria, zaccaria_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE(zaccaria)
+ MCFG_SCREEN_UPDATE_STATIC(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 3447e4a1eaa..b1ea7c2741b 100644
--- a/src/mame/drivers/zaxxon.c
+++ b/src/mame/drivers/zaxxon.c
@@ -943,9 +943,8 @@ static MACHINE_CONFIG_START( root, zaxxon_state )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(zaxxon)
+ MCFG_SCREEN_UPDATE_STATIC(zaxxon)
MCFG_PALETTE_INIT(zaxxon)
MCFG_VIDEO_START(zaxxon)
@@ -964,7 +963,7 @@ static MACHINE_CONFIG_DERIVED( futspy, root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(futspy)
+ MCFG_SCREEN_UPDATE_STATIC(futspy)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -977,7 +976,7 @@ static MACHINE_CONFIG_DERIVED( razmataz, root )
/* video hardware */
MCFG_VIDEO_START(razmataz)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(razmataz)
+ MCFG_SCREEN_UPDATE_STATIC(razmataz)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1000,7 +999,7 @@ static MACHINE_CONFIG_DERIVED( congo, root )
MCFG_PALETTE_LENGTH(512)
MCFG_VIDEO_START(congo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(congo)
+ MCFG_SCREEN_UPDATE_STATIC(congo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zerozone.c b/src/mame/drivers/zerozone.c
index 28b15ac7d6c..77b9548799e 100644
--- a/src/mame/drivers/zerozone.c
+++ b/src/mame/drivers/zerozone.c
@@ -181,7 +181,7 @@ static MACHINE_CONFIG_START( zerozone, zerozone_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(zerozone_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 47*8-1, 2*8, 30*8-1)
diff --git a/src/mame/drivers/zodiack.c b/src/mame/drivers/zodiack.c
index a38f032257d..353ca28cab7 100644
--- a/src/mame/drivers/zodiack.c
+++ b/src/mame/drivers/zodiack.c
@@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( zodiack, zodiack_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */ /* frames per second, vblank duration */)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(zodiack_state, screen_update)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c
index 574f89513bf..b44007ccd3f 100644
--- a/src/mame/drivers/zr107.c
+++ b/src/mame/drivers/zr107.c
@@ -202,7 +202,7 @@ static VIDEO_START( jetwave )
}
-static SCREEN_UPDATE( jetwave )
+static SCREEN_UPDATE_RGB32( jetwave )
{
zr107_state *state = screen.machine().driver_data<zr107_state>();
device_t *k001604 = screen.machine().device("k001604");
@@ -255,7 +255,7 @@ static VIDEO_START( zr107 )
K001005_init(machine);
}
-static SCREEN_UPDATE( zr107 )
+static SCREEN_UPDATE_RGB32( zr107 )
{
zr107_state *state = screen.machine().driver_data<zr107_state>();
device_t *k056832 = screen.machine().device("k056832");
@@ -760,10 +760,9 @@ static MACHINE_CONFIG_START( zr107, zr107_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(zr107)
+ MCFG_SCREEN_UPDATE_STATIC(zr107)
MCFG_PALETTE_LENGTH(65536)
@@ -821,10 +820,9 @@ static MACHINE_CONFIG_START( jetwave, zr107_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(64*8, 48*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
- MCFG_SCREEN_UPDATE(jetwave)
+ MCFG_SCREEN_UPDATE_STATIC(jetwave)
MCFG_PALETTE_LENGTH(65536)
diff --git a/src/mame/etc/template_driver.c b/src/mame/etc/template_driver.c
index b53dc438a99..9a84a476cac 100644
--- a/src/mame/etc/template_driver.c
+++ b/src/mame/etc/template_driver.c
@@ -23,12 +23,15 @@ public:
// devices
required_device<cpu_device> m_maincpu;
+ // screen updates
+ bool screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
void xxx_state::video_start()
@@ -36,7 +39,7 @@ void xxx_state::video_start()
}
-bool xxx_state::screen_update( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+bool xxx_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
return 0;
}
@@ -145,7 +148,7 @@ static MACHINE_CONFIG_START( xxx, xxx_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_UPDATE_DRIVER(xxx_state, screen_update)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
diff --git a/src/mame/includes/1942.h b/src/mame/includes/1942.h
index bfd3b40c2b8..00719b76f31 100644
--- a/src/mame/includes/1942.h
+++ b/src/mame/includes/1942.h
@@ -38,4 +38,4 @@ extern WRITE8_HANDLER( c1942_palette_bank_w );
extern PALETTE_INIT( 1942 );
extern VIDEO_START( 1942 );
-extern SCREEN_UPDATE( 1942 );
+extern SCREEN_UPDATE_IND16( 1942 );
diff --git a/src/mame/includes/1943.h b/src/mame/includes/1943.h
index b59e5df0eb5..8fed18558ff 100644
--- a/src/mame/includes/1943.h
+++ b/src/mame/includes/1943.h
@@ -40,4 +40,4 @@ extern WRITE8_HANDLER( c1943_colorram_w );
extern PALETTE_INIT( 1943 );
extern VIDEO_START( 1943 );
-extern SCREEN_UPDATE( 1943 );
+extern SCREEN_UPDATE_IND16( 1943 );
diff --git a/src/mame/includes/3do.h b/src/mame/includes/3do.h
index a8d4db5887b..1a08ddd0b8f 100644
--- a/src/mame/includes/3do.h
+++ b/src/mame/includes/3do.h
@@ -197,6 +197,6 @@ void _3do_clio_init( running_machine &machine, screen_device *screen );
VIDEO_START( _3do );
-SCREEN_UPDATE( _3do );
+SCREEN_UPDATE_RGB32( _3do );
#endif /* _3DO_H_ */
diff --git a/src/mame/includes/40love.h b/src/mame/includes/40love.h
index 0a4a3ed4565..9de19425b2a 100644
--- a/src/mame/includes/40love.h
+++ b/src/mame/includes/40love.h
@@ -14,16 +14,16 @@ public:
size_t m_spriteram2_size;
/* video-related */
- bitmap_t *m_tmp_bitmap1;
- bitmap_t *m_tmp_bitmap2;
+ bitmap_ind16 *m_tmp_bitmap1;
+ bitmap_ind16 *m_tmp_bitmap2;
tilemap_t *m_bg_tilemap;
UINT8 m_flipscreen;
UINT8 m_pix_redraw;
UINT8 m_xoffset;
UINT8 *m_pixram1;
UINT8 *m_pixram2;
- bitmap_t *m_pixel_bitmap1;
- bitmap_t *m_pixel_bitmap2;
+ bitmap_ind16 *m_pixel_bitmap1;
+ bitmap_ind16 *m_pixel_bitmap2;
int m_pixram_sel;
/* sound-related */
@@ -67,5 +67,5 @@ READ8_HANDLER( fortyl_pixram_r );
WRITE8_HANDLER( fortyl_pixram_w );
VIDEO_START( fortyl );
-SCREEN_UPDATE( fortyl );
+SCREEN_UPDATE_IND16( fortyl );
PALETTE_INIT( fortyl );
diff --git a/src/mame/includes/4enraya.h b/src/mame/includes/4enraya.h
index 795aa6ab3aa..937b974f73d 100644
--- a/src/mame/includes/4enraya.h
+++ b/src/mame/includes/4enraya.h
@@ -31,4 +31,4 @@ public:
WRITE8_HANDLER( fenraya_videoram_w );
VIDEO_START( 4enraya );
-SCREEN_UPDATE( 4enraya );
+SCREEN_UPDATE_IND16( 4enraya );
diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h
index e75099bccc6..658fca68a84 100644
--- a/src/mame/includes/8080bw.h
+++ b/src/mame/includes/8080bw.h
@@ -91,15 +91,15 @@ WRITE8_HANDLER( shuttlei_sh_port_2_w );
MACHINE_START( extra_8080bw_vh );
-SCREEN_UPDATE( invadpt2 );
-SCREEN_UPDATE( ballbomb );
-SCREEN_UPDATE( schaser );
-SCREEN_UPDATE( schasercv );
-SCREEN_UPDATE( rollingc );
-SCREEN_UPDATE( polaris );
-SCREEN_UPDATE( lupin3 );
-SCREEN_UPDATE( cosmo );
-SCREEN_UPDATE( indianbt );
-SCREEN_UPDATE( shuttlei );
-SCREEN_UPDATE( sflush );
+SCREEN_UPDATE_RGB32( invadpt2 );
+SCREEN_UPDATE_RGB32( ballbomb );
+SCREEN_UPDATE_RGB32( schaser );
+SCREEN_UPDATE_RGB32( schasercv );
+SCREEN_UPDATE_RGB32( rollingc );
+SCREEN_UPDATE_RGB32( polaris );
+SCREEN_UPDATE_RGB32( lupin3 );
+SCREEN_UPDATE_RGB32( cosmo );
+SCREEN_UPDATE_RGB32( indianbt );
+SCREEN_UPDATE_RGB32( shuttlei );
+SCREEN_UPDATE_RGB32( sflush );
diff --git a/src/mame/includes/88games.h b/src/mame/includes/88games.h
index adf3ef8b12c..a0fbe82470d 100644
--- a/src/mame/includes/88games.h
+++ b/src/mame/includes/88games.h
@@ -42,4 +42,4 @@ void _88games_sprite_callback(running_machine &machine, int *code, int *color, i
void _88games_tile_callback(running_machine &machine, int layer, int bank, int *code, int *color, int *flags, int *priority);
void _88games_zoom_callback(running_machine &machine, int *code, int *color, int *flags);
-SCREEN_UPDATE( 88games );
+SCREEN_UPDATE_IND16( 88games );
diff --git a/src/mame/includes/actfancr.h b/src/mame/includes/actfancr.h
index 066d05736a3..3c2866c49a5 100644
--- a/src/mame/includes/actfancr.h
+++ b/src/mame/includes/actfancr.h
@@ -38,5 +38,5 @@ READ8_HANDLER( actfancr_pf2_data_r );
WRITE8_HANDLER( actfancr_pf2_control_w );
VIDEO_START( actfancr );
-SCREEN_UPDATE( actfancr );
+SCREEN_UPDATE_IND16( actfancr );
diff --git a/src/mame/includes/aeroboto.h b/src/mame/includes/aeroboto.h
index cf08f9a7146..8622d4b258e 100644
--- a/src/mame/includes/aeroboto.h
+++ b/src/mame/includes/aeroboto.h
@@ -44,7 +44,7 @@ public:
/*----------- defined in video/aeroboto.c -----------*/
VIDEO_START( aeroboto );
-SCREEN_UPDATE( aeroboto );
+SCREEN_UPDATE_IND16( aeroboto );
READ8_HANDLER( aeroboto_in0_r );
WRITE8_HANDLER( aeroboto_3000_w );
diff --git a/src/mame/includes/aerofgt.h b/src/mame/includes/aerofgt.h
index ef3df6c8929..e44e55b51e7 100644
--- a/src/mame/includes/aerofgt.h
+++ b/src/mame/includes/aerofgt.h
@@ -66,13 +66,13 @@ VIDEO_START( karatblz );
VIDEO_START( spinlbrk );
VIDEO_START( turbofrc );
VIDEO_START( wbbc97 );
-SCREEN_UPDATE( pspikes );
-SCREEN_UPDATE( pspikesb );
-SCREEN_UPDATE( spikes91 );
-SCREEN_UPDATE( karatblz );
-SCREEN_UPDATE( spinlbrk );
-SCREEN_UPDATE( turbofrc );
-SCREEN_UPDATE( aerofgt );
-SCREEN_UPDATE( aerfboot );
-SCREEN_UPDATE( aerfboo2 );
-SCREEN_UPDATE( wbbc97 );
+SCREEN_UPDATE_IND16( pspikes );
+SCREEN_UPDATE_IND16( pspikesb );
+SCREEN_UPDATE_IND16( spikes91 );
+SCREEN_UPDATE_IND16( karatblz );
+SCREEN_UPDATE_IND16( spinlbrk );
+SCREEN_UPDATE_IND16( turbofrc );
+SCREEN_UPDATE_IND16( aerofgt );
+SCREEN_UPDATE_IND16( aerfboot );
+SCREEN_UPDATE_IND16( aerfboo2 );
+SCREEN_UPDATE_RGB32( wbbc97 );
diff --git a/src/mame/includes/airbustr.h b/src/mame/includes/airbustr.h
index 9b2c1e0614c..0d56e7fa961 100644
--- a/src/mame/includes/airbustr.h
+++ b/src/mame/includes/airbustr.h
@@ -21,7 +21,7 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- bitmap_t *m_sprites_bitmap;
+ bitmap_ind16 m_sprites_bitmap;
int m_bg_scrollx;
int m_bg_scrolly;
int m_fg_scrollx;
@@ -49,5 +49,5 @@ WRITE8_HANDLER( airbustr_colorram2_w );
WRITE8_HANDLER( airbustr_scrollregs_w );
VIDEO_START( airbustr );
-SCREEN_UPDATE( airbustr );
+SCREEN_UPDATE_IND16( airbustr );
SCREEN_EOF( airbustr );
diff --git a/src/mame/includes/ajax.h b/src/mame/includes/ajax.h
index f9e6fd08a56..f778aefc292 100644
--- a/src/mame/includes/ajax.h
+++ b/src/mame/includes/ajax.h
@@ -41,7 +41,7 @@ INTERRUPT_GEN( ajax_interrupt );
/*----------- defined in video/ajax.c -----------*/
VIDEO_START( ajax );
-SCREEN_UPDATE( ajax );
+SCREEN_UPDATE_IND16( ajax );
extern void ajax_tile_callback(running_machine &machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
extern void ajax_sprite_callback(running_machine &machine, int *code,int *color,int *priority,int *shadow);
diff --git a/src/mame/includes/aliens.h b/src/mame/includes/aliens.h
index 2180af2f237..7497d0d3573 100644
--- a/src/mame/includes/aliens.h
+++ b/src/mame/includes/aliens.h
@@ -35,4 +35,4 @@ extern void aliens_tile_callback(running_machine &machine, int layer,int bank,in
extern void aliens_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask,int *shadow);
VIDEO_START( aliens );
-SCREEN_UPDATE( aliens );
+SCREEN_UPDATE_IND16( aliens );
diff --git a/src/mame/includes/alpha68k.h b/src/mame/includes/alpha68k.h
index af591063dd0..b28c97c5094 100644
--- a/src/mame/includes/alpha68k.h
+++ b/src/mame/includes/alpha68k.h
@@ -60,12 +60,12 @@ PALETTE_INIT( paddlem );
VIDEO_START( alpha68k );
-SCREEN_UPDATE( kyros );
-SCREEN_UPDATE( sstingry );
-SCREEN_UPDATE( alpha68k_I );
-SCREEN_UPDATE( alpha68k_II );
-SCREEN_UPDATE( alpha68k_V );
-SCREEN_UPDATE( alpha68k_V_sb );
+SCREEN_UPDATE_IND16( kyros );
+SCREEN_UPDATE_IND16( sstingry );
+SCREEN_UPDATE_IND16( alpha68k_I );
+SCREEN_UPDATE_IND16( alpha68k_II );
+SCREEN_UPDATE_IND16( alpha68k_V );
+SCREEN_UPDATE_IND16( alpha68k_V_sb );
void alpha68k_V_video_bank_w(running_machine &machine, int bank);
void alpha68k_flipscreen_w(running_machine &machine, int flip);
diff --git a/src/mame/includes/ambush.h b/src/mame/includes/ambush.h
index 212c864de0d..e93810230e9 100644
--- a/src/mame/includes/ambush.h
+++ b/src/mame/includes/ambush.h
@@ -25,4 +25,4 @@ public:
/*----------- defined in video/ambush.c -----------*/
PALETTE_INIT( ambush );
-SCREEN_UPDATE( ambush );
+SCREEN_UPDATE_IND16( ambush );
diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h
index 393d4f4f394..6cb7433ecc0 100644
--- a/src/mame/includes/amiga.h
+++ b/src/mame/includes/amiga.h
@@ -474,23 +474,23 @@ extern const UINT16 amiga_expand_byte[256];
PALETTE_INIT( amiga );
VIDEO_START( amiga );
-SCREEN_UPDATE( amiga );
+SCREEN_UPDATE_IND16( amiga );
void amiga_copper_setpc(running_machine &machine, UINT32 pc);
int amiga_copper_execute_next(running_machine &machine, int xpos);
UINT32 amiga_gethvpos(screen_device &screen);
void amiga_set_genlock_color(running_machine &machine, UINT16 color);
-void amiga_render_scanline(running_machine &machine, bitmap_t &bitmap, int scanline);
+void amiga_render_scanline(running_machine &machine, bitmap_ind16 &bitmap, int scanline);
void amiga_sprite_dma_reset(running_machine &machine, int which);
void amiga_sprite_enable_comparitor(running_machine &machine, int which, int enable);
/*----------- defined in video/amigaaga.c -----------*/
VIDEO_START( amiga_aga );
-SCREEN_UPDATE( amiga_aga );
+SCREEN_UPDATE_RGB32( amiga_aga );
-void amiga_aga_render_scanline(running_machine &machine, bitmap_t &bitmap, int scanline);
+void amiga_aga_render_scanline(running_machine &machine, bitmap_rgb32 &bitmap, int scanline);
void amiga_aga_palette_write(running_machine &machine, int color_reg, UINT16 data);
void amiga_aga_diwhigh_written(running_machine &machine, int written);
diff --git a/src/mame/includes/ampoker2.h b/src/mame/includes/ampoker2.h
index 5c2284c8874..84b26240644 100644
--- a/src/mame/includes/ampoker2.h
+++ b/src/mame/includes/ampoker2.h
@@ -15,4 +15,4 @@ WRITE8_HANDLER( ampoker2_videoram_w );
PALETTE_INIT( ampoker2 );
VIDEO_START( ampoker2 );
VIDEO_START( sigma2k );
-SCREEN_UPDATE( ampoker2 );
+SCREEN_UPDATE_IND16( ampoker2 );
diff --git a/src/mame/includes/amspdwy.h b/src/mame/includes/amspdwy.h
index 46ac2027bb1..f30faacf36b 100644
--- a/src/mame/includes/amspdwy.h
+++ b/src/mame/includes/amspdwy.h
@@ -38,4 +38,4 @@ WRITE8_HANDLER( amspdwy_paletteram_w );
WRITE8_HANDLER( amspdwy_flipscreen_w );
VIDEO_START( amspdwy );
-SCREEN_UPDATE( amspdwy );
+SCREEN_UPDATE_IND16( amspdwy );
diff --git a/src/mame/includes/angelkds.h b/src/mame/includes/angelkds.h
index 5c4d0f8bd07..96a3fe6f9ea 100644
--- a/src/mame/includes/angelkds.h
+++ b/src/mame/includes/angelkds.h
@@ -49,4 +49,4 @@ WRITE8_HANDLER( angelkds_paletteram_w );
WRITE8_HANDLER( angelkds_layer_ctrl_write );
VIDEO_START( angelkds );
-SCREEN_UPDATE( angelkds );
+SCREEN_UPDATE_IND16( angelkds );
diff --git a/src/mame/includes/appoooh.h b/src/mame/includes/appoooh.h
index 34244b2a65d..27541fb8678 100644
--- a/src/mame/includes/appoooh.h
+++ b/src/mame/includes/appoooh.h
@@ -45,5 +45,5 @@ PALETTE_INIT( robowres );
WRITE8_HANDLER( appoooh_scroll_w );
WRITE8_HANDLER( appoooh_out_w );
VIDEO_START( appoooh );
-SCREEN_UPDATE( appoooh );
-SCREEN_UPDATE( robowres );
+SCREEN_UPDATE_IND16( appoooh );
+SCREEN_UPDATE_IND16( robowres );
diff --git a/src/mame/includes/aquarium.h b/src/mame/includes/aquarium.h
index 578e9a1e660..c716d474df1 100644
--- a/src/mame/includes/aquarium.h
+++ b/src/mame/includes/aquarium.h
@@ -36,4 +36,4 @@ WRITE16_HANDLER( aquarium_mid_videoram_w );
WRITE16_HANDLER( aquarium_bak_videoram_w );
VIDEO_START(aquarium);
-SCREEN_UPDATE(aquarium);
+SCREEN_UPDATE_IND16(aquarium);
diff --git a/src/mame/includes/arabian.h b/src/mame/includes/arabian.h
index d160b8812c1..e072e06da5d 100644
--- a/src/mame/includes/arabian.h
+++ b/src/mame/includes/arabian.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( arabian_videoram_w );
PALETTE_INIT( arabian );
VIDEO_START( arabian );
-SCREEN_UPDATE( arabian );
+SCREEN_UPDATE_IND16( arabian );
diff --git a/src/mame/includes/arcadecl.h b/src/mame/includes/arcadecl.h
index c139b91c191..302795cfde0 100644
--- a/src/mame/includes/arcadecl.h
+++ b/src/mame/includes/arcadecl.h
@@ -20,4 +20,4 @@ public:
/*----------- defined in video/arcadecl.c -----------*/
VIDEO_START( arcadecl );
-SCREEN_UPDATE( arcadecl );
+SCREEN_UPDATE_IND16( arcadecl );
diff --git a/src/mame/includes/archimds.h b/src/mame/includes/archimds.h
index 3d16e83f8d1..ff539df4cdb 100644
--- a/src/mame/includes/archimds.h
+++ b/src/mame/includes/archimds.h
@@ -107,7 +107,7 @@ extern UINT8 vidc_interlace;
/*----------- defined in video/archimds.c -----------*/
extern VIDEO_START( archimds_vidc );
-extern SCREEN_UPDATE( archimds_vidc );
+extern SCREEN_UPDATE_RGB32( archimds_vidc );
#define VIDC_HCR 0x80
#define VIDC_HSWR 0x84
diff --git a/src/mame/includes/argus.h b/src/mame/includes/argus.h
index 43a8b4c66b9..fd5a27a187d 100644
--- a/src/mame/includes/argus.h
+++ b/src/mame/includes/argus.h
@@ -29,7 +29,7 @@ public:
int m_lowbitscroll;
int m_prvscrollx;
UINT8 m_valtric_mosaic;
- bitmap_t *m_mosaicbitmap;
+ bitmap_rgb32 m_mosaicbitmap;
UINT8 m_valtric_unknown;
UINT8 m_butasan_unknown;
int m_mosaic;
@@ -46,9 +46,9 @@ VIDEO_START( butasan );
VIDEO_RESET( argus );
VIDEO_RESET( valtric );
VIDEO_RESET( butasan );
-SCREEN_UPDATE( argus );
-SCREEN_UPDATE( valtric );
-SCREEN_UPDATE( butasan );
+SCREEN_UPDATE_RGB32( argus );
+SCREEN_UPDATE_RGB32( valtric );
+SCREEN_UPDATE_RGB32( butasan );
READ8_HANDLER( argus_txram_r );
READ8_HANDLER( argus_bg1ram_r );
diff --git a/src/mame/includes/arkanoid.h b/src/mame/includes/arkanoid.h
index b12fe8595e0..1380e0c0f25 100644
--- a/src/mame/includes/arkanoid.h
+++ b/src/mame/includes/arkanoid.h
@@ -58,8 +58,8 @@ extern WRITE8_HANDLER( tetrsark_d008_w );
extern WRITE8_HANDLER( hexa_d008_w );
extern VIDEO_START( arkanoid );
-extern SCREEN_UPDATE( arkanoid );
-extern SCREEN_UPDATE( hexa );
+extern SCREEN_UPDATE_IND16( arkanoid );
+extern SCREEN_UPDATE_IND16( hexa );
/*----------- defined in machine/arkanoid.c -----------*/
diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h
index 17320e1b401..5578fcabbe8 100644
--- a/src/mame/includes/armedf.h
+++ b/src/mame/includes/armedf.h
@@ -46,7 +46,7 @@ public:
/*----------- defined in video/armedf.c -----------*/
-SCREEN_UPDATE( armedf );
+SCREEN_UPDATE_IND16( armedf );
SCREEN_EOF( armedf );
VIDEO_START( armedf );
VIDEO_START( terraf );
diff --git a/src/mame/includes/artmagic.h b/src/mame/includes/artmagic.h
index 946909ef8ac..a97fd7469f1 100644
--- a/src/mame/includes/artmagic.h
+++ b/src/mame/includes/artmagic.h
@@ -43,4 +43,4 @@ void artmagic_from_shiftreg(address_space *space, offs_t address, UINT16 *data);
READ16_HANDLER( artmagic_blitter_r );
WRITE16_HANDLER( artmagic_blitter_w );
-void artmagic_scanline(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void artmagic_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/ashnojoe.h b/src/mame/includes/ashnojoe.h
index 661b5fcb69f..60361a7b81f 100644
--- a/src/mame/includes/ashnojoe.h
+++ b/src/mame/includes/ashnojoe.h
@@ -54,4 +54,4 @@ WRITE16_HANDLER( joe_tilemaps_xscroll_w );
WRITE16_HANDLER( joe_tilemaps_yscroll_w );
VIDEO_START( ashnojoe );
-SCREEN_UPDATE( ashnojoe );
+SCREEN_UPDATE_IND16( ashnojoe );
diff --git a/src/mame/includes/asterix.h b/src/mame/includes/asterix.h
index fcac032cfd2..cf1d1ab5274 100644
--- a/src/mame/includes/asterix.h
+++ b/src/mame/includes/asterix.h
@@ -38,7 +38,7 @@ public:
/*----------- defined in video/asterix.c -----------*/
-SCREEN_UPDATE( asterix );
+SCREEN_UPDATE_IND16( asterix );
WRITE16_HANDLER( asterix_spritebank_w );
extern void asterix_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h
index 5357f85b35c..100e36e3b11 100644
--- a/src/mame/includes/astrocde.h
+++ b/src/mame/includes/astrocde.h
@@ -78,8 +78,8 @@ PALETTE_INIT( profpac );
VIDEO_START( astrocde );
VIDEO_START( profpac );
-SCREEN_UPDATE( astrocde );
-SCREEN_UPDATE( profpac );
+SCREEN_UPDATE_IND16( astrocde );
+SCREEN_UPDATE_IND16( profpac );
WRITE8_HANDLER( astrocade_pattern_board_w );
READ8_HANDLER( astrocade_data_chip_register_r );
diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h
index d022ccfead8..7c5dd7fb607 100644
--- a/src/mame/includes/asuka.h
+++ b/src/mame/includes/asuka.h
@@ -51,5 +51,5 @@ WRITE16_HANDLER( bonzeadv_cchip_ram_w );
WRITE16_HANDLER( asuka_spritectrl_w );
-SCREEN_UPDATE( asuka );
-SCREEN_UPDATE( bonzeadv );
+SCREEN_UPDATE_IND16( asuka );
+SCREEN_UPDATE_IND16( bonzeadv );
diff --git a/src/mame/includes/atari.h b/src/mame/includes/atari.h
index 882d5185641..53c6e1e753e 100644
--- a/src/mame/includes/atari.h
+++ b/src/mame/includes/atari.h
@@ -259,6 +259,7 @@ typedef struct {
UINT8 *uc_g1; /* used colors for gfx GTIA 1 */
UINT8 *uc_g2; /* used colors for gfx GTIA 2 */
UINT8 *uc_g3; /* used colors for gfx GTIA 3 */
+ bitmap_ind16 *bitmap;
} ANTIC;
#define RDANTIC(space) space->read_byte(antic.dpage+antic.doffs)
@@ -588,7 +589,7 @@ extern char atari_frame_message[64+1];
extern int atari_frame_counter;
extern VIDEO_START( atari );
-extern SCREEN_UPDATE( atari );
+extern SCREEN_UPDATE_IND16( atari );
TIMER_DEVICE_CALLBACK( a400_interrupt );
TIMER_DEVICE_CALLBACK( a800_interrupt );
diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h
index 47ecdbd01a8..b26cf9d16a3 100644
--- a/src/mame/includes/atarifb.h
+++ b/src/mame/includes/atarifb.h
@@ -84,9 +84,9 @@ DISCRETE_SOUND_EXTERN( abaseb );
/*----------- defined in video/atarifb.c -----------*/
VIDEO_START( atarifb );
-SCREEN_UPDATE( atarifb );
-SCREEN_UPDATE( abaseb );
-SCREEN_UPDATE( soccer );
+SCREEN_UPDATE_IND16( atarifb );
+SCREEN_UPDATE_IND16( abaseb );
+SCREEN_UPDATE_IND16( soccer );
WRITE8_HANDLER( atarifb_alpha1_videoram_w );
WRITE8_HANDLER( atarifb_alpha2_videoram_w );
diff --git a/src/mame/includes/atarig1.h b/src/mame/includes/atarig1.h
index 68621a68610..fcf58fa141a 100644
--- a/src/mame/includes/atarig1.h
+++ b/src/mame/includes/atarig1.h
@@ -38,6 +38,6 @@ WRITE16_HANDLER( atarig1_mo_control_w );
VIDEO_START( atarig1 );
SCREEN_EOF( atarig1 );
-SCREEN_UPDATE( atarig1 );
+SCREEN_UPDATE_IND16( atarig1 );
void atarig1_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/atarig42.h b/src/mame/includes/atarig42.h
index 735775246b5..ba78ef8d914 100644
--- a/src/mame/includes/atarig42.h
+++ b/src/mame/includes/atarig42.h
@@ -38,7 +38,7 @@ public:
VIDEO_START( atarig42 );
SCREEN_EOF( atarig42 );
-SCREEN_UPDATE( atarig42 );
+SCREEN_UPDATE_IND16( atarig42 );
WRITE16_HANDLER( atarig42_mo_control_w );
diff --git a/src/mame/includes/atarigt.h b/src/mame/includes/atarigt.h
index 9e04721d894..f82b7f5f239 100644
--- a/src/mame/includes/atarigt.h
+++ b/src/mame/includes/atarigt.h
@@ -22,8 +22,8 @@ public:
UINT8 m_is_primrage;
UINT16 * m_colorram;
- bitmap_t * m_pf_bitmap;
- bitmap_t * m_an_bitmap;
+ bitmap_ind16 * m_pf_bitmap;
+ bitmap_ind16 * m_an_bitmap;
UINT8 m_playfield_tile_bank;
UINT8 m_playfield_color_bank;
@@ -56,6 +56,6 @@ UINT16 atarigt_colorram_r(atarigt_state *state, offs_t address);
VIDEO_START( atarigt );
SCREEN_EOF( atarigt );
-SCREEN_UPDATE( atarigt );
+SCREEN_UPDATE_RGB32( atarigt );
void atarigt_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/atarigx2.h b/src/mame/includes/atarigx2.h
index 81e92b9c8f4..dae2c3e0b4b 100644
--- a/src/mame/includes/atarigx2.h
+++ b/src/mame/includes/atarigx2.h
@@ -34,7 +34,7 @@ public:
VIDEO_START( atarigx2 );
SCREEN_EOF( atarigx2 );
-SCREEN_UPDATE( atarigx2 );
+SCREEN_UPDATE_IND16( atarigx2 );
WRITE16_HANDLER( atarigx2_mo_control_w );
diff --git a/src/mame/includes/atarisy1.h b/src/mame/includes/atarisy1.h
index 69adad05bde..e7b11b200f1 100644
--- a/src/mame/includes/atarisy1.h
+++ b/src/mame/includes/atarisy1.h
@@ -60,4 +60,4 @@ WRITE16_HANDLER( atarisy1_yscroll_w );
WRITE16_HANDLER( atarisy1_priority_w );
VIDEO_START( atarisy1 );
-SCREEN_UPDATE( atarisy1 );
+SCREEN_UPDATE_IND16( atarisy1 );
diff --git a/src/mame/includes/atarisy2.h b/src/mame/includes/atarisy2.h
index 8ee7ddb914b..1cfbb0b7ced 100644
--- a/src/mame/includes/atarisy2.h
+++ b/src/mame/includes/atarisy2.h
@@ -60,4 +60,4 @@ WRITE16_HANDLER( atarisy2_videoram_w );
WRITE16_HANDLER( atarisy2_paletteram_w );
VIDEO_START( atarisy2 );
-SCREEN_UPDATE( atarisy2 );
+SCREEN_UPDATE_IND16( atarisy2 );
diff --git a/src/mame/includes/atetris.h b/src/mame/includes/atetris.h
index 2e1bd165730..f25b20bdfed 100644
--- a/src/mame/includes/atetris.h
+++ b/src/mame/includes/atetris.h
@@ -24,6 +24,6 @@ public:
/*----------- defined in video/atetris.c -----------*/
VIDEO_START( atetris );
-SCREEN_UPDATE( atetris );
+SCREEN_UPDATE_IND16( atetris );
WRITE8_HANDLER( atetris_videoram_w );
diff --git a/src/mame/includes/badlands.h b/src/mame/includes/badlands.h
index ed8b84e4765..b844f10a7e3 100644
--- a/src/mame/includes/badlands.h
+++ b/src/mame/includes/badlands.h
@@ -26,4 +26,4 @@ public:
WRITE16_HANDLER( badlands_pf_bank_w );
VIDEO_START( badlands );
-SCREEN_UPDATE( badlands );
+SCREEN_UPDATE_IND16( badlands );
diff --git a/src/mame/includes/bagman.h b/src/mame/includes/bagman.h
index ca99791a435..9ec28e142be 100644
--- a/src/mame/includes/bagman.h
+++ b/src/mame/includes/bagman.h
@@ -66,4 +66,4 @@ WRITE8_HANDLER( bagman_flipscreen_w );
PALETTE_INIT( bagman );
VIDEO_START( bagman );
-SCREEN_UPDATE( bagman );
+SCREEN_UPDATE_IND16( bagman );
diff --git a/src/mame/includes/balsente.h b/src/mame/includes/balsente.h
index 09156d7c961..c19fcf0cb57 100644
--- a/src/mame/includes/balsente.h
+++ b/src/mame/includes/balsente.h
@@ -182,7 +182,7 @@ WRITE16_HANDLER( shrike_io_68k_w );
/*----------- defined in video/balsente.c -----------*/
VIDEO_START( balsente );
-SCREEN_UPDATE( balsente );
+SCREEN_UPDATE_IND16( balsente );
WRITE8_HANDLER( balsente_videoram_w );
WRITE8_HANDLER( balsente_paletteram_w );
diff --git a/src/mame/includes/bankp.h b/src/mame/includes/bankp.h
index 0398f887fff..0f5ccf842bd 100644
--- a/src/mame/includes/bankp.h
+++ b/src/mame/includes/bankp.h
@@ -42,6 +42,6 @@ WRITE8_HANDLER( bankp_out_w );
PALETTE_INIT( bankp );
VIDEO_START( bankp );
-SCREEN_UPDATE( bankp );
+SCREEN_UPDATE_IND16( bankp );
diff --git a/src/mame/includes/baraduke.h b/src/mame/includes/baraduke.h
index fea629e3454..ea6370d0fad 100644
--- a/src/mame/includes/baraduke.h
+++ b/src/mame/includes/baraduke.h
@@ -20,7 +20,7 @@ public:
/*----------- defined in video/baraduke.c -----------*/
VIDEO_START( baraduke );
-SCREEN_UPDATE( baraduke );
+SCREEN_UPDATE_IND16( baraduke );
SCREEN_EOF( baraduke );
READ8_HANDLER( baraduke_videoram_r );
WRITE8_HANDLER( baraduke_videoram_w );
diff --git a/src/mame/includes/batman.h b/src/mame/includes/batman.h
index 291bb1e241c..def15157978 100644
--- a/src/mame/includes/batman.h
+++ b/src/mame/includes/batman.h
@@ -21,6 +21,6 @@ public:
/*----------- defined in video/batman.c -----------*/
VIDEO_START( batman );
-SCREEN_UPDATE( batman );
+SCREEN_UPDATE_IND16( batman );
void batman_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/battlane.h b/src/mame/includes/battlane.h
index f5f6ce26c5e..b911137d831 100644
--- a/src/mame/includes/battlane.h
+++ b/src/mame/includes/battlane.h
@@ -16,7 +16,7 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
- bitmap_t *m_screen_bitmap;
+ bitmap_ind8 m_screen_bitmap;
int m_video_ctrl;
int m_cpu_control; /* CPU interrupt control register */
@@ -37,4 +37,4 @@ WRITE8_HANDLER( battlane_bitmap_w );
WRITE8_HANDLER( battlane_video_ctrl_w );
VIDEO_START( battlane );
-SCREEN_UPDATE( battlane );
+SCREEN_UPDATE_IND16( battlane );
diff --git a/src/mame/includes/battlera.h b/src/mame/includes/battlera.h
index c180708cdbb..7827ed8ce2f 100644
--- a/src/mame/includes/battlera.h
+++ b/src/mame/includes/battlera.h
@@ -14,8 +14,8 @@ public:
int m_vram_ptr;
UINT8 *m_HuC6270_vram;
UINT8 *m_vram_dirty;
- bitmap_t *m_tile_bitmap;
- bitmap_t *m_front_bitmap;
+ bitmap_ind16 *m_tile_bitmap;
+ bitmap_ind16 *m_front_bitmap;
UINT32 m_tile_dirtyseq;
int m_current_scanline;
int m_inc_value;
@@ -32,7 +32,7 @@ public:
/*----------- defined in video/battlera.c -----------*/
-SCREEN_UPDATE( battlera );
+SCREEN_UPDATE_IND16( battlera );
VIDEO_START( battlera );
TIMER_DEVICE_CALLBACK( battlera_irq );
diff --git a/src/mame/includes/battlex.h b/src/mame/includes/battlex.h
index a6d22bdf71e..c81c9471d55 100644
--- a/src/mame/includes/battlex.h
+++ b/src/mame/includes/battlex.h
@@ -34,4 +34,4 @@ extern WRITE8_HANDLER( battlex_scroll_starfield_w );
extern WRITE8_HANDLER( battlex_flipscreen_w );
extern VIDEO_START( battlex );
-extern SCREEN_UPDATE( battlex );
+extern SCREEN_UPDATE_IND16( battlex );
diff --git a/src/mame/includes/battlnts.h b/src/mame/includes/battlnts.h
index 0a32d23929a..71e58270c15 100644
--- a/src/mame/includes/battlnts.h
+++ b/src/mame/includes/battlnts.h
@@ -28,7 +28,7 @@ public:
WRITE8_HANDLER( battlnts_spritebank_w );
-SCREEN_UPDATE( battlnts );
+SCREEN_UPDATE_IND16( battlnts );
void battlnts_tile_callback(running_machine &machine, int layer, int bank, int *code, int *color, int *flags);
void battlnts_sprite_callback(running_machine &machine, int *code, int *color);
diff --git a/src/mame/includes/bbusters.h b/src/mame/includes/bbusters.h
index 2b93a6c73dd..f6e10855cb4 100644
--- a/src/mame/includes/bbusters.h
+++ b/src/mame/includes/bbusters.h
@@ -28,8 +28,8 @@ public:
VIDEO_START( bbuster );
VIDEO_START( mechatt );
-SCREEN_UPDATE( bbuster );
-SCREEN_UPDATE( mechatt );
+SCREEN_UPDATE_IND16( bbuster );
+SCREEN_UPDATE_IND16( mechatt );
WRITE16_HANDLER( bbusters_pf1_w );
WRITE16_HANDLER( bbusters_pf2_w );
diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h
index e5cb9a4455f..6126fe3568e 100644
--- a/src/mame/includes/beathead.h
+++ b/src/mame/includes/beathead.h
@@ -20,7 +20,8 @@ public:
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<asap_device> m_maincpu;
diff --git a/src/mame/includes/beezer.h b/src/mame/includes/beezer.h
index 075e30ecf22..531d1c96bb9 100644
--- a/src/mame/includes/beezer.h
+++ b/src/mame/includes/beezer.h
@@ -35,6 +35,6 @@ READ8_DEVICE_HANDLER( beezer_noise_r );
/*----------- defined in video/beezer.c -----------*/
TIMER_DEVICE_CALLBACK( beezer_interrupt );
-SCREEN_UPDATE( beezer );
+SCREEN_UPDATE_IND16( beezer );
WRITE8_HANDLER( beezer_map_w );
READ8_HANDLER( beezer_line_r );
diff --git a/src/mame/includes/bigevglf.h b/src/mame/includes/bigevglf.h
index f828f2f62c0..b3200abc035 100644
--- a/src/mame/includes/bigevglf.h
+++ b/src/mame/includes/bigevglf.h
@@ -11,7 +11,7 @@ public:
UINT8 * m_spriteram2;
/* video-related */
- bitmap_t *m_tmp_bitmap[4];
+ bitmap_ind16 m_tmp_bitmap[4];
UINT8 *m_vidram;
UINT32 m_vidram_bank;
UINT32 m_plane_selected;
@@ -70,7 +70,7 @@ READ8_HANDLER( bigevglf_mcu_status_r );
/*----------- defined in video/bigevglf.c -----------*/
VIDEO_START( bigevglf );
-SCREEN_UPDATE( bigevglf );
+SCREEN_UPDATE_IND16( bigevglf );
READ8_HANDLER( bigevglf_vidram_r );
WRITE8_HANDLER( bigevglf_vidram_w );
diff --git a/src/mame/includes/bigstrkb.h b/src/mame/includes/bigstrkb.h
index 90f946d02d5..29b3e132c41 100644
--- a/src/mame/includes/bigstrkb.h
+++ b/src/mame/includes/bigstrkb.h
@@ -24,4 +24,4 @@ WRITE16_HANDLER( bsb_videoram_w );
WRITE16_HANDLER( bsb_videoram2_w );
WRITE16_HANDLER( bsb_videoram3_w );
VIDEO_START(bigstrkb);
-SCREEN_UPDATE(bigstrkb);
+SCREEN_UPDATE_IND16(bigstrkb);
diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h
index 0d34d023bc2..ab491d598a0 100644
--- a/src/mame/includes/bionicc.h
+++ b/src/mame/includes/bionicc.h
@@ -38,5 +38,5 @@ WRITE16_HANDLER( bionicc_scroll_w );
WRITE16_HANDLER( bionicc_gfxctrl_w );
VIDEO_START( bionicc );
-SCREEN_UPDATE( bionicc );
+SCREEN_UPDATE_IND16( bionicc );
SCREEN_EOF( bionicc );
diff --git a/src/mame/includes/bishi.h b/src/mame/includes/bishi.h
index de6130248df..2f6e1627d22 100644
--- a/src/mame/includes/bishi.h
+++ b/src/mame/includes/bishi.h
@@ -38,4 +38,4 @@ public:
extern void bishi_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
VIDEO_START(bishi);
-SCREEN_UPDATE(bishi);
+SCREEN_UPDATE_RGB32(bishi);
diff --git a/src/mame/includes/bking.h b/src/mame/includes/bking.h
index 2d69627df5f..cca8faf3636 100644
--- a/src/mame/includes/bking.h
+++ b/src/mame/includes/bking.h
@@ -8,8 +8,8 @@ public:
UINT8 * m_playfield_ram;
/* video-related */
- bitmap_t *m_tmp_bitmap1;
- bitmap_t *m_tmp_bitmap2;
+ bitmap_ind16 m_tmp_bitmap1;
+ bitmap_ind16 m_tmp_bitmap2;
tilemap_t *m_bg_tilemap;
int m_pc3259_output[4];
int m_pc3259_mask;
@@ -71,5 +71,5 @@ READ8_HANDLER( bking_pos_r );
PALETTE_INIT( bking );
VIDEO_START( bking );
-SCREEN_UPDATE( bking );
+SCREEN_UPDATE_IND16( bking );
SCREEN_EOF( bking );
diff --git a/src/mame/includes/bladestl.h b/src/mame/includes/bladestl.h
index cc740ce010c..5da4c6bf8dc 100644
--- a/src/mame/includes/bladestl.h
+++ b/src/mame/includes/bladestl.h
@@ -32,7 +32,7 @@ public:
PALETTE_INIT( bladestl );
-SCREEN_UPDATE( bladestl );
+SCREEN_UPDATE_IND16( bladestl );
void bladestl_tile_callback(running_machine &machine, int layer, int bank, int *code, int *color, int *flags);
void bladestl_sprite_callback(running_machine &machine, int *code, int *color);
diff --git a/src/mame/includes/blktiger.h b/src/mame/includes/blktiger.h
index 0d9a131f4db..56113db65a3 100644
--- a/src/mame/includes/blktiger.h
+++ b/src/mame/includes/blktiger.h
@@ -53,5 +53,5 @@ WRITE8_HANDLER( blktiger_scrollx_w );
WRITE8_HANDLER( blktiger_scrolly_w );
VIDEO_START( blktiger );
-SCREEN_UPDATE( blktiger );
+SCREEN_UPDATE_IND16( blktiger );
SCREEN_EOF( blktiger );
diff --git a/src/mame/includes/blmbycar.h b/src/mame/includes/blmbycar.h
index 6d335960fdb..096a7756c24 100644
--- a/src/mame/includes/blmbycar.h
+++ b/src/mame/includes/blmbycar.h
@@ -38,4 +38,4 @@ WRITE16_HANDLER( blmbycar_vram_0_w );
WRITE16_HANDLER( blmbycar_vram_1_w );
VIDEO_START( blmbycar );
-SCREEN_UPDATE( blmbycar );
+SCREEN_UPDATE_IND16( blmbycar );
diff --git a/src/mame/includes/blockade.h b/src/mame/includes/blockade.h
index ff776d9f760..e0609af2673 100644
--- a/src/mame/includes/blockade.h
+++ b/src/mame/includes/blockade.h
@@ -23,7 +23,7 @@ public:
WRITE8_HANDLER( blockade_videoram_w );
VIDEO_START( blockade );
-SCREEN_UPDATE( blockade );
+SCREEN_UPDATE_IND16( blockade );
/*----------- defined in audio/blockade.c -----------*/
diff --git a/src/mame/includes/blockhl.h b/src/mame/includes/blockhl.h
index 39e11823b57..3415aeed6e1 100644
--- a/src/mame/includes/blockhl.h
+++ b/src/mame/includes/blockhl.h
@@ -35,4 +35,4 @@ extern void blockhl_tile_callback(running_machine &machine, int layer,int bank,i
extern void blockhl_sprite_callback(running_machine &machine, int *code,int *color,int *priority,int *shadow);
VIDEO_START( blockhl );
-SCREEN_UPDATE( blockhl );
+SCREEN_UPDATE_IND16( blockhl );
diff --git a/src/mame/includes/blockout.h b/src/mame/includes/blockout.h
index 90b5caace0b..57e2c24a997 100644
--- a/src/mame/includes/blockout.h
+++ b/src/mame/includes/blockout.h
@@ -16,7 +16,7 @@ public:
UINT16 * m_paletteram;
/* video-related */
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
UINT16 m_color;
/* devices */
@@ -32,4 +32,4 @@ WRITE16_HANDLER( blockout_paletteram_w );
WRITE16_HANDLER( blockout_frontcolor_w );
VIDEO_START( blockout );
-SCREEN_UPDATE( blockout );
+SCREEN_UPDATE_IND16( blockout );
diff --git a/src/mame/includes/bloodbro.h b/src/mame/includes/bloodbro.h
index 47611f2171f..eb2d5ee7bc8 100644
--- a/src/mame/includes/bloodbro.h
+++ b/src/mame/includes/bloodbro.h
@@ -22,7 +22,7 @@ WRITE16_HANDLER( bloodbro_bgvideoram_w );
WRITE16_HANDLER( bloodbro_fgvideoram_w );
WRITE16_HANDLER( bloodbro_txvideoram_w );
-SCREEN_UPDATE( bloodbro );
-SCREEN_UPDATE( weststry );
-SCREEN_UPDATE( skysmash );
+SCREEN_UPDATE_IND16( bloodbro );
+SCREEN_UPDATE_IND16( weststry );
+SCREEN_UPDATE_IND16( skysmash );
VIDEO_START( bloodbro );
diff --git a/src/mame/includes/blstroid.h b/src/mame/includes/blstroid.h
index da2c2b01447..3ffad4e8745 100644
--- a/src/mame/includes/blstroid.h
+++ b/src/mame/includes/blstroid.h
@@ -19,6 +19,6 @@ public:
/*----------- defined in video/blstroid.c -----------*/
VIDEO_START( blstroid );
-SCREEN_UPDATE( blstroid );
+SCREEN_UPDATE_IND16( blstroid );
void blstroid_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/blueprnt.h b/src/mame/includes/blueprnt.h
index d1da1019dcc..62b1a0f527c 100644
--- a/src/mame/includes/blueprnt.h
+++ b/src/mame/includes/blueprnt.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( blueprnt_flipscreen_w );
PALETTE_INIT( blueprnt );
VIDEO_START( blueprnt );
-SCREEN_UPDATE( blueprnt );
+SCREEN_UPDATE_IND16( blueprnt );
diff --git a/src/mame/includes/bogeyman.h b/src/mame/includes/bogeyman.h
index 19d0e9b9af2..edd4f969d14 100644
--- a/src/mame/includes/bogeyman.h
+++ b/src/mame/includes/bogeyman.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER( bogeyman_paletteram_w );
PALETTE_INIT( bogeyman );
VIDEO_START( bogeyman );
-SCREEN_UPDATE( bogeyman );
+SCREEN_UPDATE_IND16( bogeyman );
diff --git a/src/mame/includes/bombjack.h b/src/mame/includes/bombjack.h
index 7e4bbe692ff..6805dfd848a 100644
--- a/src/mame/includes/bombjack.h
+++ b/src/mame/includes/bombjack.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( bombjack_background_w );
WRITE8_HANDLER( bombjack_flipscreen_w );
VIDEO_START( bombjack );
-SCREEN_UPDATE( bombjack );
+SCREEN_UPDATE_IND16( bombjack );
diff --git a/src/mame/includes/boogwing.h b/src/mame/includes/boogwing.h
index 88974ee340f..722d5a29aa1 100644
--- a/src/mame/includes/boogwing.h
+++ b/src/mame/includes/boogwing.h
@@ -40,5 +40,5 @@ public:
/*----------- defined in video/boogwing.c -----------*/
-SCREEN_UPDATE( boogwing );
+SCREEN_UPDATE_RGB32( boogwing );
diff --git a/src/mame/includes/bottom9.h b/src/mame/includes/bottom9.h
index 3f57d3f1f35..4587aa6e0c1 100644
--- a/src/mame/includes/bottom9.h
+++ b/src/mame/includes/bottom9.h
@@ -41,4 +41,4 @@ extern void bottom9_sprite_callback(running_machine &machine, int *code,int *col
extern void bottom9_zoom_callback(running_machine &machine, int *code,int *color,int *flags);
VIDEO_START( bottom9 );
-SCREEN_UPDATE( bottom9 );
+SCREEN_UPDATE_IND16( bottom9 );
diff --git a/src/mame/includes/brkthru.h b/src/mame/includes/brkthru.h
index 26228da1067..6c59b370142 100644
--- a/src/mame/includes/brkthru.h
+++ b/src/mame/includes/brkthru.h
@@ -41,4 +41,4 @@ WRITE8_HANDLER( brkthru_bgram_w );
WRITE8_HANDLER( brkthru_fgram_w );
VIDEO_START( brkthru );
PALETTE_INIT( brkthru );
-SCREEN_UPDATE( brkthru );
+SCREEN_UPDATE_IND16( brkthru );
diff --git a/src/mame/includes/bsktball.h b/src/mame/includes/bsktball.h
index 56fc66d0912..c64fe3a0096 100644
--- a/src/mame/includes/bsktball.h
+++ b/src/mame/includes/bsktball.h
@@ -67,6 +67,6 @@ DISCRETE_SOUND_EXTERN( bsktball );
/*----------- defined in video/bsktball.c -----------*/
VIDEO_START( bsktball );
-SCREEN_UPDATE( bsktball );
+SCREEN_UPDATE_IND16( bsktball );
WRITE8_HANDLER( bsktball_videoram_w );
diff --git a/src/mame/includes/btime.h b/src/mame/includes/btime.h
index aaee90cf5f6..598895a64c5 100644
--- a/src/mame/includes/btime.h
+++ b/src/mame/includes/btime.h
@@ -22,7 +22,7 @@ public:
size_t m_bnj_backgroundram_size;
/* video-related */
- bitmap_t *m_background_bitmap;
+ bitmap_ind16 *m_background_bitmap;
UINT8 m_btime_palette;
UINT8 m_bnj_scroll1;
UINT8 m_bnj_scroll2;
@@ -59,13 +59,13 @@ PALETTE_INIT( lnc );
VIDEO_START( btime );
VIDEO_START( bnj );
-SCREEN_UPDATE( btime );
-SCREEN_UPDATE( cookrace );
-SCREEN_UPDATE( bnj );
-SCREEN_UPDATE( lnc );
-SCREEN_UPDATE( zoar );
-SCREEN_UPDATE( disco );
-SCREEN_UPDATE( eggs );
+SCREEN_UPDATE_IND16( btime );
+SCREEN_UPDATE_IND16( cookrace );
+SCREEN_UPDATE_IND16( bnj );
+SCREEN_UPDATE_IND16( lnc );
+SCREEN_UPDATE_IND16( zoar );
+SCREEN_UPDATE_IND16( disco );
+SCREEN_UPDATE_IND16( eggs );
WRITE8_HANDLER( btime_paletteram_w );
WRITE8_HANDLER( bnj_background_w );
diff --git a/src/mame/includes/btoads.h b/src/mame/includes/btoads.h
index f482b21d1d3..564b14621f2 100644
--- a/src/mame/includes/btoads.h
+++ b/src/mame/includes/btoads.h
@@ -61,8 +61,8 @@ public:
static void static_to_shiftreg(address_space *space, UINT32 address, UINT16 *shiftreg) { space->machine().driver_data<btoads_state>()->to_shiftreg(space, address, shiftreg); }
void from_shiftreg(address_space *space, UINT32 address, UINT16 *shiftreg);
static void static_from_shiftreg(address_space *space, UINT32 address, UINT16 *shiftreg) { space->machine().driver_data<btoads_state>()->from_shiftreg(space, address, shiftreg); }
- void scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
- static void static_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params) { screen.machine().driver_data<btoads_state>()->scanline_update(screen, bitmap, scanline, params); }
+ void scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params);
+ static void static_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params) { screen.machine().driver_data<btoads_state>()->scanline_update(screen, bitmap, scanline, params); }
protected:
// device overrides
diff --git a/src/mame/includes/bublbobl.h b/src/mame/includes/bublbobl.h
index 0e1311e75b9..cec0a6db771 100644
--- a/src/mame/includes/bublbobl.h
+++ b/src/mame/includes/bublbobl.h
@@ -107,4 +107,4 @@ WRITE8_HANDLER( bublbobl_68705_ddr_b_w );
/*----------- defined in video/bublbobl.c -----------*/
-SCREEN_UPDATE( bublbobl );
+SCREEN_UPDATE_IND16( bublbobl );
diff --git a/src/mame/includes/buggychl.h b/src/mame/includes/buggychl.h
index f42f9623c8f..2c8e6fe915f 100644
--- a/src/mame/includes/buggychl.h
+++ b/src/mame/includes/buggychl.h
@@ -18,8 +18,8 @@ public:
size_t m_spriteram_size;
/* video-related */
- bitmap_t *m_tmp_bitmap1;
- bitmap_t *m_tmp_bitmap2;
+ bitmap_ind16 m_tmp_bitmap1;
+ bitmap_ind16 m_tmp_bitmap2;
tilemap_t *m_bg_tilemap;
int m_sl_bank;
int m_bg_on;
@@ -47,4 +47,4 @@ WRITE8_HANDLER( buggychl_bg_scrollx_w );
PALETTE_INIT( buggychl );
VIDEO_START( buggychl );
-SCREEN_UPDATE( buggychl );
+SCREEN_UPDATE_IND16( buggychl );
diff --git a/src/mame/includes/bwing.h b/src/mame/includes/bwing.h
index 00ac870580d..5d7bcec9770 100644
--- a/src/mame/includes/bwing.h
+++ b/src/mame/includes/bwing.h
@@ -61,4 +61,4 @@ WRITE8_HANDLER( bwing_scrollram_w );
READ8_HANDLER( bwing_scrollram_r );
VIDEO_START( bwing );
-SCREEN_UPDATE( bwing );
+SCREEN_UPDATE_IND16( bwing );
diff --git a/src/mame/includes/cabal.h b/src/mame/includes/cabal.h
index f1e54cadf35..a41e572d145 100644
--- a/src/mame/includes/cabal.h
+++ b/src/mame/includes/cabal.h
@@ -19,7 +19,7 @@ public:
/*----------- defined in video/cabal.c -----------*/
extern VIDEO_START( cabal );
-extern SCREEN_UPDATE( cabal );
+extern SCREEN_UPDATE_IND16( cabal );
WRITE16_HANDLER( cabal_flipscreen_w );
WRITE16_HANDLER( cabal_background_videoram16_w );
WRITE16_HANDLER( cabal_text_videoram16_w );
diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h
index 53432d5e709..d36028aea3e 100644
--- a/src/mame/includes/calomega.h
+++ b/src/mame/includes/calomega.h
@@ -20,4 +20,4 @@ WRITE8_HANDLER( calomega_videoram_w );
WRITE8_HANDLER( calomega_colorram_w );
PALETTE_INIT( calomega );
VIDEO_START( calomega );
-SCREEN_UPDATE( calomega );
+SCREEN_UPDATE_IND16( calomega );
diff --git a/src/mame/includes/canyon.h b/src/mame/includes/canyon.h
index edd03667471..0c13c274914 100644
--- a/src/mame/includes/canyon.h
+++ b/src/mame/includes/canyon.h
@@ -44,6 +44,6 @@ DISCRETE_SOUND_EXTERN( canyon );
/*----------- defined in video/canyon.c -----------*/
VIDEO_START( canyon );
-SCREEN_UPDATE( canyon );
+SCREEN_UPDATE_IND16( canyon );
WRITE8_HANDLER( canyon_videoram_w );
diff --git a/src/mame/includes/capbowl.h b/src/mame/includes/capbowl.h
index e32c8e7d267..e3eb0bf0205 100644
--- a/src/mame/includes/capbowl.h
+++ b/src/mame/includes/capbowl.h
@@ -31,7 +31,7 @@ public:
/*----------- defined in video/capbowl.c -----------*/
VIDEO_START( capbowl );
-SCREEN_UPDATE( capbowl );
+SCREEN_UPDATE_RGB32( capbowl );
WRITE8_HANDLER( bowlrama_blitter_w );
READ8_HANDLER( bowlrama_blitter_r );
diff --git a/src/mame/includes/carjmbre.h b/src/mame/includes/carjmbre.h
index bcdadd0047e..1319d14787e 100644
--- a/src/mame/includes/carjmbre.h
+++ b/src/mame/includes/carjmbre.h
@@ -34,6 +34,6 @@ WRITE8_HANDLER( carjmbre_videoram_w );
PALETTE_INIT( carjmbre );
VIDEO_START( carjmbre );
-SCREEN_UPDATE( carjmbre );
+SCREEN_UPDATE_IND16( carjmbre );
diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h
index 4fccb68b044..4bf5d45e953 100644
--- a/src/mame/includes/carpolo.h
+++ b/src/mame/includes/carpolo.h
@@ -40,11 +40,11 @@ public:
ttl7474_device *m_ttl7474_1c_2;
ttl7474_device *m_ttl7474_1a_1;
ttl7474_device *m_ttl7474_1a_2;
- bitmap_t *m_sprite_sprite_collision_bitmap1;
- bitmap_t *m_sprite_sprite_collision_bitmap2;
- bitmap_t *m_sprite_goal_collision_bitmap1;
- bitmap_t *m_sprite_goal_collision_bitmap2;
- bitmap_t *m_sprite_border_collision_bitmap;
+ bitmap_ind16 *m_sprite_sprite_collision_bitmap1;
+ bitmap_ind16 *m_sprite_sprite_collision_bitmap2;
+ bitmap_ind16 *m_sprite_goal_collision_bitmap1;
+ bitmap_ind16 *m_sprite_goal_collision_bitmap2;
+ bitmap_ind16 *m_sprite_border_collision_bitmap;
};
@@ -93,5 +93,5 @@ void carpolo_generate_car_border_interrupt(running_machine &machine, int car, in
PALETTE_INIT( carpolo );
VIDEO_START( carpolo );
-SCREEN_UPDATE( carpolo );
+SCREEN_UPDATE_IND16( carpolo );
SCREEN_EOF( carpolo );
diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h
index 46737b4c2e3..21c69e80073 100644
--- a/src/mame/includes/cave.h
+++ b/src/mame/includes/cave.h
@@ -58,7 +58,7 @@ public:
int m_tiledim[4];
int m_old_tiledim[4];
- bitmap_t *m_sprite_zbuf;
+ bitmap_ind8 m_sprite_zbuf;
UINT16 m_sprite_zbuf_baseval;
int m_num_sprites;
@@ -138,7 +138,7 @@ VIDEO_START( cave_4_layers );
VIDEO_START( sailormn_3_layers );
-SCREEN_UPDATE( cave );
+SCREEN_UPDATE_IND16( cave );
void cave_get_sprite_info(running_machine &machine);
void sailormn_tilebank_w(running_machine &machine, int bank);
diff --git a/src/mame/includes/cbasebal.h b/src/mame/includes/cbasebal.h
index 14110a63417..042fc64a67b 100644
--- a/src/mame/includes/cbasebal.h
+++ b/src/mame/includes/cbasebal.h
@@ -44,4 +44,4 @@ WRITE8_HANDLER( cbasebal_scrollx_w );
WRITE8_HANDLER( cbasebal_scrolly_w );
VIDEO_START( cbasebal );
-SCREEN_UPDATE( cbasebal );
+SCREEN_UPDATE_IND16( cbasebal );
diff --git a/src/mame/includes/cbuster.h b/src/mame/includes/cbuster.h
index c400d1bd75a..901a34efc61 100644
--- a/src/mame/includes/cbuster.h
+++ b/src/mame/includes/cbuster.h
@@ -38,4 +38,4 @@ WRITE16_HANDLER( twocrude_palette_24bit_rg_w );
WRITE16_HANDLER( twocrude_palette_24bit_b_w );
VIDEO_START( twocrude );
-SCREEN_UPDATE( twocrude );
+SCREEN_UPDATE_RGB32( twocrude );
diff --git a/src/mame/includes/ccastles.h b/src/mame/includes/ccastles.h
index ce3e10c692b..11283c99406 100644
--- a/src/mame/includes/ccastles.h
+++ b/src/mame/includes/ccastles.h
@@ -24,7 +24,7 @@ public:
const UINT8 *m_syncprom;
const UINT8 *m_wpprom;
const UINT8 *m_priprom;
- bitmap_t *m_spritebitmap;
+ bitmap_ind16 m_spritebitmap;
double m_rweights[3];
double m_gweights[3];
double m_bweights[3];
@@ -51,7 +51,7 @@ public:
VIDEO_START( ccastles );
-SCREEN_UPDATE( ccastles );
+SCREEN_UPDATE_IND16( ccastles );
WRITE8_HANDLER( ccastles_hscroll_w );
WRITE8_HANDLER( ccastles_vscroll_w );
diff --git a/src/mame/includes/cclimber.h b/src/mame/includes/cclimber.h
index 9c373798471..633daa7e4d9 100644
--- a/src/mame/includes/cclimber.h
+++ b/src/mame/includes/cclimber.h
@@ -41,15 +41,15 @@ WRITE8_HANDLER( cannonb_flip_screen_w );
PALETTE_INIT( cclimber );
VIDEO_START( cclimber );
-SCREEN_UPDATE( cclimber );
+SCREEN_UPDATE_IND16( cclimber );
PALETTE_INIT( swimmer );
VIDEO_START( swimmer );
-SCREEN_UPDATE( swimmer );
+SCREEN_UPDATE_IND16( swimmer );
PALETTE_INIT( yamato );
-SCREEN_UPDATE( yamato );
+SCREEN_UPDATE_IND16( yamato );
PALETTE_INIT( toprollr );
VIDEO_START( toprollr );
-SCREEN_UPDATE( toprollr );
+SCREEN_UPDATE_IND16( toprollr );
diff --git a/src/mame/includes/cdi.h b/src/mame/includes/cdi.h
index e5e7388af6e..ab64535b863 100644
--- a/src/mame/includes/cdi.h
+++ b/src/mame/includes/cdi.h
@@ -25,7 +25,7 @@ public:
UINT8 m_timer_set;
emu_timer *m_test_timer;
- bitmap_t* m_lcdbitmap;
+ bitmap_rgb32 m_lcdbitmap;
scc68070_regs_t m_scc68070_regs;
mcd212_regs_t m_mcd212_regs;
mcd212_ab_t m_mcd212_ab;
diff --git a/src/mame/includes/centiped.h b/src/mame/includes/centiped.h
index 11509461458..0ebe176c222 100644
--- a/src/mame/includes/centiped.h
+++ b/src/mame/includes/centiped.h
@@ -34,10 +34,10 @@ VIDEO_START( milliped );
VIDEO_START( warlords );
VIDEO_START( bullsdrt );
-SCREEN_UPDATE( centiped );
-SCREEN_UPDATE( milliped );
-SCREEN_UPDATE( warlords );
-SCREEN_UPDATE( bullsdrt );
+SCREEN_UPDATE_IND16( centiped );
+SCREEN_UPDATE_IND16( milliped );
+SCREEN_UPDATE_IND16( warlords );
+SCREEN_UPDATE_IND16( bullsdrt );
WRITE8_HANDLER( centiped_paletteram_w );
WRITE8_HANDLER( milliped_paletteram_w );
diff --git a/src/mame/includes/chaknpop.h b/src/mame/includes/chaknpop.h
index 86f627c9c72..89fa25ae523 100644
--- a/src/mame/includes/chaknpop.h
+++ b/src/mame/includes/chaknpop.h
@@ -49,7 +49,7 @@ WRITE8_HANDLER( chaknpop_mcu_port_c_w );
PALETTE_INIT( chaknpop );
VIDEO_START( chaknpop );
-SCREEN_UPDATE( chaknpop );
+SCREEN_UPDATE_IND16( chaknpop );
READ8_HANDLER( chaknpop_gfxmode_r );
WRITE8_HANDLER( chaknpop_gfxmode_w );
diff --git a/src/mame/includes/champbas.h b/src/mame/includes/champbas.h
index bb7e2d61f13..2ce6b66084c 100644
--- a/src/mame/includes/champbas.h
+++ b/src/mame/includes/champbas.h
@@ -48,7 +48,7 @@ PALETTE_INIT( champbas );
PALETTE_INIT( exctsccr );
VIDEO_START( champbas );
VIDEO_START( exctsccr );
-SCREEN_UPDATE( champbas );
-SCREEN_UPDATE( exctsccr );
+SCREEN_UPDATE_IND16( champbas );
+SCREEN_UPDATE_IND16( exctsccr );
diff --git a/src/mame/includes/changela.h b/src/mame/includes/changela.h
index 1a06bb8bdcb..a5f15271291 100644
--- a/src/mame/includes/changela.h
+++ b/src/mame/includes/changela.h
@@ -12,10 +12,10 @@ public:
UINT8 * m_spriteram;
/* video-related */
- bitmap_t *m_obj0_bitmap;
- bitmap_t *m_river_bitmap;
- bitmap_t *m_tree0_bitmap;
- bitmap_t *m_tree1_bitmap;
+ bitmap_ind16 m_obj0_bitmap;
+ bitmap_ind16 m_river_bitmap;
+ bitmap_ind16 m_tree0_bitmap;
+ bitmap_ind16 m_tree1_bitmap;
UINT8* m_tree_ram;
UINT8* m_memory_devices;
UINT32 m_mem_dev_selected; /* an offset within memory_devices area */
@@ -60,7 +60,7 @@ public:
/*----------- defined in video/changela.c -----------*/
VIDEO_START( changela );
-SCREEN_UPDATE( changela );
+SCREEN_UPDATE_IND16( changela );
WRITE8_HANDLER( changela_colors_w );
WRITE8_HANDLER( changela_mem_device_select_w );
diff --git a/src/mame/includes/cheekyms.h b/src/mame/includes/cheekyms.h
index 5b4c1e2ae84..b6e290daaf7 100644
--- a/src/mame/includes/cheekyms.h
+++ b/src/mame/includes/cheekyms.h
@@ -18,7 +18,7 @@ public:
/* video-related */
tilemap_t *m_cm_tilemap;
- bitmap_t *m_bitmap_buffer;
+ bitmap_ind16 *m_bitmap_buffer;
/* devices */
device_t *m_maincpu;
@@ -32,6 +32,6 @@ public:
PALETTE_INIT( cheekyms );
VIDEO_START( cheekyms );
-SCREEN_UPDATE( cheekyms );
+SCREEN_UPDATE_IND16( cheekyms );
WRITE8_HANDLER( cheekyms_port_40_w );
WRITE8_HANDLER( cheekyms_port_80_w );
diff --git a/src/mame/includes/chqflag.h b/src/mame/includes/chqflag.h
index 86f684bdf2e..425abb16850 100644
--- a/src/mame/includes/chqflag.h
+++ b/src/mame/includes/chqflag.h
@@ -42,4 +42,4 @@ extern void chqflag_zoom_callback_0(running_machine &machine, int *code,int *col
extern void chqflag_zoom_callback_1(running_machine &machine, int *code,int *color,int *flags);
VIDEO_START( chqflag );
-SCREEN_UPDATE( chqflag );
+SCREEN_UPDATE_IND16( chqflag );
diff --git a/src/mame/includes/cidelsa.h b/src/mame/includes/cidelsa.h
index 5a067a7509f..3e129082773 100644
--- a/src/mame/includes/cidelsa.h
+++ b/src/mame/includes/cidelsa.h
@@ -51,7 +51,6 @@ public:
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect) { m_vis->update_screen(bitmap, cliprect); return false; }
DECLARE_WRITE8_MEMBER( cdp1869_w );
DECLARE_WRITE8_MEMBER( destryer_out1_w );
diff --git a/src/mame/includes/cinemat.h b/src/mame/includes/cinemat.h
index 886103501c8..d1bba117a8a 100644
--- a/src/mame/includes/cinemat.h
+++ b/src/mame/includes/cinemat.h
@@ -76,6 +76,6 @@ VIDEO_START( cinemat_16level );
VIDEO_START( cinemat_64level );
VIDEO_START( cinemat_color );
VIDEO_START( cinemat_qb3color );
-SCREEN_UPDATE( cinemat );
+SCREEN_UPDATE_RGB32( cinemat );
-SCREEN_UPDATE( spacewar );
+SCREEN_UPDATE_RGB32( spacewar );
diff --git a/src/mame/includes/circus.h b/src/mame/includes/circus.h
index cf3ff4b92c5..c0153bb311f 100644
--- a/src/mame/includes/circus.h
+++ b/src/mame/includes/circus.h
@@ -46,7 +46,7 @@ extern WRITE8_HANDLER( circus_clown_y_w );
extern WRITE8_HANDLER( circus_videoram_w );
extern VIDEO_START( circus );
-extern SCREEN_UPDATE( crash );
-extern SCREEN_UPDATE( circus );
-extern SCREEN_UPDATE( robotbwl );
-extern SCREEN_UPDATE( ripcord );
+extern SCREEN_UPDATE_IND16( crash );
+extern SCREEN_UPDATE_IND16( circus );
+extern SCREEN_UPDATE_IND16( robotbwl );
+extern SCREEN_UPDATE_IND16( ripcord );
diff --git a/src/mame/includes/circusc.h b/src/mame/includes/circusc.h
index 8d06942f846..5f815bce1c5 100644
--- a/src/mame/includes/circusc.h
+++ b/src/mame/includes/circusc.h
@@ -44,4 +44,4 @@ WRITE8_HANDLER( circusc_colorram_w );
VIDEO_START( circusc );
WRITE8_HANDLER( circusc_flipscreen_w );
PALETTE_INIT( circusc );
-SCREEN_UPDATE( circusc );
+SCREEN_UPDATE_IND16( circusc );
diff --git a/src/mame/includes/cischeat.h b/src/mame/includes/cischeat.h
index 4ef427b52d8..500ff11cc3c 100644
--- a/src/mame/includes/cischeat.h
+++ b/src/mame/includes/cischeat.h
@@ -60,7 +60,7 @@ VIDEO_START( bigrun );
VIDEO_START( cischeat );
VIDEO_START( f1gpstar );
-SCREEN_UPDATE( bigrun );
-SCREEN_UPDATE( cischeat );
-SCREEN_UPDATE( f1gpstar );
-SCREEN_UPDATE( scudhamm );
+SCREEN_UPDATE_IND16( bigrun );
+SCREEN_UPDATE_IND16( cischeat );
+SCREEN_UPDATE_IND16( f1gpstar );
+SCREEN_UPDATE_IND16( scudhamm );
diff --git a/src/mame/includes/citycon.h b/src/mame/includes/citycon.h
index ae702ae517f..5df49e5b11e 100644
--- a/src/mame/includes/citycon.h
+++ b/src/mame/includes/citycon.h
@@ -34,5 +34,5 @@ WRITE8_HANDLER( citycon_videoram_w );
WRITE8_HANDLER( citycon_linecolor_w );
WRITE8_HANDLER( citycon_background_w );
-SCREEN_UPDATE( citycon );
+SCREEN_UPDATE_IND16( citycon );
VIDEO_START( citycon );
diff --git a/src/mame/includes/cloak.h b/src/mame/includes/cloak.h
index 6f9e88e929e..faa1f4f4e34 100644
--- a/src/mame/includes/cloak.h
+++ b/src/mame/includes/cloak.h
@@ -36,4 +36,4 @@ WRITE8_HANDLER( graph_processor_w );
WRITE8_HANDLER( cloak_clearbmp_w );
VIDEO_START( cloak );
-SCREEN_UPDATE( cloak );
+SCREEN_UPDATE_IND16( cloak );
diff --git a/src/mame/includes/cloud9.h b/src/mame/includes/cloud9.h
index 91307065362..065e0a9a65d 100644
--- a/src/mame/includes/cloud9.h
+++ b/src/mame/includes/cloud9.h
@@ -24,7 +24,7 @@ public:
const UINT8 *m_syncprom;
const UINT8 *m_wpprom;
const UINT8 *m_priprom;
- bitmap_t *m_spritebitmap;
+ bitmap_ind16 m_spritebitmap;
double m_rweights[3];
double m_gweights[3];
double m_bweights[3];
@@ -46,7 +46,7 @@ public:
/*----------- defined in video/cloud9.c -----------*/
VIDEO_START( cloud9 );
-SCREEN_UPDATE( cloud9 );
+SCREEN_UPDATE_IND16( cloud9 );
WRITE8_HANDLER( cloud9_video_control_w );
diff --git a/src/mame/includes/clshroad.h b/src/mame/includes/clshroad.h
index 5f0ce83adf1..19618d85729 100644
--- a/src/mame/includes/clshroad.h
+++ b/src/mame/includes/clshroad.h
@@ -25,4 +25,4 @@ PALETTE_INIT( firebatl );
PALETTE_INIT( clshroad );
VIDEO_START( firebatl );
VIDEO_START( clshroad );
-SCREEN_UPDATE( clshroad );
+SCREEN_UPDATE_IND16( clshroad );
diff --git a/src/mame/includes/cninja.h b/src/mame/includes/cninja.h
index a245596fa0e..20e9e49091d 100644
--- a/src/mame/includes/cninja.h
+++ b/src/mame/includes/cninja.h
@@ -47,8 +47,8 @@ public:
VIDEO_START( stoneage );
VIDEO_START( mutantf );
-SCREEN_UPDATE( cninja );
-SCREEN_UPDATE( cninjabl );
-SCREEN_UPDATE( edrandy );
-SCREEN_UPDATE( robocop2 );
-SCREEN_UPDATE( mutantf );
+SCREEN_UPDATE_IND16( cninja );
+SCREEN_UPDATE_IND16( cninjabl );
+SCREEN_UPDATE_IND16( edrandy );
+SCREEN_UPDATE_IND16( robocop2 );
+SCREEN_UPDATE_RGB32( mutantf );
diff --git a/src/mame/includes/combatsc.h b/src/mame/includes/combatsc.h
index 954948082a5..5f2c08cf0b6 100644
--- a/src/mame/includes/combatsc.h
+++ b/src/mame/includes/combatsc.h
@@ -57,5 +57,5 @@ PALETTE_INIT( combatsc );
PALETTE_INIT( combatscb );
VIDEO_START( combatsc );
VIDEO_START( combatscb );
-SCREEN_UPDATE( combatscb );
-SCREEN_UPDATE( combatsc );
+SCREEN_UPDATE_IND16( combatscb );
+SCREEN_UPDATE_IND16( combatsc );
diff --git a/src/mame/includes/commando.h b/src/mame/includes/commando.h
index dc097aa9fba..3d6571d7c33 100644
--- a/src/mame/includes/commando.h
+++ b/src/mame/includes/commando.h
@@ -40,5 +40,5 @@ WRITE8_HANDLER( commando_scrolly_w );
WRITE8_HANDLER( commando_c804_w );
VIDEO_START( commando );
-SCREEN_UPDATE( commando );
+SCREEN_UPDATE_IND16( commando );
SCREEN_EOF( commando );
diff --git a/src/mame/includes/compgolf.h b/src/mame/includes/compgolf.h
index ea76a80fc03..5119c5dda90 100644
--- a/src/mame/includes/compgolf.h
+++ b/src/mame/includes/compgolf.h
@@ -34,4 +34,4 @@ WRITE8_HANDLER( compgolf_video_w );
WRITE8_HANDLER( compgolf_back_w );
PALETTE_INIT ( compgolf );
VIDEO_START ( compgolf );
-SCREEN_UPDATE( compgolf );
+SCREEN_UPDATE_IND16( compgolf );
diff --git a/src/mame/includes/contra.h b/src/mame/includes/contra.h
index c0278299ed6..b63847157b4 100644
--- a/src/mame/includes/contra.h
+++ b/src/mame/includes/contra.h
@@ -52,5 +52,5 @@ WRITE8_HANDLER( contra_text_cram_w );
WRITE8_HANDLER( contra_K007121_ctrl_0_w );
WRITE8_HANDLER( contra_K007121_ctrl_1_w );
-SCREEN_UPDATE( contra );
+SCREEN_UPDATE_IND16( contra );
VIDEO_START( contra );
diff --git a/src/mame/includes/cop01.h b/src/mame/includes/cop01.h
index 679c0ba306a..1b69fe21b81 100644
--- a/src/mame/includes/cop01.h
+++ b/src/mame/includes/cop01.h
@@ -37,7 +37,7 @@ public:
PALETTE_INIT( cop01 );
VIDEO_START( cop01 );
-SCREEN_UPDATE( cop01 );
+SCREEN_UPDATE_IND16( cop01 );
WRITE8_HANDLER( cop01_background_w );
WRITE8_HANDLER( cop01_foreground_w );
diff --git a/src/mame/includes/copsnrob.h b/src/mame/includes/copsnrob.h
index 428007e5398..5bd860038cf 100644
--- a/src/mame/includes/copsnrob.h
+++ b/src/mame/includes/copsnrob.h
@@ -35,7 +35,7 @@ READ8_HANDLER( copsnrob_gun_position_r );
/*----------- defined in video/copsnrob.c -----------*/
-SCREEN_UPDATE( copsnrob );
+SCREEN_UPDATE_IND16( copsnrob );
/*----------- defined in audio/copsnrob.c -----------*/
diff --git a/src/mame/includes/cosmic.h b/src/mame/includes/cosmic.h
index 13a7f93acde..72c42bc99e3 100644
--- a/src/mame/includes/cosmic.h
+++ b/src/mame/includes/cosmic.h
@@ -52,9 +52,9 @@ PALETTE_INIT( cosmicg );
PALETTE_INIT( magspot );
PALETTE_INIT( nomnlnd );
-SCREEN_UPDATE( panic );
-SCREEN_UPDATE( magspot );
-SCREEN_UPDATE( devzone );
-SCREEN_UPDATE( cosmica );
-SCREEN_UPDATE( cosmicg );
-SCREEN_UPDATE( nomnlnd );
+SCREEN_UPDATE_IND16( panic );
+SCREEN_UPDATE_IND16( magspot );
+SCREEN_UPDATE_IND16( devzone );
+SCREEN_UPDATE_IND16( cosmica );
+SCREEN_UPDATE_IND16( cosmicg );
+SCREEN_UPDATE_IND16( nomnlnd );
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index 4bfceffdee6..a7703f519d2 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -174,7 +174,7 @@ WRITE16_HANDLER( cps2_objram2_w );
VIDEO_START( cps1 );
VIDEO_START( cps2 );
-SCREEN_UPDATE( cps1 );
+SCREEN_UPDATE_IND16( cps1 );
SCREEN_EOF( cps1 );
void cps1_get_video_base(running_machine &machine);
diff --git a/src/mame/includes/cps3.h b/src/mame/includes/cps3.h
index cec60caefce..d5ee0ecb56a 100644
--- a/src/mame/includes/cps3.h
+++ b/src/mame/includes/cps3.h
@@ -34,7 +34,7 @@ public:
UINT32 m_ss_bank_base;
UINT32 m_screenwidth;
UINT32* m_mame_colours;
- bitmap_t *m_renderbuffer_bitmap;
+ bitmap_rgb32 m_renderbuffer_bitmap;
rectangle m_renderbuffer_clip;
UINT8* m_user4region;
UINT32 m_key1;
diff --git a/src/mame/includes/crbaloon.h b/src/mame/includes/crbaloon.h
index 783367e224c..3cd6ff5088c 100644
--- a/src/mame/includes/crbaloon.h
+++ b/src/mame/includes/crbaloon.h
@@ -41,7 +41,7 @@ MACHINE_CONFIG_EXTERN( crbaloon_audio );
PALETTE_INIT( crbaloon );
VIDEO_START( crbaloon );
-SCREEN_UPDATE( crbaloon );
+SCREEN_UPDATE_IND16( crbaloon );
WRITE8_HANDLER( crbaloon_videoram_w );
WRITE8_HANDLER( crbaloon_colorram_w );
diff --git a/src/mame/includes/crimfght.h b/src/mame/includes/crimfght.h
index 04b5c87e546..91a45d81ffd 100644
--- a/src/mame/includes/crimfght.h
+++ b/src/mame/includes/crimfght.h
@@ -31,4 +31,4 @@ extern void crimfght_tile_callback(running_machine &machine, int layer,int bank,
extern void crimfght_sprite_callback(running_machine &machine, int *code,int *color,int *priority,int *shadow);
VIDEO_START( crimfght );
-SCREEN_UPDATE( crimfght );
+SCREEN_UPDATE_IND16( crimfght );
diff --git a/src/mame/includes/crospang.h b/src/mame/includes/crospang.h
index 7e15469a739..98b728503a2 100644
--- a/src/mame/includes/crospang.h
+++ b/src/mame/includes/crospang.h
@@ -32,7 +32,7 @@ public:
/*----------- defined in video/crospang.c -----------*/
VIDEO_START( crospang );
-SCREEN_UPDATE( crospang );
+SCREEN_UPDATE_IND16( crospang );
WRITE16_HANDLER ( crospang_fg_scrolly_w );
WRITE16_HANDLER ( crospang_bg_scrolly_w );
diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h
index 65cb8bc3bfc..bc1c88e575a 100644
--- a/src/mame/includes/crshrace.h
+++ b/src/mame/includes/crshrace.h
@@ -36,4 +36,4 @@ WRITE16_HANDLER( crshrace_gfxctrl_w );
VIDEO_START( crshrace );
SCREEN_EOF( crshrace );
-SCREEN_UPDATE( crshrace );
+SCREEN_UPDATE_IND16( crshrace );
diff --git a/src/mame/includes/cvs.h b/src/mame/includes/cvs.h
index 34eee7bb9ee..ad00ec917bf 100644
--- a/src/mame/includes/cvs.h
+++ b/src/mame/includes/cvs.h
@@ -32,9 +32,9 @@ public:
/* video-related */
struct cvs_star m_stars[CVS_MAX_STARS];
- bitmap_t *m_collision_background;
- bitmap_t *m_background_bitmap;
- bitmap_t *m_scrolled_collision_background;
+ bitmap_ind16 m_collision_background;
+ bitmap_ind16 m_background_bitmap;
+ bitmap_ind16 m_scrolled_collision_background;
int m_collision_register;
int m_total_stars;
int m_stars_on;
@@ -109,11 +109,11 @@ READ8_HANDLER( cvs_collision_clear );
void cvs_scroll_stars(running_machine &machine);
PALETTE_INIT( cvs );
-SCREEN_UPDATE( cvs );
+SCREEN_UPDATE_IND16( cvs );
VIDEO_START( cvs );
/*----------- defined in video/quasar.c -----------*/
PALETTE_INIT( quasar );
-SCREEN_UPDATE( quasar );
+SCREEN_UPDATE_IND16( quasar );
VIDEO_START( quasar );
diff --git a/src/mame/includes/cyberbal.h b/src/mame/includes/cyberbal.h
index 7cc0f6f1c37..2b02ce43e22 100644
--- a/src/mame/includes/cyberbal.h
+++ b/src/mame/includes/cyberbal.h
@@ -57,8 +57,8 @@ WRITE16_HANDLER( cyberbal_paletteram_1_w );
VIDEO_START( cyberbal );
VIDEO_START( cyberbal2p );
-SCREEN_UPDATE( cyberbal_left );
-SCREEN_UPDATE( cyberbal_right );
-SCREEN_UPDATE( cyberbal2p );
+SCREEN_UPDATE_IND16( cyberbal_left );
+SCREEN_UPDATE_IND16( cyberbal_right );
+SCREEN_UPDATE_IND16( cyberbal2p );
void cyberbal_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/darius.h b/src/mame/includes/darius.h
index c4c62eb0ade..dd70d3053db 100644
--- a/src/mame/includes/darius.h
+++ b/src/mame/includes/darius.h
@@ -69,6 +69,6 @@ public:
WRITE16_HANDLER( darius_fg_layer_w );
VIDEO_START( darius );
-SCREEN_UPDATE( darius_left );
-SCREEN_UPDATE( darius_middle );
-SCREEN_UPDATE( darius_right );
+SCREEN_UPDATE_IND16( darius_left );
+SCREEN_UPDATE_IND16( darius_middle );
+SCREEN_UPDATE_IND16( darius_right );
diff --git a/src/mame/includes/darkmist.h b/src/mame/includes/darkmist.h
index eaed9b55bbd..22979a51955 100644
--- a/src/mame/includes/darkmist.h
+++ b/src/mame/includes/darkmist.h
@@ -20,6 +20,6 @@ public:
/*----------- defined in video/darkmist.c -----------*/
VIDEO_START( darkmist );
-SCREEN_UPDATE( darkmist );
+SCREEN_UPDATE_IND16( darkmist );
PALETTE_INIT( darkmist );
diff --git a/src/mame/includes/darkseal.h b/src/mame/includes/darkseal.h
index f6a04be131f..2de441b4c2f 100644
--- a/src/mame/includes/darkseal.h
+++ b/src/mame/includes/darkseal.h
@@ -24,7 +24,7 @@ public:
/*----------- defined in video/darkseal.c -----------*/
VIDEO_START( darkseal );
-SCREEN_UPDATE( darkseal );
+SCREEN_UPDATE_IND16( darkseal );
WRITE16_HANDLER( darkseal_palette_24bit_rg_w );
WRITE16_HANDLER( darkseal_palette_24bit_b_w );
diff --git a/src/mame/includes/dassault.h b/src/mame/includes/dassault.h
index f4a5ebeab6f..59b5146e949 100644
--- a/src/mame/includes/dassault.h
+++ b/src/mame/includes/dassault.h
@@ -42,4 +42,4 @@ public:
/*----------- defined in video/dassault.c -----------*/
-SCREEN_UPDATE( dassault );
+SCREEN_UPDATE_RGB32( dassault );
diff --git a/src/mame/includes/dbz.h b/src/mame/includes/dbz.h
index db0e4a9a1aa..e7226a7a10d 100644
--- a/src/mame/includes/dbz.h
+++ b/src/mame/includes/dbz.h
@@ -45,4 +45,4 @@ WRITE16_HANDLER(dbz_bg1_videoram_w);
WRITE16_HANDLER(dbz_bg2_videoram_w);
VIDEO_START(dbz);
-SCREEN_UPDATE(dbz);
+SCREEN_UPDATE_IND16(dbz);
diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h
index c00938053a6..edb8c34b550 100644
--- a/src/mame/includes/dc.h
+++ b/src/mame/includes/dc.h
@@ -276,7 +276,7 @@ WRITE32_HANDLER( elan_regs_w );
WRITE64_HANDLER( ta_fifo_poly_w );
WRITE64_HANDLER( ta_fifo_yuv_w );
VIDEO_START(dc);
-SCREEN_UPDATE(dc);
+SCREEN_UPDATE_RGB32(dc);
/*--------------- CORE registers --------------*/
#define PVRID ((0x005f8000-0x005f8000)/4)
diff --git a/src/mame/includes/dcheese.h b/src/mame/includes/dcheese.h
index d1b89633ab6..b0e489b054a 100644
--- a/src/mame/includes/dcheese.h
+++ b/src/mame/includes/dcheese.h
@@ -17,7 +17,7 @@ public:
UINT16 m_blitter_yparam[16];
UINT16 m_blitter_vidparam[32];
- bitmap_t *m_dstbitmap;
+ bitmap_ind16 *m_dstbitmap;
emu_timer *m_blitter_timer;
/* misc */
@@ -42,7 +42,7 @@ void dcheese_signal_irq(running_machine &machine, int which);
PALETTE_INIT( dcheese );
VIDEO_START( dcheese );
-SCREEN_UPDATE( dcheese );
+SCREEN_UPDATE_IND16( dcheese );
WRITE16_HANDLER( madmax_blitter_color_w );
WRITE16_HANDLER( madmax_blitter_xparam_w );
diff --git a/src/mame/includes/dcon.h b/src/mame/includes/dcon.h
index 65d65d83a53..e4b6d7f30ef 100644
--- a/src/mame/includes/dcon.h
+++ b/src/mame/includes/dcon.h
@@ -32,5 +32,5 @@ WRITE16_HANDLER( dcon_control_w );
READ16_HANDLER( dcon_control_r );
VIDEO_START( dcon );
-SCREEN_UPDATE( dcon );
-SCREEN_UPDATE( sdgndmps );
+SCREEN_UPDATE_IND16( dcon );
+SCREEN_UPDATE_IND16( sdgndmps );
diff --git a/src/mame/includes/dday.h b/src/mame/includes/dday.h
index 15d779d1854..ba392a0fbfc 100644
--- a/src/mame/includes/dday.h
+++ b/src/mame/includes/dday.h
@@ -22,7 +22,7 @@ public:
tilemap_t *m_bg_tilemap;
tilemap_t *m_text_tilemap;
tilemap_t *m_sl_tilemap;
- bitmap_t *m_main_bitmap;
+ bitmap_ind16 m_main_bitmap;
int m_control;
int m_sl_image;
int m_sl_enable;
@@ -37,7 +37,7 @@ public:
PALETTE_INIT( dday );
VIDEO_START( dday );
-SCREEN_UPDATE( dday );
+SCREEN_UPDATE_IND16( dday );
WRITE8_HANDLER( dday_bgvideoram_w );
WRITE8_HANDLER( dday_fgvideoram_w );
diff --git a/src/mame/includes/ddragon.h b/src/mame/includes/ddragon.h
index c4a48cff9f9..1480cdaa19f 100644
--- a/src/mame/includes/ddragon.h
+++ b/src/mame/includes/ddragon.h
@@ -68,5 +68,5 @@ WRITE8_HANDLER( ddragon_fgvideoram_w );
VIDEO_START( chinagat );
VIDEO_START( ddragon );
-SCREEN_UPDATE( ddragon );
+SCREEN_UPDATE_IND16( ddragon );
diff --git a/src/mame/includes/ddragon3.h b/src/mame/includes/ddragon3.h
index a1b2c25c426..5ca7e2b0f2b 100644
--- a/src/mame/includes/ddragon3.h
+++ b/src/mame/includes/ddragon3.h
@@ -44,5 +44,5 @@ extern WRITE16_HANDLER( ddragon3_scroll_w );
extern READ16_HANDLER( ddragon3_scroll_r );
extern VIDEO_START( ddragon3 );
-extern SCREEN_UPDATE( ddragon3 );
-extern SCREEN_UPDATE( ctribe );
+extern SCREEN_UPDATE_IND16( ddragon3 );
+extern SCREEN_UPDATE_IND16( ctribe );
diff --git a/src/mame/includes/ddribble.h b/src/mame/includes/ddribble.h
index e684b469267..417058bcc83 100644
--- a/src/mame/includes/ddribble.h
+++ b/src/mame/includes/ddribble.h
@@ -44,4 +44,4 @@ WRITE8_HANDLER( K005885_1_w );
PALETTE_INIT( ddribble );
VIDEO_START( ddribble );
-SCREEN_UPDATE( ddribble );
+SCREEN_UPDATE_IND16( ddribble );
diff --git a/src/mame/includes/deadang.h b/src/mame/includes/deadang.h
index 9dfa747d63c..f016ed877c0 100644
--- a/src/mame/includes/deadang.h
+++ b/src/mame/includes/deadang.h
@@ -24,4 +24,4 @@ WRITE16_HANDLER( deadang_text_w );
WRITE16_HANDLER( deadang_bank_w );
VIDEO_START( deadang );
-SCREEN_UPDATE( deadang );
+SCREEN_UPDATE_IND16( deadang );
diff --git a/src/mame/includes/dec0.h b/src/mame/includes/dec0.h
index 49235d981ac..aa44659b9c3 100644
--- a/src/mame/includes/dec0.h
+++ b/src/mame/includes/dec0.h
@@ -29,13 +29,13 @@ public:
/* Video emulation definitions */
VIDEO_START( dec0 );
VIDEO_START( dec0_nodma );
-SCREEN_UPDATE( hbarrel );
-SCREEN_UPDATE( baddudes );
-SCREEN_UPDATE( birdtry );
-SCREEN_UPDATE( robocop );
-SCREEN_UPDATE( hippodrm );
-SCREEN_UPDATE( slyspy );
-SCREEN_UPDATE( midres );
+SCREEN_UPDATE_IND16( hbarrel );
+SCREEN_UPDATE_IND16( baddudes );
+SCREEN_UPDATE_IND16( birdtry );
+SCREEN_UPDATE_IND16( robocop );
+SCREEN_UPDATE_IND16( hippodrm );
+SCREEN_UPDATE_IND16( slyspy );
+SCREEN_UPDATE_IND16( midres );
WRITE16_HANDLER( dec0_priority_w );
WRITE16_HANDLER( dec0_update_sprites_w );
diff --git a/src/mame/includes/dec8.h b/src/mame/includes/dec8.h
index 974bef7cffd..39040e360a4 100644
--- a/src/mame/includes/dec8.h
+++ b/src/mame/includes/dec8.h
@@ -50,14 +50,14 @@ public:
PALETTE_INIT( ghostb );
-SCREEN_UPDATE( cobracom );
-SCREEN_UPDATE( ghostb );
-SCREEN_UPDATE( srdarwin );
-SCREEN_UPDATE( gondo );
-SCREEN_UPDATE( garyoret );
-SCREEN_UPDATE( lastmisn );
-SCREEN_UPDATE( shackled );
-SCREEN_UPDATE( oscar );
+SCREEN_UPDATE_IND16( cobracom );
+SCREEN_UPDATE_IND16( ghostb );
+SCREEN_UPDATE_IND16( srdarwin );
+SCREEN_UPDATE_IND16( gondo );
+SCREEN_UPDATE_IND16( garyoret );
+SCREEN_UPDATE_IND16( lastmisn );
+SCREEN_UPDATE_IND16( shackled );
+SCREEN_UPDATE_IND16( oscar );
VIDEO_START( cobracom );
VIDEO_START( oscar );
VIDEO_START( ghostb );
diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h
index fb87dcb10c0..30b43b923a0 100644
--- a/src/mame/includes/deco32.h
+++ b/src/mame/includes/deco32.h
@@ -32,7 +32,7 @@ public:
UINT8 *m_dirty_palette;
int m_pri;
- bitmap_t *m_tilemap_alpha_bitmap;
+ bitmap_ind16 *m_tilemap_alpha_bitmap;
UINT16 m_spriteram16[0x1000];
@@ -81,10 +81,10 @@ VIDEO_START( nslasher );
SCREEN_EOF( captaven );
SCREEN_EOF( dragngun );
-SCREEN_UPDATE( captaven );
-SCREEN_UPDATE( fghthist );
-SCREEN_UPDATE( dragngun );
-SCREEN_UPDATE( nslasher );
+SCREEN_UPDATE_IND16( captaven );
+SCREEN_UPDATE_RGB32( fghthist );
+SCREEN_UPDATE_RGB32( dragngun );
+SCREEN_UPDATE_RGB32( nslasher );
WRITE32_HANDLER( deco32_pf1_data_w );
diff --git a/src/mame/includes/deco_mlc.h b/src/mame/includes/deco_mlc.h
index 0a0fab878eb..ee5a79c7f66 100644
--- a/src/mame/includes/deco_mlc.h
+++ b/src/mame/includes/deco_mlc.h
@@ -23,5 +23,5 @@ public:
/*----------- defined in video/deco_mlc.c -----------*/
VIDEO_START( mlc );
-SCREEN_UPDATE( mlc );
+SCREEN_UPDATE_RGB32( mlc );
SCREEN_EOF( mlc );
diff --git a/src/mame/includes/deniam.h b/src/mame/includes/deniam.h
index 23ed74e1a80..26202a94c17 100644
--- a/src/mame/includes/deniam.h
+++ b/src/mame/includes/deniam.h
@@ -51,7 +51,7 @@ READ16_HANDLER( deniam_coinctrl_r );
WRITE16_HANDLER( deniam_coinctrl_w );
VIDEO_START( deniam );
-SCREEN_UPDATE( deniam );
+SCREEN_UPDATE_IND16( deniam );
DRIVER_INIT( logicpro );
DRIVER_INIT( karianx );
diff --git a/src/mame/includes/dietgo.h b/src/mame/includes/dietgo.h
index e5afaad2da0..8b5f8b5d98e 100644
--- a/src/mame/includes/dietgo.h
+++ b/src/mame/includes/dietgo.h
@@ -27,4 +27,4 @@ public:
/*----------- defined in video/dietgo.c -----------*/
-SCREEN_UPDATE( dietgo );
+SCREEN_UPDATE_IND16( dietgo );
diff --git a/src/mame/includes/djboy.h b/src/mame/includes/djboy.h
index 3f88b80f17b..a820ea57f7e 100644
--- a/src/mame/includes/djboy.h
+++ b/src/mame/includes/djboy.h
@@ -53,5 +53,5 @@ WRITE8_HANDLER( djboy_videoram_w );
WRITE8_HANDLER( djboy_paletteram_w );
VIDEO_START( djboy );
-SCREEN_UPDATE( djboy );
+SCREEN_UPDATE_IND16( djboy );
SCREEN_EOF( djboy );
diff --git a/src/mame/includes/djmain.h b/src/mame/includes/djmain.h
index 7350e72b968..1dc94562a1d 100644
--- a/src/mame/includes/djmain.h
+++ b/src/mame/includes/djmain.h
@@ -20,7 +20,7 @@ public:
/*----------- defined in video/djmain.c -----------*/
-SCREEN_UPDATE( djmain );
+SCREEN_UPDATE_RGB32( djmain );
VIDEO_START( djmain );
void djmain_tile_callback(running_machine& machine, int layer, int *code, int *color, int *flags);
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h
index a806f2cf614..9f224c639af 100644
--- a/src/mame/includes/dkong.h
+++ b/src/mame/includes/dkong.h
@@ -96,7 +96,7 @@ public:
/* video state */
tilemap_t *m_bg_tilemap;
- bitmap_t * m_bg_bits;
+ bitmap_ind16 m_bg_bits;
const UINT8 * m_color_codes;
emu_timer * m_scanline_timer;
INT8 m_vidhw; /* Selected video hardware RS Conversion / TKG04 */
@@ -146,7 +146,7 @@ public:
/* video state */
tilemap_t *m_bg_tilemap;
- bitmap_t *m_bg_bits;
+ bitmap_ind16 m_bg_bits;
const UINT8 * m_color_codes;
emu_timer * m_scanline_timer;
INT8 m_vidhw; /* Selected video hardware RS Conversion / TKG04 */
@@ -218,9 +218,9 @@ PALETTE_INIT( radarscp1 );
PALETTE_INIT( dkong3 );
VIDEO_START( dkong );
-SCREEN_UPDATE( dkong );
-SCREEN_UPDATE( pestplce );
-SCREEN_UPDATE( spclforc );
+SCREEN_UPDATE_IND16( dkong );
+SCREEN_UPDATE_IND16( pestplce );
+SCREEN_UPDATE_IND16( spclforc );
/*----------- defined in audio/dkong.c -----------*/
diff --git a/src/mame/includes/docastle.h b/src/mame/includes/docastle.h
index 13ce0111d36..c7c00bf3610 100644
--- a/src/mame/includes/docastle.h
+++ b/src/mame/includes/docastle.h
@@ -49,5 +49,5 @@ WRITE8_HANDLER( docastle_flipscreen_on_w );
PALETTE_INIT( docastle );
VIDEO_START( docastle );
VIDEO_START( dorunrun );
-SCREEN_UPDATE( docastle );
+SCREEN_UPDATE_IND16( docastle );
diff --git a/src/mame/includes/dogfgt.h b/src/mame/includes/dogfgt.h
index c82cb09d652..0c228f88c8c 100644
--- a/src/mame/includes/dogfgt.h
+++ b/src/mame/includes/dogfgt.h
@@ -17,7 +17,7 @@ public:
size_t m_spriteram_size;
/* video-related */
- bitmap_t *m_pixbitmap;
+ bitmap_ind16 m_pixbitmap;
tilemap_t *m_bg_tilemap;
UINT8 *m_bitmapram;
int m_bm_plane;
@@ -46,4 +46,4 @@ WRITE8_HANDLER( dogfgt_1800_w );
PALETTE_INIT( dogfgt );
VIDEO_START( dogfgt );
-SCREEN_UPDATE( dogfgt );
+SCREEN_UPDATE_IND16( dogfgt );
diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h
index 9014c676ce2..c4b8e6a942c 100644
--- a/src/mame/includes/dooyong.h
+++ b/src/mame/includes/dooyong.h
@@ -59,14 +59,14 @@ WRITE8_HANDLER( paletteram_flytiger_w );
WRITE8_HANDLER( flytiger_ctrl_w );
WRITE16_HANDLER( rshark_ctrl_w );
-SCREEN_UPDATE( lastday );
-SCREEN_UPDATE( gulfstrm );
-SCREEN_UPDATE( pollux );
-SCREEN_UPDATE( bluehawk );
-SCREEN_UPDATE( flytiger );
-SCREEN_UPDATE( primella );
-SCREEN_UPDATE( rshark );
-SCREEN_UPDATE( popbingo );
+SCREEN_UPDATE_IND16( lastday );
+SCREEN_UPDATE_IND16( gulfstrm );
+SCREEN_UPDATE_IND16( pollux );
+SCREEN_UPDATE_IND16( bluehawk );
+SCREEN_UPDATE_IND16( flytiger );
+SCREEN_UPDATE_IND16( primella );
+SCREEN_UPDATE_IND16( rshark );
+SCREEN_UPDATE_IND16( popbingo );
VIDEO_START( lastday );
VIDEO_START( gulfstrm );
diff --git a/src/mame/includes/dragrace.h b/src/mame/includes/dragrace.h
index 74cdcd021e0..bd942f00e57 100644
--- a/src/mame/includes/dragrace.h
+++ b/src/mame/includes/dragrace.h
@@ -51,4 +51,4 @@ DISCRETE_SOUND_EXTERN( dragrace );
/*----------- defined in video/dragrace.c -----------*/
VIDEO_START( dragrace );
-SCREEN_UPDATE( dragrace );
+SCREEN_UPDATE_IND16( dragrace );
diff --git a/src/mame/includes/drgnmst.h b/src/mame/includes/drgnmst.h
index 6d2ae07e4e5..83bb9a26717 100644
--- a/src/mame/includes/drgnmst.h
+++ b/src/mame/includes/drgnmst.h
@@ -47,4 +47,4 @@ WRITE16_HANDLER( drgnmst_bg_videoram_w );
WRITE16_HANDLER( drgnmst_md_videoram_w );
VIDEO_START(drgnmst);
-SCREEN_UPDATE(drgnmst);
+SCREEN_UPDATE_IND16(drgnmst);
diff --git a/src/mame/includes/dribling.h b/src/mame/includes/dribling.h
index b11947e966b..55dfda342f6 100644
--- a/src/mame/includes/dribling.h
+++ b/src/mame/includes/dribling.h
@@ -35,4 +35,4 @@ public:
PALETTE_INIT( dribling );
WRITE8_HANDLER( dribling_colorram_w );
-SCREEN_UPDATE( dribling );
+SCREEN_UPDATE_IND16( dribling );
diff --git a/src/mame/includes/drmicro.h b/src/mame/includes/drmicro.h
index a05162e23f5..3b5bb663af4 100644
--- a/src/mame/includes/drmicro.h
+++ b/src/mame/includes/drmicro.h
@@ -32,6 +32,6 @@ public:
PALETTE_INIT( drmicro );
VIDEO_START( drmicro );
-SCREEN_UPDATE( drmicro );
+SCREEN_UPDATE_IND16( drmicro );
WRITE8_HANDLER( drmicro_videoram_w );
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index 5623c823699..ed1261f33a4 100644
--- a/src/mame/includes/dynax.h
+++ b/src/mame/includes/dynax.h
@@ -217,13 +217,13 @@ VIDEO_START( mjelctrn );
VIDEO_START( neruton );
VIDEO_START( htengoku );
-SCREEN_UPDATE( hanamai );
-SCREEN_UPDATE( hnoridur );
-SCREEN_UPDATE( sprtmtch );
-SCREEN_UPDATE( mjdialq2 );
-SCREEN_UPDATE( jantouki_top );
-SCREEN_UPDATE( jantouki_bottom );
-SCREEN_UPDATE( htengoku );
+SCREEN_UPDATE_IND16( hanamai );
+SCREEN_UPDATE_IND16( hnoridur );
+SCREEN_UPDATE_IND16( sprtmtch );
+SCREEN_UPDATE_IND16( mjdialq2 );
+SCREEN_UPDATE_IND16( jantouki_top );
+SCREEN_UPDATE_IND16( jantouki_bottom );
+SCREEN_UPDATE_IND16( htengoku );
PALETTE_INIT( sprtmtch );
@@ -239,4 +239,4 @@ WRITE8_HANDLER( ddenlovr_transparency_pen_w );
WRITE8_HANDLER( ddenlovr_transparency_mask_w );
VIDEO_START(ddenlovr);
-SCREEN_UPDATE(ddenlovr);
+SCREEN_UPDATE_IND16(ddenlovr);
diff --git a/src/mame/includes/dynduke.h b/src/mame/includes/dynduke.h
index a0ac14081a2..975973fdde8 100644
--- a/src/mame/includes/dynduke.h
+++ b/src/mame/includes/dynduke.h
@@ -31,5 +31,5 @@ WRITE16_HANDLER( dynduke_gfxbank_w );
WRITE16_HANDLER( dynduke_control_w );
WRITE16_HANDLER( dynduke_paletteram_w );
VIDEO_START( dynduke );
-SCREEN_UPDATE( dynduke );
+SCREEN_UPDATE_IND16( dynduke );
SCREEN_EOF( dynduke );
diff --git a/src/mame/includes/eolith.h b/src/mame/includes/eolith.h
index 8e6eec31c3d..2e57b3d398f 100644
--- a/src/mame/includes/eolith.h
+++ b/src/mame/includes/eolith.h
@@ -15,4 +15,4 @@ public:
READ32_HANDLER( eolith_vram_r );
WRITE32_HANDLER( eolith_vram_w );
VIDEO_START( eolith );
-SCREEN_UPDATE( eolith );
+SCREEN_UPDATE_IND16( eolith );
diff --git a/src/mame/includes/epos.h b/src/mame/includes/epos.h
index 2ab02869942..d939f774145 100644
--- a/src/mame/includes/epos.h
+++ b/src/mame/includes/epos.h
@@ -25,4 +25,4 @@ public:
/*----------- defined in video/epos.c -----------*/
WRITE8_HANDLER( epos_port_1_w );
-SCREEN_UPDATE( epos );
+SCREEN_UPDATE_RGB32( epos );
diff --git a/src/mame/includes/eprom.h b/src/mame/includes/eprom.h
index 71ab7910796..98da961f990 100644
--- a/src/mame/includes/eprom.h
+++ b/src/mame/includes/eprom.h
@@ -22,9 +22,9 @@ public:
/*----------- defined in video/eprom.c -----------*/
VIDEO_START( eprom );
-SCREEN_UPDATE( eprom );
+SCREEN_UPDATE_IND16( eprom );
VIDEO_START( guts );
-SCREEN_UPDATE( guts );
+SCREEN_UPDATE_IND16( guts );
void eprom_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/equites.h b/src/mame/includes/equites.h
index 7c3b7574127..e419e0444d5 100644
--- a/src/mame/includes/equites.h
+++ b/src/mame/includes/equites.h
@@ -74,7 +74,7 @@ extern WRITE16_HANDLER(splndrbt_bg_scrolly_w);
extern PALETTE_INIT( equites );
extern VIDEO_START( equites );
-extern SCREEN_UPDATE( equites );
+extern SCREEN_UPDATE_IND16( equites );
extern PALETTE_INIT( splndrbt );
extern VIDEO_START( splndrbt );
-extern SCREEN_UPDATE( splndrbt );
+extern SCREEN_UPDATE_IND16( splndrbt );
diff --git a/src/mame/includes/esd16.h b/src/mame/includes/esd16.h
index 70f7d2b46dd..c62ba9c962f 100644
--- a/src/mame/includes/esd16.h
+++ b/src/mame/includes/esd16.h
@@ -44,6 +44,6 @@ WRITE16_HANDLER( esd16_vram_1_w );
WRITE16_HANDLER( esd16_tilemap0_color_w );
VIDEO_START( esd16 );
-SCREEN_UPDATE( esd16 );
-SCREEN_UPDATE( hedpanic );
-SCREEN_UPDATE( hedpanio );
+SCREEN_UPDATE_IND16( esd16 );
+SCREEN_UPDATE_IND16( hedpanic );
+SCREEN_UPDATE_IND16( hedpanio );
diff --git a/src/mame/includes/espial.h b/src/mame/includes/espial.h
index 477f6b98078..761487b241e 100644
--- a/src/mame/includes/espial.h
+++ b/src/mame/includes/espial.h
@@ -42,4 +42,4 @@ WRITE8_HANDLER( espial_colorram_w );
WRITE8_HANDLER( espial_attributeram_w );
WRITE8_HANDLER( espial_scrollram_w );
WRITE8_HANDLER( espial_flipscreen_w );
-SCREEN_UPDATE( espial );
+SCREEN_UPDATE_IND16( espial );
diff --git a/src/mame/includes/esripsys.h b/src/mame/includes/esripsys.h
index b7579c28cac..bd58a131b79 100644
--- a/src/mame/includes/esripsys.h
+++ b/src/mame/includes/esripsys.h
@@ -70,7 +70,7 @@ public:
/*----------- defined in video/esripsys.c -----------*/
VIDEO_START( esripsys );
-SCREEN_UPDATE( esripsys );
+SCREEN_UPDATE_RGB32( esripsys );
WRITE8_HANDLER( esripsys_bg_intensity_w );
INTERRUPT_GEN( esripsys_vblank_irq );
diff --git a/src/mame/includes/exedexes.h b/src/mame/includes/exedexes.h
index 48e1b3098bf..1cb20f4d576 100644
--- a/src/mame/includes/exedexes.h
+++ b/src/mame/includes/exedexes.h
@@ -40,5 +40,5 @@ extern WRITE8_HANDLER( exedexes_gfxctrl_w );
extern PALETTE_INIT( exedexes );
extern VIDEO_START( exedexes );
-extern SCREEN_UPDATE( exedexes );
+extern SCREEN_UPDATE_IND16( exedexes );
extern SCREEN_EOF( exedexes );
diff --git a/src/mame/includes/exerion.h b/src/mame/includes/exerion.h
index 98a04cfde9c..046f7bef35a 100644
--- a/src/mame/includes/exerion.h
+++ b/src/mame/includes/exerion.h
@@ -54,7 +54,7 @@ public:
PALETTE_INIT( exerion );
VIDEO_START( exerion );
-SCREEN_UPDATE( exerion );
+SCREEN_UPDATE_IND16( exerion );
WRITE8_HANDLER( exerion_videoreg_w );
WRITE8_HANDLER( exerion_video_latch_w );
diff --git a/src/mame/includes/exidy.h b/src/mame/includes/exidy.h
index 14f7d1687b5..6fb2cacd3a7 100644
--- a/src/mame/includes/exidy.h
+++ b/src/mame/includes/exidy.h
@@ -39,10 +39,10 @@ public:
UINT8 m_collision_invert;
int m_is_2bpp;
UINT8 m_int_condition;
- bitmap_t *m_background_bitmap;
- bitmap_t *m_motion_object_1_vid;
- bitmap_t *m_motion_object_2_vid;
- bitmap_t *m_motion_object_2_clip;
+ bitmap_ind16 m_background_bitmap;
+ bitmap_ind16 m_motion_object_1_vid;
+ bitmap_ind16 m_motion_object_2_vid;
+ bitmap_ind16 m_motion_object_2_clip;
};
@@ -50,7 +50,7 @@ public:
void exidy_video_config(running_machine &machine, UINT8 _collision_mask, UINT8 _collision_invert, int _is_2bpp);
VIDEO_START( exidy );
-SCREEN_UPDATE( exidy );
+SCREEN_UPDATE_IND16( exidy );
INTERRUPT_GEN( exidy_vblank_interrupt );
diff --git a/src/mame/includes/exprraid.h b/src/mame/includes/exprraid.h
index 8beea521e02..f5ee05c246b 100644
--- a/src/mame/includes/exprraid.h
+++ b/src/mame/includes/exprraid.h
@@ -42,4 +42,4 @@ extern WRITE8_HANDLER( exprraid_scrollx_w );
extern WRITE8_HANDLER( exprraid_scrolly_w );
extern VIDEO_START( exprraid );
-extern SCREEN_UPDATE( exprraid );
+extern SCREEN_UPDATE_IND16( exprraid );
diff --git a/src/mame/includes/exterm.h b/src/mame/includes/exterm.h
index ef3c133c69f..43ce7ec0d5e 100644
--- a/src/mame/includes/exterm.h
+++ b/src/mame/includes/exterm.h
@@ -25,7 +25,7 @@ public:
/*----------- defined in video/exterm.c -----------*/
PALETTE_INIT( exterm );
-void exterm_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void exterm_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
void exterm_to_shiftreg_master(address_space *space, UINT32 address, UINT16* shiftreg);
void exterm_from_shiftreg_master(address_space *space, UINT32 address, UINT16* shiftreg);
diff --git a/src/mame/includes/exzisus.h b/src/mame/includes/exzisus.h
index 7a40ebbee17..81174f4080e 100644
--- a/src/mame/includes/exzisus.h
+++ b/src/mame/includes/exzisus.h
@@ -28,6 +28,6 @@ WRITE8_HANDLER( exzisus_videoram_1_w );
WRITE8_HANDLER( exzisus_objectram_0_w );
WRITE8_HANDLER( exzisus_objectram_1_w );
-SCREEN_UPDATE( exzisus );
+SCREEN_UPDATE_IND16( exzisus );
diff --git a/src/mame/includes/f1gp.h b/src/mame/includes/f1gp.h
index d557671ba74..c94a69ff286 100644
--- a/src/mame/includes/f1gp.h
+++ b/src/mame/includes/f1gp.h
@@ -54,6 +54,6 @@ WRITE16_HANDLER( f1gp2_gfxctrl_w );
VIDEO_START( f1gp );
VIDEO_START( f1gpb );
VIDEO_START( f1gp2 );
-SCREEN_UPDATE( f1gp );
-SCREEN_UPDATE( f1gpb );
-SCREEN_UPDATE( f1gp2 );
+SCREEN_UPDATE_IND16( f1gp );
+SCREEN_UPDATE_IND16( f1gpb );
+SCREEN_UPDATE_IND16( f1gp2 );
diff --git a/src/mame/includes/fantland.h b/src/mame/includes/fantland.h
index a32aa676d49..9ba9617ce78 100644
--- a/src/mame/includes/fantland.h
+++ b/src/mame/includes/fantland.h
@@ -34,4 +34,4 @@ public:
/*----------- defined in video/fantland.c -----------*/
-SCREEN_UPDATE( fantland );
+SCREEN_UPDATE_IND16( fantland );
diff --git a/src/mame/includes/fastfred.h b/src/mame/includes/fastfred.h
index ba8af1ec900..1755c9d3049 100644
--- a/src/mame/includes/fastfred.h
+++ b/src/mame/includes/fastfred.h
@@ -46,9 +46,9 @@ WRITE8_HANDLER( fastfred_colorbank1_w );
WRITE8_HANDLER( fastfred_colorbank2_w );
WRITE8_HANDLER( fastfred_flip_screen_x_w );
WRITE8_HANDLER( fastfred_flip_screen_y_w );
-SCREEN_UPDATE( fastfred );
+SCREEN_UPDATE_IND16( fastfred );
VIDEO_START( imago );
-SCREEN_UPDATE( imago );
+SCREEN_UPDATE_IND16( imago );
WRITE8_HANDLER( imago_fg_videoram_w );
WRITE8_HANDLER( imago_charbank_w );
diff --git a/src/mame/includes/fastlane.h b/src/mame/includes/fastlane.h
index 33b3bdf5ad2..e022f24e895 100644
--- a/src/mame/includes/fastlane.h
+++ b/src/mame/includes/fastlane.h
@@ -42,4 +42,4 @@ WRITE8_HANDLER( fastlane_vram2_w );
PALETTE_INIT( fastlane );
VIDEO_START( fastlane );
-SCREEN_UPDATE( fastlane );
+SCREEN_UPDATE_IND16( fastlane );
diff --git a/src/mame/includes/fcombat.h b/src/mame/includes/fcombat.h
index 1d98b5240a7..d1a7dcdc2d2 100644
--- a/src/mame/includes/fcombat.h
+++ b/src/mame/includes/fcombat.h
@@ -57,6 +57,6 @@ public:
PALETTE_INIT( fcombat );
VIDEO_START( fcombat );
-SCREEN_UPDATE( fcombat );
+SCREEN_UPDATE_IND16( fcombat );
WRITE8_HANDLER( fcombat_videoreg_w );
diff --git a/src/mame/includes/fgoal.h b/src/mame/includes/fgoal.h
index 163a5f7265b..44171ff6e58 100644
--- a/src/mame/includes/fgoal.h
+++ b/src/mame/includes/fgoal.h
@@ -10,8 +10,8 @@ public:
UINT8 * m_video_ram;
/* video-related */
- bitmap_t *m_bgbitmap;
- bitmap_t *m_fgbitmap;
+ bitmap_ind16 m_bgbitmap;
+ bitmap_ind16 m_fgbitmap;
UINT8 m_xpos;
UINT8 m_ypos;
int m_current_color;
@@ -31,7 +31,7 @@ public:
/*----------- defined in video/fgoal.c -----------*/
VIDEO_START( fgoal );
-SCREEN_UPDATE( fgoal );
+SCREEN_UPDATE_IND16( fgoal );
WRITE8_HANDLER( fgoal_color_w );
WRITE8_HANDLER( fgoal_xpos_w );
diff --git a/src/mame/includes/finalizr.h b/src/mame/includes/finalizr.h
index 4ea9a51ea6d..99ad7af27f6 100644
--- a/src/mame/includes/finalizr.h
+++ b/src/mame/includes/finalizr.h
@@ -43,4 +43,4 @@ WRITE8_HANDLER( finalizr_videoctrl_w );
PALETTE_INIT( finalizr );
VIDEO_START( finalizr );
-SCREEN_UPDATE( finalizr );
+SCREEN_UPDATE_IND16( finalizr );
diff --git a/src/mame/includes/firetrap.h b/src/mame/includes/firetrap.h
index c6a0e48a039..3d8e268eff8 100644
--- a/src/mame/includes/firetrap.h
+++ b/src/mame/includes/firetrap.h
@@ -55,4 +55,4 @@ WRITE8_HANDLER( firetrap_bg2_scrolly_w );
PALETTE_INIT( firetrap );
VIDEO_START( firetrap );
-SCREEN_UPDATE( firetrap );
+SCREEN_UPDATE_IND16( firetrap );
diff --git a/src/mame/includes/firetrk.h b/src/mame/includes/firetrk.h
index c31b811c846..95025b02870 100644
--- a/src/mame/includes/firetrk.h
+++ b/src/mame/includes/firetrk.h
@@ -53,8 +53,8 @@ public:
UINT8 m_flash;
UINT8 m_crash[2];
UINT8 m_skid[2];
- bitmap_t *m_helper1;
- bitmap_t *m_helper2;
+ bitmap_ind16 m_helper1;
+ bitmap_ind16 m_helper2;
UINT32 m_color1_mask;
UINT32 m_color2_mask;
tilemap_t *m_tilemap1;
@@ -84,8 +84,8 @@ PALETTE_INIT( montecar );
VIDEO_START( firetrk );
VIDEO_START( superbug );
VIDEO_START( montecar );
-SCREEN_UPDATE( firetrk );
-SCREEN_UPDATE( superbug );
-SCREEN_UPDATE( montecar );
+SCREEN_UPDATE_IND16( firetrk );
+SCREEN_UPDATE_IND16( superbug );
+SCREEN_UPDATE_IND16( montecar );
diff --git a/src/mame/includes/fitfight.h b/src/mame/includes/fitfight.h
index ce619a520a5..b6b1d87cb8f 100644
--- a/src/mame/includes/fitfight.h
+++ b/src/mame/includes/fitfight.h
@@ -36,4 +36,4 @@ WRITE16_HANDLER( fof_mid_tileram_w );
WRITE16_HANDLER( fof_txt_tileram_w );
VIDEO_START(fitfight);
-SCREEN_UPDATE(fitfight);
+SCREEN_UPDATE_IND16(fitfight);
diff --git a/src/mame/includes/flkatck.h b/src/mame/includes/flkatck.h
index c85ea1d4386..1e6dd816254 100644
--- a/src/mame/includes/flkatck.h
+++ b/src/mame/includes/flkatck.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( flkatck_k007121_w );
WRITE8_HANDLER( flkatck_k007121_regs_w );
VIDEO_START( flkatck );
-SCREEN_UPDATE( flkatck );
+SCREEN_UPDATE_IND16( flkatck );
diff --git a/src/mame/includes/flower.h b/src/mame/includes/flower.h
index c51fdc8c946..c71d63f948f 100644
--- a/src/mame/includes/flower.h
+++ b/src/mame/includes/flower.h
@@ -35,6 +35,6 @@ WRITE8_HANDLER( flower_bg0ram_w );
WRITE8_HANDLER( flower_bg1ram_w );
WRITE8_HANDLER( flower_flipscreen_w );
-SCREEN_UPDATE( flower );
+SCREEN_UPDATE_IND16( flower );
VIDEO_START( flower );
PALETTE_INIT( flower );
diff --git a/src/mame/includes/flstory.h b/src/mame/includes/flstory.h
index 23a500f645b..59fe91bef5a 100644
--- a/src/mame/includes/flstory.h
+++ b/src/mame/includes/flstory.h
@@ -92,11 +92,11 @@ READ8_HANDLER( victnine_mcu_status_r );
/*----------- defined in video/flstory.c -----------*/
VIDEO_START( flstory );
-SCREEN_UPDATE( flstory );
+SCREEN_UPDATE_IND16( flstory );
VIDEO_START( victnine );
-SCREEN_UPDATE( victnine );
+SCREEN_UPDATE_IND16( victnine );
VIDEO_START( rumba );
-SCREEN_UPDATE( rumba );
+SCREEN_UPDATE_IND16( rumba );
WRITE8_HANDLER( flstory_videoram_w );
READ8_HANDLER( flstory_palette_r );
diff --git a/src/mame/includes/foodf.h b/src/mame/includes/foodf.h
index ec86619e8ad..260289a86ec 100644
--- a/src/mame/includes/foodf.h
+++ b/src/mame/includes/foodf.h
@@ -32,4 +32,4 @@ WRITE16_HANDLER( foodf_paletteram_w );
void foodf_set_flip(foodf_state *state, int flip);
VIDEO_START( foodf );
-SCREEN_UPDATE( foodf );
+SCREEN_UPDATE_IND16( foodf );
diff --git a/src/mame/includes/freekick.h b/src/mame/includes/freekick.h
index 1a880b103ab..bbbfb9c0e4b 100644
--- a/src/mame/includes/freekick.h
+++ b/src/mame/includes/freekick.h
@@ -28,7 +28,7 @@ public:
/*----------- defined in video/freekick.c -----------*/
VIDEO_START(freekick);
-SCREEN_UPDATE(gigas);
-SCREEN_UPDATE(pbillrd);
-SCREEN_UPDATE(freekick);
+SCREEN_UPDATE_IND16(gigas);
+SCREEN_UPDATE_IND16(pbillrd);
+SCREEN_UPDATE_IND16(freekick);
WRITE8_HANDLER( freek_videoram_w );
diff --git a/src/mame/includes/fromanc2.h b/src/mame/includes/fromanc2.h
index fc123174070..1c96b85a350 100644
--- a/src/mame/includes/fromanc2.h
+++ b/src/mame/includes/fromanc2.h
@@ -37,8 +37,8 @@ public:
/*----------- defined in video/fromanc2.c -----------*/
-SCREEN_UPDATE( fromanc2_left );
-SCREEN_UPDATE( fromanc2_right );
+SCREEN_UPDATE_IND16( fromanc2_left );
+SCREEN_UPDATE_IND16( fromanc2_right );
VIDEO_START( fromanc2 );
VIDEO_START( fromancr );
VIDEO_START( fromanc4 );
diff --git a/src/mame/includes/fromance.h b/src/mame/includes/fromance.h
index 7fd1b8bf700..8a5663d22ef 100644
--- a/src/mame/includes/fromance.h
+++ b/src/mame/includes/fromance.h
@@ -60,8 +60,8 @@ VIDEO_START( fromance );
VIDEO_START( nekkyoku );
VIDEO_START( pipedrm );
VIDEO_START( hatris );
-SCREEN_UPDATE( fromance );
-SCREEN_UPDATE( pipedrm );
+SCREEN_UPDATE_IND16( fromance );
+SCREEN_UPDATE_IND16( pipedrm );
WRITE8_HANDLER( fromance_crtc_data_w );
WRITE8_HANDLER( fromance_crtc_register_w );
diff --git a/src/mame/includes/funkybee.h b/src/mame/includes/funkybee.h
index 998edddebb2..aa26714a6db 100644
--- a/src/mame/includes/funkybee.h
+++ b/src/mame/includes/funkybee.h
@@ -26,4 +26,4 @@ WRITE8_HANDLER( funkybee_flipscreen_w );
PALETTE_INIT( funkybee );
VIDEO_START( funkybee );
-SCREEN_UPDATE( funkybee );
+SCREEN_UPDATE_IND16( funkybee );
diff --git a/src/mame/includes/funkyjet.h b/src/mame/includes/funkyjet.h
index 4b2498b3f27..cf8b90bbfad 100644
--- a/src/mame/includes/funkyjet.h
+++ b/src/mame/includes/funkyjet.h
@@ -27,4 +27,4 @@ public:
/*----------- defined in video/funkyjet.c -----------*/
-SCREEN_UPDATE( funkyjet );
+SCREEN_UPDATE_IND16( funkyjet );
diff --git a/src/mame/includes/funworld.h b/src/mame/includes/funworld.h
index 61b27615008..a737be0a89c 100644
--- a/src/mame/includes/funworld.h
+++ b/src/mame/includes/funworld.h
@@ -17,4 +17,4 @@ WRITE8_HANDLER( funworld_colorram_w );
PALETTE_INIT( funworld );
VIDEO_START( funworld );
VIDEO_START( magicrd2 );
-SCREEN_UPDATE( funworld );
+SCREEN_UPDATE_IND16( funworld );
diff --git a/src/mame/includes/funybubl.h b/src/mame/includes/funybubl.h
index ea5303f8ac6..ba73c378414 100644
--- a/src/mame/includes/funybubl.h
+++ b/src/mame/includes/funybubl.h
@@ -23,4 +23,4 @@ public:
WRITE8_HANDLER ( funybubl_paldatawrite );
VIDEO_START(funybubl);
-SCREEN_UPDATE(funybubl);
+SCREEN_UPDATE_IND16(funybubl);
diff --git a/src/mame/includes/fuukifg2.h b/src/mame/includes/fuukifg2.h
index 15bfe85500a..2b33b25cf50 100644
--- a/src/mame/includes/fuukifg2.h
+++ b/src/mame/includes/fuukifg2.h
@@ -35,4 +35,4 @@ WRITE16_HANDLER( fuuki16_vram_2_w );
WRITE16_HANDLER( fuuki16_vram_3_w );
VIDEO_START( fuuki16 );
-SCREEN_UPDATE( fuuki16 );
+SCREEN_UPDATE_IND16( fuuki16 );
diff --git a/src/mame/includes/fuukifg3.h b/src/mame/includes/fuukifg3.h
index ec8ac61309e..563602e8f7a 100644
--- a/src/mame/includes/fuukifg3.h
+++ b/src/mame/includes/fuukifg3.h
@@ -48,5 +48,5 @@ WRITE32_HANDLER( fuuki32_vram_2_w );
WRITE32_HANDLER( fuuki32_vram_3_w );
VIDEO_START( fuuki32 );
-SCREEN_UPDATE( fuuki32 );
+SCREEN_UPDATE_IND16( fuuki32 );
SCREEN_EOF( fuuki32 );
diff --git a/src/mame/includes/gaelco.h b/src/mame/includes/gaelco.h
index 5ddbdcf5e45..1813cb3e625 100644
--- a/src/mame/includes/gaelco.h
+++ b/src/mame/includes/gaelco.h
@@ -33,5 +33,5 @@ WRITE16_HANDLER( gaelco_vram_w );
VIDEO_START( bigkarnk );
VIDEO_START( maniacsq );
-SCREEN_UPDATE( bigkarnk );
-SCREEN_UPDATE( maniacsq );
+SCREEN_UPDATE_IND16( bigkarnk );
+SCREEN_UPDATE_IND16( maniacsq );
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index e01f63d174e..7a899507421 100644
--- a/src/mame/includes/gaelco2.h
+++ b/src/mame/includes/gaelco2.h
@@ -43,9 +43,9 @@ WRITE16_HANDLER( snowboar_protection_w );
WRITE16_HANDLER( gaelco2_vram_w );
WRITE16_HANDLER( gaelco2_palette_w );
-SCREEN_UPDATE( gaelco2 );
+SCREEN_UPDATE_IND16( gaelco2 );
SCREEN_EOF( gaelco2 );
VIDEO_START( gaelco2 );
-SCREEN_UPDATE( gaelco2_left );
-SCREEN_UPDATE( gaelco2_right );
+SCREEN_UPDATE_IND16( gaelco2_left );
+SCREEN_UPDATE_IND16( gaelco2_right );
VIDEO_START( gaelco2_dual );
diff --git a/src/mame/includes/gaelco3d.h b/src/mame/includes/gaelco3d.h
index 58a468ac654..6a3fa891450 100644
--- a/src/mame/includes/gaelco3d.h
+++ b/src/mame/includes/gaelco3d.h
@@ -27,15 +27,15 @@ class gaelco3d_renderer : public poly_manager<float, gaelco3d_object_data, 1, 20
public:
gaelco3d_renderer(gaelco3d_state &state);
- bitmap_t *screenbits() const { return m_screenbits; }
+ bitmap_ind16 &screenbits() { return m_screenbits; }
UINT32 polygons() { UINT32 result = m_polygons; m_polygons = 0; return result; }
void render_poly(screen_device &screen, UINT32 *polydata);
private:
gaelco3d_state &m_state;
- bitmap_t *m_screenbits;
- bitmap_t *m_zbuffer;
+ bitmap_ind16 m_screenbits;
+ bitmap_ind16 m_zbuffer;
UINT32 m_polygons;
offs_t m_texture_size;
offs_t m_texmask_size;
@@ -87,4 +87,4 @@ WRITE16_HANDLER( gaelco3d_paletteram_w );
WRITE32_HANDLER( gaelco3d_paletteram_020_w );
VIDEO_START( gaelco3d );
-SCREEN_UPDATE( gaelco3d );
+SCREEN_UPDATE_IND16( gaelco3d );
diff --git a/src/mame/includes/gaiden.h b/src/mame/includes/gaiden.h
index 6a2ebdb9e93..580c2ccfa78 100644
--- a/src/mame/includes/gaiden.h
+++ b/src/mame/includes/gaiden.h
@@ -21,9 +21,9 @@ public:
tilemap_t *m_text_layer;
tilemap_t *m_foreground;
tilemap_t *m_background;
- bitmap_t *m_sprite_bitmap;
- bitmap_t *m_tile_bitmap_bg;
- bitmap_t *m_tile_bitmap_fg;
+ bitmap_ind16 m_sprite_bitmap;
+ bitmap_ind16 m_tile_bitmap_bg;
+ bitmap_ind16 m_tile_bitmap_fg;
UINT16 m_tx_scroll_x;
UINT16 m_tx_scroll_y;
UINT16 m_bg_scroll_x;
@@ -53,9 +53,9 @@ VIDEO_START( raiga );
VIDEO_START( drgnbowl );
VIDEO_START( mastninj );
-SCREEN_UPDATE( gaiden );
-SCREEN_UPDATE( raiga );
-SCREEN_UPDATE( drgnbowl );
+SCREEN_UPDATE_RGB32( gaiden );
+SCREEN_UPDATE_RGB32( raiga );
+SCREEN_UPDATE_IND16( drgnbowl );
WRITE16_HANDLER( gaiden_videoram_w );
WRITE16_HANDLER( gaiden_videoram2_w );
diff --git a/src/mame/includes/galaga.h b/src/mame/includes/galaga.h
index b68b3157d2c..2e2e1ebe382 100644
--- a/src/mame/includes/galaga.h
+++ b/src/mame/includes/galaga.h
@@ -92,7 +92,7 @@ WRITE8_HANDLER( bosco_scrollx_w );
WRITE8_HANDLER( bosco_scrolly_w );
WRITE8_HANDLER( bosco_starclr_w );
VIDEO_START( bosco );
-SCREEN_UPDATE( bosco );
+SCREEN_UPDATE_IND16( bosco );
PALETTE_INIT( bosco );
SCREEN_EOF( bosco ); /* update starfield */
@@ -116,7 +116,7 @@ PALETTE_INIT( galaga );
WRITE8_HANDLER( galaga_videoram_w );
WRITE8_HANDLER( gatsbee_bank_w );
VIDEO_START( galaga );
-SCREEN_UPDATE( galaga );
+SCREEN_UPDATE_IND16( galaga );
SCREEN_EOF( galaga ); /* update starfield */
/*----------- defined in video/xevious.c -----------*/
@@ -130,7 +130,7 @@ WRITE8_HANDLER( xevious_bs_w );
READ8_HANDLER( xevious_bb_r );
VIDEO_START( xevious );
PALETTE_INIT( xevious );
-SCREEN_UPDATE( xevious );
+SCREEN_UPDATE_IND16( xevious );
PALETTE_INIT( battles );
@@ -159,5 +159,5 @@ INTERRUPT_GEN( battles_interrupt_4 );
WRITE8_HANDLER( digdug_videoram_w );
WRITE8_HANDLER( digdug_PORT_w );
VIDEO_START( digdug );
-SCREEN_UPDATE( digdug );
+SCREEN_UPDATE_IND16( digdug );
PALETTE_INIT( digdug );
diff --git a/src/mame/includes/galastrm.h b/src/mame/includes/galastrm.h
index 9fb2ea24d39..e4c64d34ae0 100644
--- a/src/mame/includes/galastrm.h
+++ b/src/mame/includes/galastrm.h
@@ -26,8 +26,8 @@ public:
INT16 m_tc0610_ctrl_reg[2][8];
struct tempsprite *m_spritelist;
struct tempsprite *m_sprite_ptr_pre;
- bitmap_t *m_tmpbitmaps;
- bitmap_t *m_polybitmap;
+ bitmap_ind16 m_tmpbitmaps;
+ bitmap_ind16 m_polybitmap;
poly_manager *m_poly;
int m_rsxb;
int m_rsyb;
@@ -41,4 +41,4 @@ public:
/*----------- defined in video/galastrm.c -----------*/
VIDEO_START( galastrm );
-SCREEN_UPDATE( galastrm );
+SCREEN_UPDATE_IND16( galastrm );
diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h
index f1b3d893a81..35c1ee8f5a2 100644
--- a/src/mame/includes/galaxian.h
+++ b/src/mame/includes/galaxian.h
@@ -28,8 +28,8 @@
/* video extension callbacks */
typedef void (*galaxian_extend_tile_info_func)(running_machine &machine, UINT16 *code, UINT8 *color, UINT8 attrib, UINT8 x);
typedef void (*galaxian_extend_sprite_info_func)(running_machine &machine, const UINT8 *base, UINT8 *sx, UINT8 *sy, UINT8 *flipx, UINT8 *flipy, UINT16 *code, UINT8 *color);
-typedef void (*galaxian_draw_bullet_func)(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-typedef void (*galaxian_draw_background_func)(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+typedef void (*galaxian_draw_bullet_func)(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+typedef void (*galaxian_draw_background_func)(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
class galaxian_state : public driver_device
@@ -84,8 +84,8 @@ PALETTE_INIT( galaxian );
PALETTE_INIT( moonwar );
VIDEO_START( galaxian );
-SCREEN_UPDATE( galaxian );
-SCREEN_UPDATE( zigzag );
+SCREEN_UPDATE_RGB32( galaxian );
+SCREEN_UPDATE_RGB32( zigzag );
WRITE8_HANDLER( galaxian_videoram_w );
WRITE8_HANDLER( galaxian_objram_w );
@@ -105,19 +105,19 @@ WRITE8_HANDLER( galaxian_gfxbank_w );
TIMER_DEVICE_CALLBACK( galaxian_stars_blink_timer );
/* special purpose background rendering */
-void galaxian_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-void frogger_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-//void amidar_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-void turtles_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-void scramble_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-void anteater_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-void jumpbug_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+void galaxian_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+void frogger_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+//void amidar_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+void turtles_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+void scramble_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+void anteater_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+void jumpbug_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
/* special purpose bullet rendering */
-void galaxian_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-void mshuttle_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-void scramble_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-void theend_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
+void galaxian_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+void mshuttle_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+void scramble_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+void theend_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
/* generic extensions */
void upper_extend_tile_info(running_machine &machine, UINT16 *code, UINT8 *color, UINT8 attrib, UINT8 x);
diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h
index c8547538d34..ea1b1a12541 100644
--- a/src/mame/includes/galaxold.h
+++ b/src/mame/includes/galaxold.h
@@ -56,13 +56,13 @@ public:
UINT8 m_timer_adjusted;
UINT8 m_darkplnt_bullet_color;
- void (*m_draw_bullets)(running_machine &,bitmap_t &,const rectangle &, int, int, int); /* function to call to draw a bullet */
+ void (*m_draw_bullets)(running_machine &,bitmap_ind16 &,const rectangle &, int, int, int); /* function to call to draw a bullet */
UINT8 m_background_enable;
UINT8 m_background_red;
UINT8 m_background_green;
UINT8 m_background_blue;
- void (*m_draw_background)(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect); /* function to call to draw the background */
+ void (*m_draw_background)(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect); /* function to call to draw the background */
UINT16 m_rockclim_v;
UINT16 m_rockclim_h;
int m_dambustr_bg_split_line;
@@ -70,9 +70,9 @@ public:
int m_dambustr_bg_color_2;
int m_dambustr_bg_priority;
int m_dambustr_char_bank;
- bitmap_t *m_dambustr_tmpbitmap;
+ bitmap_ind16 *m_dambustr_tmpbitmap;
- void (*m_draw_stars)(running_machine &machine, bitmap_t &, const rectangle &); /* function to call to draw the star layer */
+ void (*m_draw_stars)(running_machine &machine, bitmap_ind16 &, const rectangle &); /* function to call to draw the star layer */
int m_stars_colors_start;
INT32 m_stars_scrollpos;
UINT8 m_stars_on;
@@ -142,10 +142,10 @@ VIDEO_START( racknrol );
VIDEO_START( ad2083 );
void galaxold_init_stars(running_machine &machine, int colors_offset);
-void galaxold_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+void galaxold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
-SCREEN_UPDATE( galaxold );
-SCREEN_UPDATE( dambustr );
+SCREEN_UPDATE_IND16( galaxold );
+SCREEN_UPDATE_IND16( dambustr );
WRITE8_HANDLER( galaxold_gfxbank_w );
WRITE8_HANDLER( galaxold_flip_screen_x_w );
diff --git a/src/mame/includes/galivan.h b/src/mame/includes/galivan.h
index bc2aca5dc98..9fc3250b54c 100644
--- a/src/mame/includes/galivan.h
+++ b/src/mame/includes/galivan.h
@@ -48,5 +48,5 @@ PALETTE_INIT( galivan );
VIDEO_START( galivan );
VIDEO_START( ninjemak );
-SCREEN_UPDATE( galivan );
-SCREEN_UPDATE( ninjemak );
+SCREEN_UPDATE_IND16( galivan );
+SCREEN_UPDATE_IND16( ninjemak );
diff --git a/src/mame/includes/galpani2.h b/src/mame/includes/galpani2.h
index c2bdd01182a..d1352928493 100644
--- a/src/mame/includes/galpani2.h
+++ b/src/mame/includes/galpani2.h
@@ -20,8 +20,8 @@ public:
UINT16 m_old_mcu_nmi1;
UINT16 m_old_mcu_nmi2;
UINT16 *m_rombank;
- bitmap_t *m_bg8_bitmap[2];
- bitmap_t *m_bg15_bitmap;
+ bitmap_ind16 *m_bg8_bitmap[2];
+ bitmap_ind16 *m_bg15_bitmap;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
@@ -32,7 +32,7 @@ public:
PALETTE_INIT( galpani2 );
VIDEO_START( galpani2 );
-SCREEN_UPDATE( galpani2 );
+SCREEN_UPDATE_IND16( galpani2 );
WRITE16_HANDLER( galpani2_palette_0_w );
WRITE16_HANDLER( galpani2_palette_1_w );
diff --git a/src/mame/includes/galpanic.h b/src/mame/includes/galpanic.h
index c62f7cb5708..79d0c2a85be 100644
--- a/src/mame/includes/galpanic.h
+++ b/src/mame/includes/galpanic.h
@@ -9,7 +9,8 @@ public:
UINT16 *m_bgvideoram;
UINT16 *m_fgvideoram;
size_t m_fgvideoram_size;
- bitmap_t *m_sprites_bitmap;
+ bitmap_ind16 m_bitmap;
+ bitmap_ind16 m_sprites_bitmap;
UINT16 *m_spriteram;
size_t m_spriteram_size;
};
@@ -21,7 +22,7 @@ PALETTE_INIT( galpanic );
WRITE16_HANDLER( galpanic_bgvideoram_w );
WRITE16_HANDLER( galpanic_paletteram_w );
VIDEO_START( galpanic );
-SCREEN_UPDATE( galpanic );
-SCREEN_UPDATE( comad );
+SCREEN_UPDATE_IND16( galpanic );
+SCREEN_UPDATE_IND16( comad );
diff --git a/src/mame/includes/galspnbl.h b/src/mame/includes/galspnbl.h
index 650999ece20..fc66d8c4cdb 100644
--- a/src/mame/includes/galspnbl.h
+++ b/src/mame/includes/galspnbl.h
@@ -29,4 +29,4 @@ public:
PALETTE_INIT( galspnbl );
-SCREEN_UPDATE( galspnbl );
+SCREEN_UPDATE_IND16( galspnbl );
diff --git a/src/mame/includes/gaplus.h b/src/mame/includes/gaplus.h
index f1fb00c58b0..61123c109b0 100644
--- a/src/mame/includes/gaplus.h
+++ b/src/mame/includes/gaplus.h
@@ -38,5 +38,5 @@ WRITE8_HANDLER( gaplus_videoram_w );
WRITE8_HANDLER( gaplus_starfield_control_w );
VIDEO_START( gaplus );
PALETTE_INIT( gaplus );
-SCREEN_UPDATE( gaplus );
+SCREEN_UPDATE_IND16( gaplus );
SCREEN_EOF( gaplus ); /* update starfields */
diff --git a/src/mame/includes/gatron.h b/src/mame/includes/gatron.h
index ca07c8b8a9e..ac997d72e04 100644
--- a/src/mame/includes/gatron.h
+++ b/src/mame/includes/gatron.h
@@ -14,5 +14,5 @@ public:
WRITE8_HANDLER( gat_videoram_w );
PALETTE_INIT( gat );
VIDEO_START( gat );
-SCREEN_UPDATE( gat );
+SCREEN_UPDATE_IND16( gat );
diff --git a/src/mame/includes/gauntlet.h b/src/mame/includes/gauntlet.h
index 249139e675b..79857e1be1f 100644
--- a/src/mame/includes/gauntlet.h
+++ b/src/mame/includes/gauntlet.h
@@ -25,4 +25,4 @@ WRITE16_HANDLER( gauntlet_xscroll_w );
WRITE16_HANDLER( gauntlet_yscroll_w );
VIDEO_START( gauntlet );
-SCREEN_UPDATE( gauntlet );
+SCREEN_UPDATE_IND16( gauntlet );
diff --git a/src/mame/includes/gberet.h b/src/mame/includes/gberet.h
index bf4d5275f94..636dc49baeb 100644
--- a/src/mame/includes/gberet.h
+++ b/src/mame/includes/gberet.h
@@ -38,5 +38,5 @@ WRITE8_HANDLER( gberet_sprite_bank_w );
PALETTE_INIT( gberet );
VIDEO_START( gberet );
-SCREEN_UPDATE( gberet );
-SCREEN_UPDATE( gberetb );
+SCREEN_UPDATE_IND16( gberet );
+SCREEN_UPDATE_IND16( gberetb );
diff --git a/src/mame/includes/gbusters.h b/src/mame/includes/gbusters.h
index 8fc3d4e3f8a..f2dff2ff1d4 100644
--- a/src/mame/includes/gbusters.h
+++ b/src/mame/includes/gbusters.h
@@ -36,4 +36,4 @@ extern void gbusters_tile_callback(running_machine &machine, int layer,int bank,
extern void gbusters_sprite_callback(running_machine &machine, int *code,int *color,int *priority,int *shadow);
VIDEO_START( gbusters );
-SCREEN_UPDATE( gbusters );
+SCREEN_UPDATE_IND16( gbusters );
diff --git a/src/mame/includes/gcpinbal.h b/src/mame/includes/gcpinbal.h
index 70dc0ff8793..40c92fc3d6e 100644
--- a/src/mame/includes/gcpinbal.h
+++ b/src/mame/includes/gcpinbal.h
@@ -48,7 +48,7 @@ public:
/*----------- defined in video/gcpinbal.c -----------*/
VIDEO_START( gcpinbal );
-SCREEN_UPDATE( gcpinbal );
+SCREEN_UPDATE_IND16( gcpinbal );
READ16_HANDLER ( gcpinbal_tilemaps_word_r );
WRITE16_HANDLER( gcpinbal_tilemaps_word_w );
diff --git a/src/mame/includes/genesis.h b/src/mame/includes/genesis.h
index 95541bf5404..95bcf957fdf 100644
--- a/src/mame/includes/genesis.h
+++ b/src/mame/includes/genesis.h
@@ -7,7 +7,7 @@ extern UINT16 genesis_sp_pal_lookup[4];
extern UINT8 genesis_vdp_regs[32];
void system18_vdp_start(running_machine &machine);
-void system18_vdp_update(bitmap_t &bitmap, const rectangle &cliprect);
+void system18_vdp_update(bitmap_ind16 &bitmap, const rectangle &cliprect);
READ16_HANDLER ( genesis_vdp_r );
WRITE16_HANDLER( genesis_vdp_w );
diff --git a/src/mame/includes/gijoe.h b/src/mame/includes/gijoe.h
index 621aa116d42..f1c8ce3bf1a 100644
--- a/src/mame/includes/gijoe.h
+++ b/src/mame/includes/gijoe.h
@@ -42,4 +42,4 @@ extern void gijoe_sprite_callback(running_machine &machine, int *code, int *colo
extern void gijoe_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
VIDEO_START( gijoe );
-SCREEN_UPDATE( gijoe );
+SCREEN_UPDATE_IND16( gijoe );
diff --git a/src/mame/includes/ginganin.h b/src/mame/includes/ginganin.h
index 765f2dea02b..66f0fca3cd0 100644
--- a/src/mame/includes/ginganin.h
+++ b/src/mame/includes/ginganin.h
@@ -42,4 +42,4 @@ WRITE16_HANDLER( ginganin_txtram16_w );
WRITE16_HANDLER( ginganin_vregs16_w );
VIDEO_START( ginganin );
-SCREEN_UPDATE( ginganin );
+SCREEN_UPDATE_IND16( ginganin );
diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h
index 7f9d41664a8..771115b9d52 100644
--- a/src/mame/includes/gladiatr.h
+++ b/src/mame/includes/gladiatr.h
@@ -38,6 +38,6 @@ WRITE8_HANDLER( gladiatr_video_registers_w );
WRITE8_HANDLER( gladiatr_spritebuffer_w );
WRITE8_HANDLER( gladiatr_spritebank_w );
VIDEO_START( ppking );
-SCREEN_UPDATE( ppking );
+SCREEN_UPDATE_IND16( ppking );
VIDEO_START( gladiatr );
-SCREEN_UPDATE( gladiatr );
+SCREEN_UPDATE_IND16( gladiatr );
diff --git a/src/mame/includes/glass.h b/src/mame/includes/glass.h
index 7e0ac01b4c3..806e28c6917 100644
--- a/src/mame/includes/glass.h
+++ b/src/mame/includes/glass.h
@@ -18,7 +18,7 @@ public:
/* video-related */
tilemap_t *m_pant[2];
- bitmap_t *m_screen_bitmap;
+ bitmap_ind16 *m_screen_bitmap;
/* misc */
int m_current_bit;
@@ -34,4 +34,4 @@ WRITE16_HANDLER( glass_vram_w );
WRITE16_HANDLER( glass_blitter_w );
VIDEO_START( glass );
-SCREEN_UPDATE( glass );
+SCREEN_UPDATE_IND16( glass );
diff --git a/src/mame/includes/gng.h b/src/mame/includes/gng.h
index 922dd4b9049..070e8d33691 100644
--- a/src/mame/includes/gng.h
+++ b/src/mame/includes/gng.h
@@ -34,5 +34,5 @@ WRITE8_HANDLER( gng_bgscrolly_w );
WRITE8_HANDLER( gng_flipscreen_w );
VIDEO_START( gng );
-SCREEN_UPDATE( gng );
+SCREEN_UPDATE_IND16( gng );
SCREEN_EOF( gng );
diff --git a/src/mame/includes/goal92.h b/src/mame/includes/goal92.h
index b2de65800c1..e7cfb9e147c 100644
--- a/src/mame/includes/goal92.h
+++ b/src/mame/includes/goal92.h
@@ -46,5 +46,5 @@ WRITE16_HANDLER( goal92_fg_bank_w );
READ16_HANDLER( goal92_fg_bank_r );
VIDEO_START( goal92 );
-SCREEN_UPDATE( goal92 );
+SCREEN_UPDATE_IND16( goal92 );
SCREEN_EOF( goal92 );
diff --git a/src/mame/includes/goindol.h b/src/mame/includes/goindol.h
index d66a996426b..f6a0d98c2dd 100644
--- a/src/mame/includes/goindol.h
+++ b/src/mame/includes/goindol.h
@@ -39,4 +39,4 @@ WRITE8_HANDLER( goindol_fg_videoram_w );
WRITE8_HANDLER( goindol_bg_videoram_w );
VIDEO_START( goindol );
-SCREEN_UPDATE( goindol );
+SCREEN_UPDATE_IND16( goindol );
diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h
index bec56555f3f..dab4f669efa 100644
--- a/src/mame/includes/goldstar.h
+++ b/src/mame/includes/goldstar.h
@@ -62,9 +62,9 @@ VIDEO_START( bingowng );
VIDEO_START( cherrym );
VIDEO_START( unkch );
VIDEO_START( magical );
-SCREEN_UPDATE( goldstar );
-SCREEN_UPDATE( bingowng );
-SCREEN_UPDATE( cmast91 );
-SCREEN_UPDATE( amcoe1a );
-SCREEN_UPDATE( unkch );
-SCREEN_UPDATE( magical );
+SCREEN_UPDATE_IND16( goldstar );
+SCREEN_UPDATE_IND16( bingowng );
+SCREEN_UPDATE_IND16( cmast91 );
+SCREEN_UPDATE_IND16( amcoe1a );
+SCREEN_UPDATE_IND16( unkch );
+SCREEN_UPDATE_IND16( magical );
diff --git a/src/mame/includes/gomoku.h b/src/mame/includes/gomoku.h
index 18a5b88b37f..aa94c138c83 100644
--- a/src/mame/includes/gomoku.h
+++ b/src/mame/includes/gomoku.h
@@ -12,7 +12,7 @@ public:
int m_flipscreen;
int m_bg_dispsw;
tilemap_t *m_fg_tilemap;
- bitmap_t *m_bg_bitmap;
+ bitmap_ind16 m_bg_bitmap;
};
@@ -28,7 +28,7 @@ DECLARE_LEGACY_SOUND_DEVICE(GOMOKU, gomoku_sound);
PALETTE_INIT( gomoku );
VIDEO_START( gomoku );
-SCREEN_UPDATE( gomoku );
+SCREEN_UPDATE_IND16( gomoku );
WRITE8_HANDLER( gomoku_videoram_w );
WRITE8_HANDLER( gomoku_colorram_w );
diff --git a/src/mame/includes/gotcha.h b/src/mame/includes/gotcha.h
index 2b66a6b9fcd..109f982141c 100644
--- a/src/mame/includes/gotcha.h
+++ b/src/mame/includes/gotcha.h
@@ -33,7 +33,7 @@ public:
VIDEO_START( gotcha );
-SCREEN_UPDATE( gotcha );
+SCREEN_UPDATE_IND16( gotcha );
WRITE16_HANDLER( gotcha_fgvideoram_w );
WRITE16_HANDLER( gotcha_bgvideoram_w );
diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h
index 2efc773d8f9..e955876c9dc 100644
--- a/src/mame/includes/gottlieb.h
+++ b/src/mame/includes/gottlieb.h
@@ -5,6 +5,7 @@
***************************************************************************/
#include "machine/6532riot.h"
+#include "machine/ldpr8210.h"
#define GOTTLIEB_VIDEO_HCOUNT 318
@@ -17,7 +18,8 @@ class gottlieb_state : public driver_device
{
public:
gottlieb_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag),
+ m_laserdisc(*this, "laserdisc") { }
UINT8 *m_videoram;
UINT8 m_votrax_queue[100];
@@ -36,7 +38,7 @@ public:
int m_last;
UINT8 m_joystick_select;
UINT8 m_track[2];
- device_t *m_laserdisc;
+ optional_device<pioneer_pr8210_device> m_laserdisc;
emu_timer *m_laserdisc_bit_timer;
emu_timer *m_laserdisc_philips_timer;
UINT8 m_laserdisc_select;
@@ -84,4 +86,4 @@ extern WRITE8_HANDLER( gottlieb_paletteram_w );
VIDEO_START( gottlieb );
VIDEO_START( screwloo );
-SCREEN_UPDATE( gottlieb );
+SCREEN_UPDATE_IND16( gottlieb );
diff --git a/src/mame/includes/gotya.h b/src/mame/includes/gotya.h
index cdaf0dcb63f..dd0cb1ee29e 100644
--- a/src/mame/includes/gotya.h
+++ b/src/mame/includes/gotya.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( gotya_video_control_w );
PALETTE_INIT( gotya );
VIDEO_START( gotya );
-SCREEN_UPDATE( gotya );
+SCREEN_UPDATE_IND16( gotya );
diff --git a/src/mame/includes/gradius3.h b/src/mame/includes/gradius3.h
index 323de401ca1..448e6785a33 100644
--- a/src/mame/includes/gradius3.h
+++ b/src/mame/includes/gradius3.h
@@ -41,4 +41,4 @@ READ16_HANDLER( gradius3_gfxrom_r );
WRITE16_HANDLER( gradius3_gfxram_w );
VIDEO_START( gradius3 );
-SCREEN_UPDATE( gradius3 );
+SCREEN_UPDATE_IND16( gradius3 );
diff --git a/src/mame/includes/grchamp.h b/src/mame/includes/grchamp.h
index 808447a6f57..40aaaf7a7ed 100644
--- a/src/mame/includes/grchamp.h
+++ b/src/mame/includes/grchamp.h
@@ -32,7 +32,7 @@ public:
UINT8 * m_rightram;
UINT8 * m_spriteram;
- bitmap_t * m_work_bitmap;
+ bitmap_ind16 m_work_bitmap;
tilemap_t * m_text_tilemap;
tilemap_t * m_left_tilemap;
tilemap_t * m_center_tilemap;
@@ -60,7 +60,7 @@ DISCRETE_SOUND_EXTERN( grchamp );
PALETTE_INIT( grchamp );
VIDEO_START( grchamp );
-SCREEN_UPDATE( grchamp );
+SCREEN_UPDATE_RGB32( grchamp );
WRITE8_HANDLER( grchamp_left_w );
WRITE8_HANDLER( grchamp_center_w );
WRITE8_HANDLER( grchamp_right_w );
diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h
index 2df7520adb5..4b788626e07 100644
--- a/src/mame/includes/gridlee.h
+++ b/src/mame/includes/gridlee.h
@@ -56,7 +56,7 @@ DECLARE_LEGACY_SOUND_DEVICE(GRIDLEE, gridlee_sound);
PALETTE_INIT( gridlee );
VIDEO_START( gridlee );
-SCREEN_UPDATE( gridlee );
+SCREEN_UPDATE_IND16( gridlee );
WRITE8_HANDLER( gridlee_cocktail_flip_w );
WRITE8_HANDLER( gridlee_videoram_w );
diff --git a/src/mame/includes/groundfx.h b/src/mame/includes/groundfx.h
index 985fa86f744..3be3de7e309 100644
--- a/src/mame/includes/groundfx.h
+++ b/src/mame/includes/groundfx.h
@@ -29,4 +29,4 @@ public:
/*----------- defined in video/groundfx.c -----------*/
VIDEO_START( groundfx );
-SCREEN_UPDATE( groundfx );
+SCREEN_UPDATE_IND16( groundfx );
diff --git a/src/mame/includes/gstriker.h b/src/mame/includes/gstriker.h
index 95718a28f3c..7ef7997a188 100644
--- a/src/mame/includes/gstriker.h
+++ b/src/mame/includes/gstriker.h
@@ -73,7 +73,7 @@ WRITE16_HANDLER( MB60553_1_regs_w );
WRITE16_HANDLER( MB60553_0_vram_w );
WRITE16_HANDLER( MB60553_1_vram_w );
-SCREEN_UPDATE( gstriker );
+SCREEN_UPDATE_IND16( gstriker );
VIDEO_START( gstriker );
VIDEO_START( twrldc94 );
VIDEO_START( vgoalsoc );
diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h
index 5ce82b92079..87945f64284 100644
--- a/src/mame/includes/gsword.h
+++ b/src/mame/includes/gsword.h
@@ -32,4 +32,4 @@ WRITE8_HANDLER( gsword_scroll_w );
PALETTE_INIT( josvolly );
PALETTE_INIT( gsword );
VIDEO_START( gsword );
-SCREEN_UPDATE( gsword );
+SCREEN_UPDATE_IND16( gsword );
diff --git a/src/mame/includes/gumbo.h b/src/mame/includes/gumbo.h
index 11a9ce26065..53821b69fd3 100644
--- a/src/mame/includes/gumbo.h
+++ b/src/mame/includes/gumbo.h
@@ -27,4 +27,4 @@ WRITE16_HANDLER( gumbo_bg_videoram_w );
WRITE16_HANDLER( gumbo_fg_videoram_w );
VIDEO_START( gumbo );
-SCREEN_UPDATE( gumbo );
+SCREEN_UPDATE_IND16( gumbo );
diff --git a/src/mame/includes/gunbustr.h b/src/mame/includes/gunbustr.h
index b6fba6977c4..ec5d1602c67 100644
--- a/src/mame/includes/gunbustr.h
+++ b/src/mame/includes/gunbustr.h
@@ -26,4 +26,4 @@ public:
/*----------- defined in video/gunbustr.c -----------*/
VIDEO_START( gunbustr );
-SCREEN_UPDATE( gunbustr );
+SCREEN_UPDATE_IND16( gunbustr );
diff --git a/src/mame/includes/gundealr.h b/src/mame/includes/gundealr.h
index 1939d793862..1d65a9a90eb 100644
--- a/src/mame/includes/gundealr.h
+++ b/src/mame/includes/gundealr.h
@@ -37,5 +37,5 @@ WRITE8_HANDLER( gundealr_fg_scroll_w );
WRITE8_HANDLER( yamyam_fg_scroll_w );
WRITE8_HANDLER( gundealr_flipscreen_w );
-SCREEN_UPDATE( gundealr );
+SCREEN_UPDATE_IND16( gundealr );
VIDEO_START( gundealr );
diff --git a/src/mame/includes/gunsmoke.h b/src/mame/includes/gunsmoke.h
index eeed81dc719..6db5b53859b 100644
--- a/src/mame/includes/gunsmoke.h
+++ b/src/mame/includes/gunsmoke.h
@@ -37,5 +37,5 @@ WRITE8_HANDLER( gunsmoke_colorram_w );
PALETTE_INIT( gunsmoke );
VIDEO_START( gunsmoke );
-SCREEN_UPDATE( gunsmoke );
+SCREEN_UPDATE_IND16( gunsmoke );
diff --git a/src/mame/includes/gyruss.h b/src/mame/includes/gyruss.h
index 84cc0eacb55..b96fac2cb97 100644
--- a/src/mame/includes/gyruss.h
+++ b/src/mame/includes/gyruss.h
@@ -35,4 +35,4 @@ READ8_HANDLER( gyruss_scanline_r );
PALETTE_INIT( gyruss );
VIDEO_START( gyruss );
-SCREEN_UPDATE( gyruss );
+SCREEN_UPDATE_IND16( gyruss );
diff --git a/src/mame/includes/hanaawas.h b/src/mame/includes/hanaawas.h
index 85725912461..c00a755c918 100644
--- a/src/mame/includes/hanaawas.h
+++ b/src/mame/includes/hanaawas.h
@@ -30,4 +30,4 @@ WRITE8_DEVICE_HANDLER( hanaawas_portB_w );
PALETTE_INIT( hanaawas );
VIDEO_START( hanaawas );
-SCREEN_UPDATE( hanaawas );
+SCREEN_UPDATE_IND16( hanaawas );
diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h
index ee493fe6ad2..96dc411b3f9 100644
--- a/src/mame/includes/harddriv.h
+++ b/src/mame/includes/harddriv.h
@@ -357,5 +357,5 @@ WRITE16_HANDLER( hdgsp_paletteram_lo_w );
READ16_HANDLER( hdgsp_paletteram_hi_r );
WRITE16_HANDLER( hdgsp_paletteram_hi_w );
-void harddriv_scanline_driver(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
-void harddriv_scanline_multisync(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void harddriv_scanline_driver(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
+void harddriv_scanline_multisync(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/hcastle.h b/src/mame/includes/hcastle.h
index ea1fb53525a..f4553bf00cf 100644
--- a/src/mame/includes/hcastle.h
+++ b/src/mame/includes/hcastle.h
@@ -43,5 +43,5 @@ WRITE8_HANDLER( hcastle_pf1_control_w );
WRITE8_HANDLER( hcastle_pf2_control_w );
PALETTE_INIT( hcastle );
-SCREEN_UPDATE( hcastle );
+SCREEN_UPDATE_IND16( hcastle );
VIDEO_START( hcastle );
diff --git a/src/mame/includes/hexion.h b/src/mame/includes/hexion.h
index 02e7185704c..e97ca250bd9 100644
--- a/src/mame/includes/hexion.h
+++ b/src/mame/includes/hexion.h
@@ -17,7 +17,7 @@ public:
/*----------- defined in video/hexion.c -----------*/
VIDEO_START( hexion );
-SCREEN_UPDATE( hexion );
+SCREEN_UPDATE_IND16( hexion );
WRITE8_HANDLER( hexion_bankswitch_w );
READ8_HANDLER( hexion_bankedram_r );
diff --git a/src/mame/includes/higemaru.h b/src/mame/includes/higemaru.h
index 2b9dceb70d9..4b3508c7957 100644
--- a/src/mame/includes/higemaru.h
+++ b/src/mame/includes/higemaru.h
@@ -29,4 +29,4 @@ WRITE8_HANDLER( higemaru_c800_w );
PALETTE_INIT( higemaru );
VIDEO_START( higemaru );
-SCREEN_UPDATE( higemaru );
+SCREEN_UPDATE_IND16( higemaru );
diff --git a/src/mame/includes/himesiki.h b/src/mame/includes/himesiki.h
index c449c93cfb0..824314da778 100644
--- a/src/mame/includes/himesiki.h
+++ b/src/mame/includes/himesiki.h
@@ -28,7 +28,7 @@ public:
/*----------- defined in video/himesiki.c -----------*/
VIDEO_START( himesiki );
-SCREEN_UPDATE( himesiki );
+SCREEN_UPDATE_IND16( himesiki );
WRITE8_HANDLER( himesiki_bg_ram_w );
WRITE8_HANDLER( himesiki_scrollx_w );
diff --git a/src/mame/includes/hnayayoi.h b/src/mame/includes/hnayayoi.h
index 6898ae913c3..87a385b208a 100644
--- a/src/mame/includes/hnayayoi.h
+++ b/src/mame/includes/hnayayoi.h
@@ -27,7 +27,7 @@ public:
VIDEO_START( hnayayoi );
VIDEO_START( untoucha );
-SCREEN_UPDATE( hnayayoi );
+SCREEN_UPDATE_IND16( hnayayoi );
WRITE8_HANDLER( dynax_blitter_rev1_param_w );
WRITE8_HANDLER( dynax_blitter_rev1_start_w );
diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h
index c723edf6c45..d86b8539643 100644
--- a/src/mame/includes/hng64.h
+++ b/src/mame/includes/hng64.h
@@ -107,5 +107,5 @@ WRITE32_HANDLER( hng64_videoram_w );
void hng64_command3d(running_machine& machine, const UINT16* packet);
VIDEO_START( hng64 );
-SCREEN_UPDATE( hng64 );
+SCREEN_UPDATE_RGB32( hng64 );
SCREEN_EOF( hng64 );
diff --git a/src/mame/includes/holeland.h b/src/mame/includes/holeland.h
index 3e4c41f2cf7..9cfba256f37 100644
--- a/src/mame/includes/holeland.h
+++ b/src/mame/includes/holeland.h
@@ -28,8 +28,8 @@ public:
VIDEO_START( holeland );
VIDEO_START( crzrally );
-SCREEN_UPDATE( holeland );
-SCREEN_UPDATE( crzrally );
+SCREEN_UPDATE_IND16( holeland );
+SCREEN_UPDATE_IND16( crzrally );
WRITE8_HANDLER( holeland_videoram_w );
WRITE8_HANDLER( holeland_colorram_w );
diff --git a/src/mame/includes/homedata.h b/src/mame/includes/homedata.h
index 2ea631c9655..d777509ebd8 100644
--- a/src/mame/includes/homedata.h
+++ b/src/mame/includes/homedata.h
@@ -66,8 +66,8 @@ VIDEO_START( reikaids );
VIDEO_START( pteacher );
VIDEO_START( lemnangl );
VIDEO_START( mirderby );
-SCREEN_UPDATE( mrokumei );
-SCREEN_UPDATE( reikaids );
-SCREEN_UPDATE( pteacher );
-SCREEN_UPDATE( mirderby );
+SCREEN_UPDATE_IND16( mrokumei );
+SCREEN_UPDATE_IND16( reikaids );
+SCREEN_UPDATE_IND16( pteacher );
+SCREEN_UPDATE_IND16( mirderby );
SCREEN_EOF( homedata );
diff --git a/src/mame/includes/homerun.h b/src/mame/includes/homerun.h
index 44017718f4c..2c31a799dfa 100644
--- a/src/mame/includes/homerun.h
+++ b/src/mame/includes/homerun.h
@@ -35,4 +35,4 @@ WRITE8_HANDLER( homerun_color_w );
WRITE8_DEVICE_HANDLER( homerun_banking_w );
VIDEO_START(homerun);
-SCREEN_UPDATE(homerun);
+SCREEN_UPDATE_IND16(homerun);
diff --git a/src/mame/includes/hyhoo.h b/src/mame/includes/hyhoo.h
index 90b927d1d0c..87416719f6f 100644
--- a/src/mame/includes/hyhoo.h
+++ b/src/mame/includes/hyhoo.h
@@ -16,13 +16,13 @@ public:
int m_dispflag;
int m_highcolorflag;
int m_flipscreen;
- bitmap_t *m_tmpbitmap;
+ bitmap_rgb32 m_tmpbitmap;
};
/*----------- defined in video/hyhoo.c -----------*/
-SCREEN_UPDATE( hyhoo );
+SCREEN_UPDATE_RGB32( hyhoo );
VIDEO_START( hyhoo );
WRITE8_HANDLER( hyhoo_blitter_w );
diff --git a/src/mame/includes/hyperspt.h b/src/mame/includes/hyperspt.h
index 52abc8fa0c3..6d3396aff88 100644
--- a/src/mame/includes/hyperspt.h
+++ b/src/mame/includes/hyperspt.h
@@ -28,6 +28,6 @@ WRITE8_HANDLER( hyperspt_flipscreen_w );
PALETTE_INIT( hyperspt );
VIDEO_START( hyperspt );
-SCREEN_UPDATE( hyperspt );
+SCREEN_UPDATE_IND16( hyperspt );
VIDEO_START( roadf );
diff --git a/src/mame/includes/hyprduel.h b/src/mame/includes/hyprduel.h
index 4b05fc5aea5..b0e9253f117 100644
--- a/src/mame/includes/hyprduel.h
+++ b/src/mame/includes/hyprduel.h
@@ -64,4 +64,4 @@ WRITE16_HANDLER( hyprduel_scrollreg_init_w );
VIDEO_START( hyprduel_14220 );
VIDEO_START( magerror_14220 );
-SCREEN_UPDATE( hyprduel );
+SCREEN_UPDATE_IND16( hyprduel );
diff --git a/src/mame/includes/ikki.h b/src/mame/includes/ikki.h
index 560d056ce78..342f299f415 100644
--- a/src/mame/includes/ikki.h
+++ b/src/mame/includes/ikki.h
@@ -21,7 +21,7 @@ public:
size_t m_spriteram_size;
/* video-related */
- bitmap_t *m_sprite_bitmap;
+ bitmap_ind16 m_sprite_bitmap;
UINT8 m_flipscreen;
int m_punch_through_pen;
UINT8 m_irq_source;
@@ -37,4 +37,4 @@ WRITE8_HANDLER( ikki_scrn_ctrl_w );
PALETTE_INIT( ikki );
VIDEO_START( ikki );
-SCREEN_UPDATE( ikki );
+SCREEN_UPDATE_IND16( ikki );
diff --git a/src/mame/includes/inufuku.h b/src/mame/includes/inufuku.h
index 476a9df126c..a880359c507 100644
--- a/src/mame/includes/inufuku.h
+++ b/src/mame/includes/inufuku.h
@@ -42,5 +42,5 @@ WRITE16_HANDLER( inufuku_tx_videoram_w );
WRITE16_HANDLER( inufuku_palettereg_w );
WRITE16_HANDLER( inufuku_scrollreg_w );
-SCREEN_UPDATE( inufuku );
+SCREEN_UPDATE_IND16( inufuku );
VIDEO_START( inufuku );
diff --git a/src/mame/includes/iqblock.h b/src/mame/includes/iqblock.h
index fc864efe712..baafbe64609 100644
--- a/src/mame/includes/iqblock.h
+++ b/src/mame/includes/iqblock.h
@@ -26,4 +26,4 @@ READ8_HANDLER( iqblock_bgvideoram_r );
WRITE8_HANDLER( iqblock_fgscroll_w );
VIDEO_START( iqblock );
-SCREEN_UPDATE( iqblock );
+SCREEN_UPDATE_IND16( iqblock );
diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h
index 41b957ae871..778f127e1d9 100644
--- a/src/mame/includes/irobot.h
+++ b/src/mame/includes/irobot.h
@@ -84,7 +84,7 @@ WRITE8_HANDLER( irobot_sharedmem_w );
PALETTE_INIT( irobot );
VIDEO_START( irobot );
-SCREEN_UPDATE( irobot );
+SCREEN_UPDATE_IND16( irobot );
WRITE8_HANDLER( irobot_paletteram_w );
diff --git a/src/mame/includes/ironhors.h b/src/mame/includes/ironhors.h
index da133606b31..19c5ec20693 100644
--- a/src/mame/includes/ironhors.h
+++ b/src/mame/includes/ironhors.h
@@ -41,6 +41,6 @@ WRITE8_HANDLER( ironhors_flipscreen_w );
PALETTE_INIT( ironhors );
VIDEO_START( ironhors );
-SCREEN_UPDATE( ironhors );
+SCREEN_UPDATE_IND16( ironhors );
VIDEO_START( farwest );
-SCREEN_UPDATE( farwest );
+SCREEN_UPDATE_IND16( farwest );
diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h
index 94304c2f801..dcff70a14e1 100644
--- a/src/mame/includes/itech32.h
+++ b/src/mame/includes/itech32.h
@@ -109,4 +109,4 @@ WRITE32_HANDLER( itech020_video_w );
READ32_HANDLER( itech020_video_r );
WRITE32_HANDLER( drivedge_zbuf_control_w );
-SCREEN_UPDATE( itech32 );
+SCREEN_UPDATE_IND16( itech32 );
diff --git a/src/mame/includes/itech8.h b/src/mame/includes/itech8.h
index 6d1d98e9de1..4666f46d51c 100644
--- a/src/mame/includes/itech8.h
+++ b/src/mame/includes/itech8.h
@@ -71,7 +71,7 @@ READ8_HANDLER( slikshot_z80_control_r );
WRITE8_HANDLER( slikshot_z80_control_w );
VIDEO_START( slikshot );
-SCREEN_UPDATE( slikshot );
+SCREEN_UPDATE_RGB32( slikshot );
/*----------- defined in video/itech8.c -----------*/
@@ -92,7 +92,7 @@ WRITE8_HANDLER( grmatch_palette_w );
WRITE8_HANDLER( grmatch_xscroll_w );
TIMER_DEVICE_CALLBACK( grmatch_palette_update );
-SCREEN_UPDATE( itech8_2layer );
-SCREEN_UPDATE( itech8_grmatch );
-SCREEN_UPDATE( itech8_2page );
-SCREEN_UPDATE( itech8_2page_large );
+SCREEN_UPDATE_RGB32( itech8_2layer );
+SCREEN_UPDATE_RGB32( itech8_grmatch );
+SCREEN_UPDATE_RGB32( itech8_2page );
+SCREEN_UPDATE_RGB32( itech8_2page_large );
diff --git a/src/mame/includes/jack.h b/src/mame/includes/jack.h
index 3143ba7461e..e4028882606 100644
--- a/src/mame/includes/jack.h
+++ b/src/mame/includes/jack.h
@@ -42,8 +42,8 @@ READ8_HANDLER( jack_flipscreen_r );
WRITE8_HANDLER( jack_flipscreen_w );
VIDEO_START( jack );
-SCREEN_UPDATE( jack );
+SCREEN_UPDATE_IND16( jack );
PALETTE_INIT( joinem );
VIDEO_START( joinem );
-SCREEN_UPDATE( joinem );
+SCREEN_UPDATE_IND16( joinem );
diff --git a/src/mame/includes/jackal.h b/src/mame/includes/jackal.h
index 9340830d60d..da6d83d75e0 100644
--- a/src/mame/includes/jackal.h
+++ b/src/mame/includes/jackal.h
@@ -35,4 +35,4 @@ void jackal_mark_tile_dirty(running_machine &machine, int offset);
PALETTE_INIT( jackal );
VIDEO_START( jackal );
-SCREEN_UPDATE( jackal );
+SCREEN_UPDATE_IND16( jackal );
diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h
index ee83856ce14..b6ed1f11657 100644
--- a/src/mame/includes/jaguar.h
+++ b/src/mame/includes/jaguar.h
@@ -66,4 +66,4 @@ READ32_HANDLER( cojag_gun_input_r );
VIDEO_START( cojag );
VIDEO_START( jaguar );
-SCREEN_UPDATE( cojag );
+SCREEN_UPDATE_RGB32( cojag );
diff --git a/src/mame/includes/jailbrek.h b/src/mame/includes/jailbrek.h
index e1ca6e5e4af..bfbe17335cd 100644
--- a/src/mame/includes/jailbrek.h
+++ b/src/mame/includes/jailbrek.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( jailbrek_colorram_w );
PALETTE_INIT( jailbrek );
VIDEO_START( jailbrek );
-SCREEN_UPDATE( jailbrek );
+SCREEN_UPDATE_IND16( jailbrek );
diff --git a/src/mame/includes/jpmimpct.h b/src/mame/includes/jpmimpct.h
index d7bfec6b4c2..955a7b6858d 100644
--- a/src/mame/includes/jpmimpct.h
+++ b/src/mame/includes/jpmimpct.h
@@ -82,6 +82,6 @@ WRITE16_HANDLER( jpmimpct_bt477_w );
void jpmimpct_to_shiftreg(address_space *space, UINT32 address, UINT16 *shiftreg);
void jpmimpct_from_shiftreg(address_space *space, UINT32 address, UINT16 *shiftreg);
-void jpmimpct_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void jpmimpct_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params);
VIDEO_START( jpmimpct );
diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h
index 3fca080aedd..90c444f01dd 100644
--- a/src/mame/includes/kaneko16.h
+++ b/src/mame/includes/kaneko16.h
@@ -104,8 +104,8 @@ public:
UINT16 m_disp_enable;
tilemap_t *m_tmap[4];
int m_keep_sprites;
- bitmap_t *m_bg15_bitmap;
- bitmap_t *m_sprites_bitmap;
+ bitmap_ind16 m_bg15_bitmap;
+ bitmap_ind16 m_sprites_bitmap;
required_device<cpu_device> m_maincpu;
};
@@ -165,7 +165,7 @@ WRITE16_HANDLER( kaneko16_layers_1_regs_w );
READ16_HANDLER ( kaneko16_sprites_regs_r );
WRITE16_HANDLER( kaneko16_sprites_regs_w );
-void kaneko16_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+void kaneko16_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
READ16_HANDLER ( kaneko16_bg15_select_r );
WRITE16_HANDLER( kaneko16_bg15_select_w );
@@ -183,12 +183,12 @@ VIDEO_START( berlwall );
VIDEO_START( sandscrp_1xVIEW2 );
-SCREEN_UPDATE( kaneko16 );
-SCREEN_UPDATE( sandscrp );
-SCREEN_UPDATE( berlwall );
-SCREEN_UPDATE( jchan_view2 );
+SCREEN_UPDATE_IND16( kaneko16 );
+SCREEN_UPDATE_IND16( sandscrp );
+SCREEN_UPDATE_IND16( berlwall );
+SCREEN_UPDATE_IND16( jchan_view2 );
VIDEO_START( galsnew );
-SCREEN_UPDATE( galsnew );
+SCREEN_UPDATE_IND16( galsnew );
#endif
diff --git a/src/mame/includes/kangaroo.h b/src/mame/includes/kangaroo.h
index 0c13419a834..73101c28f0a 100644
--- a/src/mame/includes/kangaroo.h
+++ b/src/mame/includes/kangaroo.h
@@ -28,7 +28,7 @@ public:
/*----------- defined in video/kangaroo.c -----------*/
VIDEO_START( kangaroo );
-SCREEN_UPDATE( kangaroo );
+SCREEN_UPDATE_RGB32( kangaroo );
WRITE8_HANDLER( kangaroo_videoram_w );
WRITE8_HANDLER( kangaroo_video_control_w );
diff --git a/src/mame/includes/karnov.h b/src/mame/includes/karnov.h
index 70d651dc7f7..6e4fea9e60d 100644
--- a/src/mame/includes/karnov.h
+++ b/src/mame/includes/karnov.h
@@ -17,7 +17,7 @@ public:
// UINT16 * m_spriteram; // currently this uses generic buffered spriteram
/* video-related */
- bitmap_t *m_bitmap_f;
+ bitmap_ind16 *m_bitmap_f;
tilemap_t *m_fix_tilemap;
int m_flipscreen;
UINT16 m_scroll[2];
@@ -57,4 +57,4 @@ void karnov_flipscreen_w(running_machine &machine, int data);
PALETTE_INIT( karnov );
VIDEO_START( karnov );
VIDEO_START( wndrplnt );
-SCREEN_UPDATE( karnov );
+SCREEN_UPDATE_IND16( karnov );
diff --git a/src/mame/includes/kchamp.h b/src/mame/includes/kchamp.h
index 1104b2a1a5f..299dd0584ed 100644
--- a/src/mame/includes/kchamp.h
+++ b/src/mame/includes/kchamp.h
@@ -39,5 +39,5 @@ WRITE8_HANDLER( kchamp_flipscreen_w );
PALETTE_INIT( kchamp );
VIDEO_START( kchamp );
-SCREEN_UPDATE( kchamp );
-SCREEN_UPDATE( kchampvs );
+SCREEN_UPDATE_IND16( kchamp );
+SCREEN_UPDATE_IND16( kchampvs );
diff --git a/src/mame/includes/kickgoal.h b/src/mame/includes/kickgoal.h
index e1070c0c741..56cbb880576 100644
--- a/src/mame/includes/kickgoal.h
+++ b/src/mame/includes/kickgoal.h
@@ -50,7 +50,7 @@ WRITE16_HANDLER( kickgoal_bgram_w );
WRITE16_HANDLER( kickgoal_bg2ram_w );
VIDEO_START( kickgoal );
-SCREEN_UPDATE( kickgoal );
+SCREEN_UPDATE_IND16( kickgoal );
VIDEO_START( actionhw );
-SCREEN_UPDATE( actionhw );
+SCREEN_UPDATE_IND16( actionhw );
diff --git a/src/mame/includes/kingobox.h b/src/mame/includes/kingobox.h
index 0eaba02f092..09d73130aaa 100644
--- a/src/mame/includes/kingobox.h
+++ b/src/mame/includes/kingobox.h
@@ -44,8 +44,8 @@ WRITE8_HANDLER( kingofb_f800_w );
PALETTE_INIT( kingofb );
VIDEO_START( kingofb );
-SCREEN_UPDATE( kingofb );
+SCREEN_UPDATE_IND16( kingofb );
PALETTE_INIT( ringking );
VIDEO_START( ringking );
-SCREEN_UPDATE( ringking );
+SCREEN_UPDATE_IND16( ringking );
diff --git a/src/mame/includes/klax.h b/src/mame/includes/klax.h
index 9b4f591a7dd..09642812087 100644
--- a/src/mame/includes/klax.h
+++ b/src/mame/includes/klax.h
@@ -19,4 +19,4 @@ public:
WRITE16_HANDLER( klax_latch_w );
VIDEO_START( klax );
-SCREEN_UPDATE( klax );
+SCREEN_UPDATE_IND16( klax );
diff --git a/src/mame/includes/kncljoe.h b/src/mame/includes/kncljoe.h
index 38d8139f4bd..3989a2643d8 100644
--- a/src/mame/includes/kncljoe.h
+++ b/src/mame/includes/kncljoe.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER(kncljoe_scroll_w);
PALETTE_INIT( kncljoe );
VIDEO_START( kncljoe );
-SCREEN_UPDATE( kncljoe );
+SCREEN_UPDATE_IND16( kncljoe );
diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h
index d00e965bce5..aeae624dbec 100644
--- a/src/mame/includes/konamigx.h
+++ b/src/mame/includes/konamigx.h
@@ -73,10 +73,10 @@ extern UINT16 konamigx_wrport2;
#define GXSUB_5BPP 0x05 // 32 colors
#define GXSUB_8BPP 0x08 // 256 colors
-void konamigx_mixer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+void konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect,
tilemap_t *sub1, int sub1flags,
tilemap_t *sub2, int sub2flags,
- int mixerflags, bitmap_t* extra_bitmap, int rushingheroes_hack);
+ int mixerflags, bitmap_ind16* extra_bitmap, int rushingheroes_hack);
void konamigx_mixer_init(running_machine &machine, int objdma);
void konamigx_mixer_primode(int mode);
@@ -97,9 +97,9 @@ VIDEO_START(dragoonj);
VIDEO_START(winspike);
VIDEO_START(opengolf);
VIDEO_START(racinfrc);
-SCREEN_UPDATE(konamigx);
-SCREEN_UPDATE(konamigx_left);
-SCREEN_UPDATE(konamigx_right);
+SCREEN_UPDATE_RGB32(konamigx);
+SCREEN_UPDATE_RGB32(konamigx_left);
+SCREEN_UPDATE_RGB32(konamigx_right);
WRITE32_HANDLER( konamigx_palette_w );
#ifdef UNUSED_FUNCTION
diff --git a/src/mame/includes/kopunch.h b/src/mame/includes/kopunch.h
index 8afb8071ae5..6a0f30e1820 100644
--- a/src/mame/includes/kopunch.h
+++ b/src/mame/includes/kopunch.h
@@ -36,4 +36,4 @@ WRITE8_HANDLER( kopunch_gfxbank_w );
PALETTE_INIT( kopunch );
VIDEO_START( kopunch );
-SCREEN_UPDATE( kopunch );
+SCREEN_UPDATE_IND16( kopunch );
diff --git a/src/mame/includes/ksayakyu.h b/src/mame/includes/ksayakyu.h
index efa526954fa..1c90f9ac82f 100644
--- a/src/mame/includes/ksayakyu.h
+++ b/src/mame/includes/ksayakyu.h
@@ -32,4 +32,4 @@ WRITE8_HANDLER( ksayakyu_videoram_w );
WRITE8_HANDLER( ksayakyu_videoctrl_w );
PALETTE_INIT( ksayakyu );
VIDEO_START( ksayakyu );
-SCREEN_UPDATE( ksayakyu );
+SCREEN_UPDATE_IND16( ksayakyu );
diff --git a/src/mame/includes/kyugo.h b/src/mame/includes/kyugo.h
index ef67752f6af..60b5ac6ceec 100644
--- a/src/mame/includes/kyugo.h
+++ b/src/mame/includes/kyugo.h
@@ -50,4 +50,4 @@ WRITE8_HANDLER( kyugo_scroll_y_w );
WRITE8_HANDLER( kyugo_flipscreen_w );
VIDEO_START( kyugo );
-SCREEN_UPDATE( kyugo );
+SCREEN_UPDATE_IND16( kyugo );
diff --git a/src/mame/includes/labyrunr.h b/src/mame/includes/labyrunr.h
index 7338653558d..e486c65583e 100644
--- a/src/mame/includes/labyrunr.h
+++ b/src/mame/includes/labyrunr.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER( labyrunr_vram2_w );
PALETTE_INIT( labyrunr );
VIDEO_START( labyrunr );
-SCREEN_UPDATE( labyrunr );
+SCREEN_UPDATE_IND16( labyrunr );
diff --git a/src/mame/includes/ladybug.h b/src/mame/includes/ladybug.h
index cec8470dfb0..dabe64ff049 100644
--- a/src/mame/includes/ladybug.h
+++ b/src/mame/includes/ladybug.h
@@ -53,11 +53,11 @@ WRITE8_HANDLER( sraider_io_w );
PALETTE_INIT( ladybug );
VIDEO_START( ladybug );
-SCREEN_UPDATE( ladybug );
+SCREEN_UPDATE_IND16( ladybug );
PALETTE_INIT( sraider );
VIDEO_START( sraider );
-SCREEN_UPDATE( sraider );
+SCREEN_UPDATE_IND16( sraider );
SCREEN_EOF( sraider );
/*----------- defined in video/redclash.c -----------*/
@@ -73,11 +73,11 @@ WRITE8_HANDLER( redclash_star_reset_w );
PALETTE_INIT( redclash );
VIDEO_START( redclash );
-SCREEN_UPDATE( redclash );
+SCREEN_UPDATE_IND16( redclash );
SCREEN_EOF( redclash );
/* sraider uses the zerohour star generator board */
void redclash_set_stars_enable(running_machine &machine, UINT8 on);
void redclash_update_stars_state(running_machine &machine);
void redclash_set_stars_speed(running_machine &machine, UINT8 speed);
-void redclash_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 palette_offset, UINT8 sraider, UINT8 firstx, UINT8 lastx);
+void redclash_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 palette_offset, UINT8 sraider, UINT8 firstx, UINT8 lastx);
diff --git a/src/mame/includes/ladyfrog.h b/src/mame/includes/ladyfrog.h
index 13bfca079b3..e86391c89e0 100644
--- a/src/mame/includes/ladyfrog.h
+++ b/src/mame/includes/ladyfrog.h
@@ -51,4 +51,4 @@ READ8_HANDLER( ladyfrog_videoram_r );
VIDEO_START( ladyfrog );
VIDEO_START( toucheme );
-SCREEN_UPDATE( ladyfrog );
+SCREEN_UPDATE_IND16( ladyfrog );
diff --git a/src/mame/includes/lasso.h b/src/mame/includes/lasso.h
index 8f3a6252ce5..be0e52f0ca3 100644
--- a/src/mame/includes/lasso.h
+++ b/src/mame/includes/lasso.h
@@ -50,6 +50,6 @@ VIDEO_START( lasso );
VIDEO_START( wwjgtin );
VIDEO_START( pinbo );
-SCREEN_UPDATE( lasso );
-SCREEN_UPDATE( chameleo );
-SCREEN_UPDATE( wwjgtin );
+SCREEN_UPDATE_IND16( lasso );
+SCREEN_UPDATE_IND16( chameleo );
+SCREEN_UPDATE_IND16( wwjgtin );
diff --git a/src/mame/includes/lastduel.h b/src/mame/includes/lastduel.h
index 0227dcc942b..ef221aaa9b9 100644
--- a/src/mame/includes/lastduel.h
+++ b/src/mame/includes/lastduel.h
@@ -47,6 +47,6 @@ WRITE16_HANDLER( lastduel_palette_word_w );
VIDEO_START( lastduel );
VIDEO_START( madgear );
-SCREEN_UPDATE( lastduel );
-SCREEN_UPDATE( madgear );
+SCREEN_UPDATE_IND16( lastduel );
+SCREEN_UPDATE_IND16( madgear );
SCREEN_EOF( lastduel );
diff --git a/src/mame/includes/lazercmd.h b/src/mame/includes/lazercmd.h
index 252653331c7..501de69c06e 100644
--- a/src/mame/includes/lazercmd.h
+++ b/src/mame/includes/lazercmd.h
@@ -46,4 +46,4 @@ public:
/*----------- defined in video/lazercmd.c -----------*/
-SCREEN_UPDATE( lazercmd );
+SCREEN_UPDATE_IND16( lazercmd );
diff --git a/src/mame/includes/legionna.h b/src/mame/includes/legionna.h
index d0ab7601534..dca9aa350f1 100644
--- a/src/mame/includes/legionna.h
+++ b/src/mame/includes/legionna.h
@@ -38,6 +38,6 @@ VIDEO_START( cupsoc );
VIDEO_START( denjinmk );
VIDEO_START( grainbow );
VIDEO_START( godzilla );
-SCREEN_UPDATE( legionna );
-SCREEN_UPDATE( godzilla );
-SCREEN_UPDATE( grainbow );
+SCREEN_UPDATE_IND16( legionna );
+SCREEN_UPDATE_IND16( godzilla );
+SCREEN_UPDATE_IND16( grainbow );
diff --git a/src/mame/includes/lemmings.h b/src/mame/includes/lemmings.h
index 5852da9d0e3..6af96250dfb 100644
--- a/src/mame/includes/lemmings.h
+++ b/src/mame/includes/lemmings.h
@@ -15,7 +15,7 @@ public:
// UINT16 * m_spriteram2; // this currently uses generic buffered spriteram
/* video-related */
- bitmap_t *m_bitmap0;
+ bitmap_ind16 *m_bitmap0;
tilemap_t *m_vram_tilemap;
UINT16 *m_sprite_triple_buffer_0;
UINT16 *m_sprite_triple_buffer_1;
@@ -34,4 +34,4 @@ WRITE16_HANDLER( lemmings_vram_w );
VIDEO_START( lemmings );
SCREEN_EOF( lemmings );
-SCREEN_UPDATE( lemmings );
+SCREEN_UPDATE_IND16( lemmings );
diff --git a/src/mame/includes/lethal.h b/src/mame/includes/lethal.h
index 7821834180c..07b6f7e3c61 100644
--- a/src/mame/includes/lethal.h
+++ b/src/mame/includes/lethal.h
@@ -37,4 +37,4 @@ extern void lethalen_tile_callback(running_machine &machine, int layer, int *cod
WRITE8_HANDLER(lethalen_palette_control);
VIDEO_START(lethalen);
-SCREEN_UPDATE(lethalen);
+SCREEN_UPDATE_IND16(lethalen);
diff --git a/src/mame/includes/lethalj.h b/src/mame/includes/lethalj.h
index b7c8f3369a9..fdef8714416 100644
--- a/src/mame/includes/lethalj.h
+++ b/src/mame/includes/lethalj.h
@@ -29,4 +29,4 @@ VIDEO_START( lethalj );
WRITE16_HANDLER( lethalj_blitter_w );
-void lethalj_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void lethalj_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/liberate.h b/src/mame/includes/liberate.h
index 1110ae4e4a0..8be3ad617fd 100644
--- a/src/mame/includes/liberate.h
+++ b/src/mame/includes/liberate.h
@@ -31,10 +31,10 @@ public:
/*----------- defined in video/liberate.c -----------*/
PALETTE_INIT( liberate );
-SCREEN_UPDATE( prosoccr );
-SCREEN_UPDATE( prosport );
-SCREEN_UPDATE( liberate );
-SCREEN_UPDATE( boomrang );
+SCREEN_UPDATE_IND16( prosoccr );
+SCREEN_UPDATE_IND16( prosport );
+SCREEN_UPDATE_IND16( liberate );
+SCREEN_UPDATE_IND16( boomrang );
VIDEO_START( prosoccr );
VIDEO_START( prosport );
VIDEO_START( boomrang );
diff --git a/src/mame/includes/liberatr.h b/src/mame/includes/liberatr.h
index 9d3f796c8e9..59ec26eae26 100644
--- a/src/mame/includes/liberatr.h
+++ b/src/mame/includes/liberatr.h
@@ -31,18 +31,19 @@ public:
DECLARE_READ8_MEMBER( bitmap_xy_r );
DECLARE_WRITE8_MEMBER( bitmap_xy_w );
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
protected:
struct planet;
virtual void machine_start();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
void init_planet(planet &liberatr_planet, UINT8 *planet_rom);
void get_pens(pen_t *pens);
- void draw_planet(bitmap_t &bitmap, pen_t *pens);
- void draw_bitmap(bitmap_t &bitmap, pen_t *pens);
+ void draw_planet(bitmap_rgb32 &bitmap, pen_t *pens);
+ void draw_bitmap(bitmap_rgb32 &bitmap, pen_t *pens);
required_shared_ptr<UINT8> m_base_ram;
required_shared_ptr<UINT8> m_planet_frame;
diff --git a/src/mame/includes/lkage.h b/src/mame/includes/lkage.h
index de81488397c..456c8ca44cd 100644
--- a/src/mame/includes/lkage.h
+++ b/src/mame/includes/lkage.h
@@ -70,5 +70,5 @@ READ8_HANDLER( lkage_mcu_status_r );
WRITE8_HANDLER( lkage_videoram_w );
VIDEO_START( lkage );
-SCREEN_UPDATE( lkage );
+SCREEN_UPDATE_IND16( lkage );
diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h
index b071d5515c6..b802710d9d7 100644
--- a/src/mame/includes/lockon.h
+++ b/src/mame/includes/lockon.h
@@ -37,8 +37,8 @@ public:
UINT8 m_ground_ctrl;
UINT16 m_scroll_h;
UINT16 m_scroll_v;
- bitmap_t *m_front_buffer;
- bitmap_t *m_back_buffer;
+ bitmap_ind16 *m_front_buffer;
+ bitmap_ind16 *m_back_buffer;
emu_timer *m_bufend_timer;
emu_timer *m_cursor_timer;
@@ -80,7 +80,7 @@ public:
PALETTE_INIT( lockon );
VIDEO_START( lockon );
-SCREEN_UPDATE( lockon );
+SCREEN_UPDATE_IND16( lockon );
SCREEN_EOF( lockon );
READ16_HANDLER( lockon_crtc_r );
WRITE16_HANDLER( lockon_crtc_w );
diff --git a/src/mame/includes/lordgun.h b/src/mame/includes/lordgun.h
index 681f3e91220..1dc716b804a 100644
--- a/src/mame/includes/lordgun.h
+++ b/src/mame/includes/lordgun.h
@@ -28,7 +28,7 @@ public:
int m_whitescreen;
lordgun_gun_data m_gun[2];
tilemap_t *m_tilemap[4];
- bitmap_t *m_bitmaps[5];
+ bitmap_ind16 *m_bitmaps[5];
UINT16 *m_spriteram;
size_t m_spriteram_size;
};
@@ -46,4 +46,4 @@ float lordgun_crosshair_mapper(const input_field_config *field, float linear_val
void lordgun_update_gun(running_machine &machine, int i);
VIDEO_START( lordgun );
-SCREEN_UPDATE( lordgun );
+SCREEN_UPDATE_IND16( lordgun );
diff --git a/src/mame/includes/lsasquad.h b/src/mame/includes/lsasquad.h
index 02d22f24b4f..4030bdbfd2b 100644
--- a/src/mame/includes/lsasquad.h
+++ b/src/mame/includes/lsasquad.h
@@ -64,5 +64,5 @@ READ8_HANDLER( daikaiju_mcu_status_r );
/*----------- defined in video/lsasquad.c -----------*/
-SCREEN_UPDATE( lsasquad );
-SCREEN_UPDATE( daikaiju );
+SCREEN_UPDATE_IND16( lsasquad );
+SCREEN_UPDATE_IND16( daikaiju );
diff --git a/src/mame/includes/lucky74.h b/src/mame/includes/lucky74.h
index 9170804cdaf..7303dbbb336 100644
--- a/src/mame/includes/lucky74.h
+++ b/src/mame/includes/lucky74.h
@@ -29,4 +29,4 @@ WRITE8_HANDLER( lucky74_bg_videoram_w );
WRITE8_HANDLER( lucky74_bg_colorram_w );
PALETTE_INIT( lucky74 );
VIDEO_START( lucky74 );
-SCREEN_UPDATE( lucky74 );
+SCREEN_UPDATE_IND16( lucky74 );
diff --git a/src/mame/includes/lvcards.h b/src/mame/includes/lvcards.h
index 39addbd582a..529aa2ae06c 100644
--- a/src/mame/includes/lvcards.h
+++ b/src/mame/includes/lvcards.h
@@ -21,4 +21,4 @@ WRITE8_HANDLER( lvcards_colorram_w );
PALETTE_INIT( lvcards );
PALETTE_INIT( ponttehk );
VIDEO_START( lvcards );
-SCREEN_UPDATE( lvcards );
+SCREEN_UPDATE_IND16( lvcards );
diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h
index 2f6b49bf413..0711524984f 100644
--- a/src/mame/includes/lwings.h
+++ b/src/mame/includes/lwings.h
@@ -43,6 +43,6 @@ WRITE8_HANDLER( trojan_bg2_image_w );
VIDEO_START( lwings );
VIDEO_START( trojan );
VIDEO_START( avengers );
-SCREEN_UPDATE( lwings );
-SCREEN_UPDATE( trojan );
+SCREEN_UPDATE_IND16( lwings );
+SCREEN_UPDATE_IND16( trojan );
SCREEN_EOF( lwings );
diff --git a/src/mame/includes/m10.h b/src/mame/includes/m10.h
index 84544e04197..4c43e244cfb 100644
--- a/src/mame/includes/m10.h
+++ b/src/mame/includes/m10.h
@@ -70,8 +70,8 @@ WRITE8_HANDLER( m10_colorram_w );
WRITE8_HANDLER( m10_chargen_w );
WRITE8_HANDLER( m15_chargen_w );
-SCREEN_UPDATE( m10 );
-SCREEN_UPDATE( m15 );
+SCREEN_UPDATE_IND16( m10 );
+SCREEN_UPDATE_IND16( m15 );
VIDEO_START( m10 );
VIDEO_START( m15 );
diff --git a/src/mame/includes/m107.h b/src/mame/includes/m107.h
index 55fc37e1091..b25df1ac3a5 100644
--- a/src/mame/includes/m107.h
+++ b/src/mame/includes/m107.h
@@ -35,7 +35,7 @@ public:
/*----------- defined in video/m107.c -----------*/
WRITE16_HANDLER( m107_spritebuffer_w );
-SCREEN_UPDATE( m107 );
+SCREEN_UPDATE_IND16( m107 );
VIDEO_START( m107 );
WRITE16_HANDLER( m107_control_w );
WRITE16_HANDLER( m107_vram_w );
diff --git a/src/mame/includes/m52.h b/src/mame/includes/m52.h
index 8baea175a59..8ed1ec80f8e 100644
--- a/src/mame/includes/m52.h
+++ b/src/mame/includes/m52.h
@@ -36,4 +36,4 @@ WRITE8_HANDLER( m52_colorram_w );
PALETTE_INIT( m52 );
VIDEO_START( m52 );
-SCREEN_UPDATE( m52 );
+SCREEN_UPDATE_IND16( m52 );
diff --git a/src/mame/includes/m57.h b/src/mame/includes/m57.h
index 94b0e8bedcf..53031d181c7 100644
--- a/src/mame/includes/m57.h
+++ b/src/mame/includes/m57.h
@@ -23,4 +23,4 @@ WRITE8_HANDLER( m57_flipscreen_w );
PALETTE_INIT( m57 );
VIDEO_START( m57 );
-SCREEN_UPDATE( m57 );
+SCREEN_UPDATE_IND16( m57 );
diff --git a/src/mame/includes/m58.h b/src/mame/includes/m58.h
index be6b2775110..87daed4f77d 100644
--- a/src/mame/includes/m58.h
+++ b/src/mame/includes/m58.h
@@ -16,7 +16,7 @@ public:
UINT8 *m_yard_scroll_x_high;
UINT8 *m_yard_scroll_y_low;
UINT8 *m_yard_score_panel_disabled;
- bitmap_t *m_scroll_panel_bitmap;
+ bitmap_ind16 *m_scroll_panel_bitmap;
};
/*----------- defined in video/m58.c -----------*/
@@ -27,4 +27,4 @@ WRITE8_HANDLER( yard_flipscreen_w );
PALETTE_INIT( yard );
VIDEO_START( yard );
-SCREEN_UPDATE( yard );
+SCREEN_UPDATE_IND16( yard );
diff --git a/src/mame/includes/m62.h b/src/mame/includes/m62.h
index f1dd2843593..308808eee02 100644
--- a/src/mame/includes/m62.h
+++ b/src/mame/includes/m62.h
@@ -67,14 +67,14 @@ VIDEO_START( spelunkr );
VIDEO_START( spelunk2 );
VIDEO_START( youjyudn );
-SCREEN_UPDATE( battroad );
-SCREEN_UPDATE( horizon );
-SCREEN_UPDATE( kidniki );
-SCREEN_UPDATE( kungfum );
-SCREEN_UPDATE( ldrun );
-SCREEN_UPDATE( ldrun3 );
-SCREEN_UPDATE( ldrun4 );
-SCREEN_UPDATE( lotlot );
-SCREEN_UPDATE( spelunkr );
-SCREEN_UPDATE( spelunk2 );
-SCREEN_UPDATE( youjyudn );
+SCREEN_UPDATE_IND16( battroad );
+SCREEN_UPDATE_IND16( horizon );
+SCREEN_UPDATE_IND16( kidniki );
+SCREEN_UPDATE_IND16( kungfum );
+SCREEN_UPDATE_IND16( ldrun );
+SCREEN_UPDATE_IND16( ldrun3 );
+SCREEN_UPDATE_IND16( ldrun4 );
+SCREEN_UPDATE_IND16( lotlot );
+SCREEN_UPDATE_IND16( spelunkr );
+SCREEN_UPDATE_IND16( spelunk2 );
+SCREEN_UPDATE_IND16( youjyudn );
diff --git a/src/mame/includes/m72.h b/src/mame/includes/m72.h
index f395155dd5f..9d26d8721fa 100644
--- a/src/mame/includes/m72.h
+++ b/src/mame/includes/m72.h
@@ -67,5 +67,5 @@ WRITE16_HANDLER( m72_port02_w );
WRITE16_HANDLER( rtype2_port02_w );
WRITE16_HANDLER( majtitle_gfx_ctrl_w );
-SCREEN_UPDATE( m72 );
-SCREEN_UPDATE( majtitle );
+SCREEN_UPDATE_IND16( m72 );
+SCREEN_UPDATE_IND16( majtitle );
diff --git a/src/mame/includes/m90.h b/src/mame/includes/m90.h
index 655cb5b90c7..c734b3fee82 100644
--- a/src/mame/includes/m90.h
+++ b/src/mame/includes/m90.h
@@ -23,8 +23,8 @@ public:
VIDEO_START( m90 );
VIDEO_START( dynablsb );
VIDEO_START( bomblord );
-SCREEN_UPDATE( m90 );
-SCREEN_UPDATE( dynablsb );
-SCREEN_UPDATE( bomblord );
+SCREEN_UPDATE_IND16( m90 );
+SCREEN_UPDATE_IND16( dynablsb );
+SCREEN_UPDATE_IND16( bomblord );
WRITE16_HANDLER( m90_video_w );
WRITE16_HANDLER( m90_video_control_w );
diff --git a/src/mame/includes/m92.h b/src/mame/includes/m92.h
index 4afd117b223..b456dc327ae 100644
--- a/src/mame/includes/m92.h
+++ b/src/mame/includes/m92.h
@@ -52,6 +52,6 @@ WRITE16_HANDLER( m92_pf3_control_w );
WRITE16_HANDLER( m92_master_control_w );
VIDEO_START( m92 );
-SCREEN_UPDATE( m92 );
+SCREEN_UPDATE_IND16( m92 );
VIDEO_START( ppan );
-SCREEN_UPDATE( ppan );
+SCREEN_UPDATE_IND16( ppan );
diff --git a/src/mame/includes/macrossp.h b/src/mame/includes/macrossp.h
index 73fa552bd7e..202a13dba42 100644
--- a/src/mame/includes/macrossp.h
+++ b/src/mame/includes/macrossp.h
@@ -51,5 +51,5 @@ WRITE32_HANDLER( macrossp_scrc_videoram_w );
WRITE32_HANDLER( macrossp_text_videoram_w );
VIDEO_START(macrossp);
-SCREEN_UPDATE(macrossp);
+SCREEN_UPDATE_RGB32(macrossp);
SCREEN_EOF(macrossp);
diff --git a/src/mame/includes/madalien.h b/src/mame/includes/madalien.h
index d9d193ed4e7..ab92f20ce20 100644
--- a/src/mame/includes/madalien.h
+++ b/src/mame/includes/madalien.h
@@ -31,7 +31,7 @@ public:
tilemap_t *m_tilemap_fg;
tilemap_t *m_tilemap_edge1[4];
tilemap_t *m_tilemap_edge2[4];
- bitmap_t *m_headlight_bitmap;
+ bitmap_ind16 *m_headlight_bitmap;
};
diff --git a/src/mame/includes/madmotor.h b/src/mame/includes/madmotor.h
index 39bad970420..cc88cb2ca00 100644
--- a/src/mame/includes/madmotor.h
+++ b/src/mame/includes/madmotor.h
@@ -27,4 +27,4 @@ public:
/*----------- defined in video/madmotor.c -----------*/
VIDEO_START( madmotor );
-SCREEN_UPDATE( madmotor );
+SCREEN_UPDATE_IND16( madmotor );
diff --git a/src/mame/includes/magmax.h b/src/mame/includes/magmax.h
index 833fbe3d556..acd9b08dfe1 100644
--- a/src/mame/includes/magmax.h
+++ b/src/mame/includes/magmax.h
@@ -17,11 +17,12 @@ public:
UINT32 *m_prom_tab;
UINT16 *m_spriteram;
size_t m_spriteram_size;
+ bitmap_ind16 m_bitmap;
};
/*----------- defined in video/magmax.c -----------*/
PALETTE_INIT( magmax );
-SCREEN_UPDATE( magmax );
+SCREEN_UPDATE_IND16( magmax );
VIDEO_START( magmax );
diff --git a/src/mame/includes/mainevt.h b/src/mame/includes/mainevt.h
index ccaf56f1174..5728126d8ed 100644
--- a/src/mame/includes/mainevt.h
+++ b/src/mame/includes/mainevt.h
@@ -40,5 +40,5 @@ extern void dv_sprite_callback(running_machine &machine, int *code,int *color,in
VIDEO_START( mainevt );
VIDEO_START( dv );
-SCREEN_UPDATE( mainevt );
-SCREEN_UPDATE( dv );
+SCREEN_UPDATE_IND16( mainevt );
+SCREEN_UPDATE_IND16( dv );
diff --git a/src/mame/includes/mainsnk.h b/src/mame/includes/mainsnk.h
index 8793f1ec934..a1f05cb1189 100644
--- a/src/mame/includes/mainsnk.h
+++ b/src/mame/includes/mainsnk.h
@@ -22,4 +22,4 @@ WRITE8_HANDLER(mainsnk_c600_w);
WRITE8_HANDLER(mainsnk_fgram_w);
WRITE8_HANDLER(mainsnk_bgram_w);
VIDEO_START(mainsnk);
-SCREEN_UPDATE(mainsnk);
+SCREEN_UPDATE_IND16(mainsnk);
diff --git a/src/mame/includes/malzak.h b/src/mame/includes/malzak.h
index 2280a2089fc..0b7f18fa12e 100644
--- a/src/mame/includes/malzak.h
+++ b/src/mame/includes/malzak.h
@@ -30,4 +30,4 @@ public:
WRITE8_HANDLER( malzak_playfield_w );
-SCREEN_UPDATE( malzak );
+SCREEN_UPDATE_IND16( malzak );
diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h
index 036d713d2dc..f5007e9697f 100644
--- a/src/mame/includes/mappy.h
+++ b/src/mame/includes/mappy.h
@@ -7,7 +7,7 @@ public:
UINT8 *m_videoram;
UINT8 *m_spriteram;
tilemap_t *m_bg_tilemap;
- bitmap_t *m_sprite_bitmap;
+ bitmap_ind16 m_sprite_bitmap;
UINT8 m_scroll;
int m_mux;
@@ -22,14 +22,14 @@ public:
VIDEO_START( phozon );
PALETTE_INIT( phozon );
-SCREEN_UPDATE( phozon );
+SCREEN_UPDATE_IND16( phozon );
PALETTE_INIT( superpac );
PALETTE_INIT( mappy );
VIDEO_START( superpac );
VIDEO_START( mappy );
-SCREEN_UPDATE( superpac );
-SCREEN_UPDATE( mappy );
+SCREEN_UPDATE_IND16( superpac );
+SCREEN_UPDATE_IND16( mappy );
WRITE8_HANDLER( superpac_videoram_w );
WRITE8_HANDLER( mappy_videoram_w );
WRITE8_HANDLER( mappy_scroll_w );
diff --git a/src/mame/includes/marineb.h b/src/mame/includes/marineb.h
index dc1aaff80a0..393a55275b4 100644
--- a/src/mame/includes/marineb.h
+++ b/src/mame/includes/marineb.h
@@ -37,8 +37,8 @@ WRITE8_HANDLER( marineb_flipscreen_y_w );
PALETTE_INIT( marineb );
VIDEO_START( marineb );
-SCREEN_UPDATE( marineb );
-SCREEN_UPDATE( changes );
-SCREEN_UPDATE( springer );
-SCREEN_UPDATE( hoccer );
-SCREEN_UPDATE( hopprobo );
+SCREEN_UPDATE_IND16( marineb );
+SCREEN_UPDATE_IND16( changes );
+SCREEN_UPDATE_IND16( springer );
+SCREEN_UPDATE_IND16( hoccer );
+SCREEN_UPDATE_IND16( hopprobo );
diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h
index 35513769f5a..70cfdd546e3 100644
--- a/src/mame/includes/mario.h
+++ b/src/mame/includes/mario.h
@@ -72,7 +72,7 @@ WRITE8_HANDLER( mario_flip_w );
PALETTE_INIT( mario );
VIDEO_START( mario );
-SCREEN_UPDATE( mario );
+SCREEN_UPDATE_IND16( mario );
/*----------- defined in audio/mario.c -----------*/
diff --git a/src/mame/includes/markham.h b/src/mame/includes/markham.h
index dd8aabac908..f92ce725a61 100644
--- a/src/mame/includes/markham.h
+++ b/src/mame/includes/markham.h
@@ -28,4 +28,4 @@ WRITE8_HANDLER( markham_flipscreen_w );
PALETTE_INIT( markham );
VIDEO_START( markham );
-SCREEN_UPDATE( markham );
+SCREEN_UPDATE_IND16( markham );
diff --git a/src/mame/includes/matmania.h b/src/mame/includes/matmania.h
index c321a1eb4be..981963123ae 100644
--- a/src/mame/includes/matmania.h
+++ b/src/mame/includes/matmania.h
@@ -22,8 +22,8 @@ public:
size_t m_spriteram_size;
/* video-related */
- bitmap_t *m_tmpbitmap;
- bitmap_t *m_tmpbitmap2;
+ bitmap_ind16 *m_tmpbitmap;
+ bitmap_ind16 *m_tmpbitmap2;
/* mcu */
/* maniach 68705 protection */
@@ -67,6 +67,6 @@ READ8_HANDLER( maniach_mcu_status_r );
WRITE8_HANDLER( matmania_paletteram_w );
PALETTE_INIT( matmania );
-SCREEN_UPDATE( maniach );
+SCREEN_UPDATE_IND16( maniach );
VIDEO_START( matmania );
-SCREEN_UPDATE( matmania );
+SCREEN_UPDATE_IND16( matmania );
diff --git a/src/mame/includes/mcatadv.h b/src/mame/includes/mcatadv.h
index db1d515716b..682661dae28 100644
--- a/src/mame/includes/mcatadv.h
+++ b/src/mame/includes/mcatadv.h
@@ -30,7 +30,7 @@ public:
/*----------- defined in video/mcatadv.c -----------*/
-SCREEN_UPDATE( mcatadv );
+SCREEN_UPDATE_IND16( mcatadv );
VIDEO_START( mcatadv );
SCREEN_EOF( mcatadv );
diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h
index edd551ca7ff..0c87ce53a99 100644
--- a/src/mame/includes/mcr.h
+++ b/src/mame/includes/mcr.h
@@ -77,4 +77,4 @@ READ8_HANDLER( twotiger_videoram_r );
WRITE8_HANDLER( twotiger_videoram_w );
WRITE8_HANDLER( mcr_91490_videoram_w );
-SCREEN_UPDATE( mcr );
+SCREEN_UPDATE_IND16( mcr );
diff --git a/src/mame/includes/mcr3.h b/src/mame/includes/mcr3.h
index 546d2a586bc..d7744e652e1 100644
--- a/src/mame/includes/mcr3.h
+++ b/src/mame/includes/mcr3.h
@@ -38,5 +38,5 @@ VIDEO_START( spyhunt );
PALETTE_INIT( spyhunt );
-SCREEN_UPDATE( mcr3 );
-SCREEN_UPDATE( spyhunt );
+SCREEN_UPDATE_IND16( mcr3 );
+SCREEN_UPDATE_IND16( spyhunt );
diff --git a/src/mame/includes/mcr68.h b/src/mame/includes/mcr68.h
index d43b2a03063..0d6a916481c 100644
--- a/src/mame/includes/mcr68.h
+++ b/src/mame/includes/mcr68.h
@@ -74,11 +74,11 @@ WRITE16_HANDLER( mcr68_paletteram_w );
WRITE16_HANDLER( mcr68_videoram_w );
VIDEO_START( mcr68 );
-SCREEN_UPDATE( mcr68 );
+SCREEN_UPDATE_IND16( mcr68 );
WRITE16_HANDLER( zwackery_paletteram_w );
WRITE16_HANDLER( zwackery_videoram_w );
WRITE16_HANDLER( zwackery_spriteram_w );
VIDEO_START( zwackery );
-SCREEN_UPDATE( zwackery );
+SCREEN_UPDATE_IND16( zwackery );
diff --git a/src/mame/includes/meadows.h b/src/mame/includes/meadows.h
index 67714892f07..5ed40c5e8de 100644
--- a/src/mame/includes/meadows.h
+++ b/src/mame/includes/meadows.h
@@ -42,7 +42,7 @@ void meadows_sh_update(running_machine &machine);
/*----------- defined in video/meadows.c -----------*/
VIDEO_START( meadows );
-SCREEN_UPDATE( meadows );
+SCREEN_UPDATE_IND16( meadows );
WRITE8_HANDLER( meadows_videoram_w );
WRITE8_HANDLER( meadows_spriteram_w );
diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h
index 6c518df6f78..e9a41ca131a 100644
--- a/src/mame/includes/megadriv.h
+++ b/src/mame/includes/megadriv.h
@@ -66,7 +66,7 @@ extern UINT8 megadrive_io_ctrl_regs[3];
MACHINE_START( megadriv );
MACHINE_RESET( megadriv );
VIDEO_START( megadriv );
-SCREEN_UPDATE( megadriv );
+SCREEN_UPDATE_RGB32( megadriv );
SCREEN_EOF( megadriv );
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
index 87bfe65f95f..62403f44970 100644
--- a/src/mame/includes/megasys1.h
+++ b/src/mame/includes/megasys1.h
@@ -57,7 +57,7 @@ public:
/*----------- defined in video/megasys1.c -----------*/
VIDEO_START( megasys1 );
-SCREEN_UPDATE( megasys1 );
+SCREEN_UPDATE_IND16( megasys1 );
SCREEN_EOF( megasys1 );
PALETTE_INIT( megasys1 );
diff --git a/src/mame/includes/megazone.h b/src/mame/includes/megazone.h
index e121d871df9..a1d182fc045 100644
--- a/src/mame/includes/megazone.h
+++ b/src/mame/includes/megazone.h
@@ -23,7 +23,7 @@ public:
size_t m_videoram2_size;
/* video-related */
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 *m_tmpbitmap;
int m_flipscreen;
/* misc */
@@ -45,4 +45,4 @@ WRITE8_HANDLER( megazone_flipscreen_w );
PALETTE_INIT( megazone );
VIDEO_START( megazone );
-SCREEN_UPDATE( megazone );
+SCREEN_UPDATE_IND16( megazone );
diff --git a/src/mame/includes/mermaid.h b/src/mame/includes/mermaid.h
index 0025966ff57..cfd3268498f 100644
--- a/src/mame/includes/mermaid.h
+++ b/src/mame/includes/mermaid.h
@@ -23,8 +23,8 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- bitmap_t* m_helper;
- bitmap_t* m_helper2;
+ bitmap_ind16 m_helper;
+ bitmap_ind16 m_helper2;
int m_coll_bit0;
int m_coll_bit1;
int m_coll_bit2;
@@ -68,5 +68,5 @@ READ8_HANDLER( mermaid_collision_r );
PALETTE_INIT( mermaid );
PALETTE_INIT( rougien );
VIDEO_START( mermaid );
-SCREEN_UPDATE( mermaid );
+SCREEN_UPDATE_IND16( mermaid );
SCREEN_EOF( mermaid );
diff --git a/src/mame/includes/metlclsh.h b/src/mame/includes/metlclsh.h
index 6e3b50e0be0..23d38276bc0 100644
--- a/src/mame/includes/metlclsh.h
+++ b/src/mame/includes/metlclsh.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER( metlclsh_gfxbank_w );
WRITE8_HANDLER( metlclsh_rambank_w );
VIDEO_START( metlclsh );
-SCREEN_UPDATE( metlclsh );
+SCREEN_UPDATE_IND16( metlclsh );
diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h
index b50634d15f6..2bba30bd464 100644
--- a/src/mame/includes/metro.h
+++ b/src/mame/includes/metro.h
@@ -96,6 +96,6 @@ VIDEO_START( metro_14300 );
VIDEO_START( blzntrnd );
VIDEO_START( gstrik2 );
-SCREEN_UPDATE( metro );
+SCREEN_UPDATE_IND16( metro );
-void metro_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+void metro_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/mexico86.h b/src/mame/includes/mexico86.h
index 88195620cc4..5dfc962c8ab 100644
--- a/src/mame/includes/mexico86.h
+++ b/src/mame/includes/mexico86.h
@@ -59,5 +59,5 @@ WRITE8_HANDLER( mexico86_68705_ddr_b_w );
WRITE8_HANDLER( mexico86_bankswitch_w );
-SCREEN_UPDATE( mexico86 );
-SCREEN_UPDATE( kikikai );
+SCREEN_UPDATE_IND16( mexico86 );
+SCREEN_UPDATE_IND16( kikikai );
diff --git a/src/mame/includes/micro3d.h b/src/mame/includes/micro3d.h
index db2005bb8ea..a5a8c2139de 100644
--- a/src/mame/includes/micro3d.h
+++ b/src/mame/includes/micro3d.h
@@ -143,7 +143,7 @@ VIDEO_START( micro3d );
VIDEO_RESET( micro3d );
void micro3d_tms_interrupt(device_t *device, int state);
-void micro3d_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void micro3d_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
WRITE16_HANDLER( micro3d_clut_w );
WRITE16_HANDLER( micro3d_creg_w );
diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h
index 00ec5d8a6d9..276776a8b99 100644
--- a/src/mame/includes/midtunit.h
+++ b/src/mame/includes/midtunit.h
@@ -71,5 +71,5 @@ READ16_HANDLER( midxunit_paletteram_r );
READ16_HANDLER( midtunit_dma_r );
WRITE16_HANDLER( midtunit_dma_w );
-void midtunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
-void midxunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void midtunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
+void midxunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h
index 1016eda8472..cce627bedff 100644
--- a/src/mame/includes/midvunit.h
+++ b/src/mame/includes/midvunit.h
@@ -91,4 +91,4 @@ WRITE32_HANDLER( midvunit_textureram_w );
READ32_HANDLER( midvunit_textureram_r );
VIDEO_START( midvunit );
-SCREEN_UPDATE( midvunit );
+SCREEN_UPDATE_IND16( midvunit );
diff --git a/src/mame/includes/midyunit.h b/src/mame/includes/midyunit.h
index e50a269b372..319d90a4495 100644
--- a/src/mame/includes/midyunit.h
+++ b/src/mame/includes/midyunit.h
@@ -108,4 +108,4 @@ WRITE16_HANDLER( midyunit_paletteram_w );
READ16_HANDLER( midyunit_dma_r );
WRITE16_HANDLER( midyunit_dma_w );
-void midyunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params);
+void midyunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/midzeus.h b/src/mame/includes/midzeus.h
index dc50589cefd..8272b6d6041 100644
--- a/src/mame/includes/midzeus.h
+++ b/src/mame/includes/midzeus.h
@@ -22,7 +22,7 @@ public:
extern UINT32 *zeusbase;
VIDEO_START( midzeus );
-SCREEN_UPDATE( midzeus );
+SCREEN_UPDATE_IND16( midzeus );
READ32_HANDLER( zeus_r );
WRITE32_HANDLER( zeus_w );
@@ -30,7 +30,7 @@ WRITE32_HANDLER( zeus_w );
/*----------- defined in video/midzeus2.c -----------*/
VIDEO_START( midzeus2 );
-SCREEN_UPDATE( midzeus2 );
+SCREEN_UPDATE_RGB32( midzeus2 );
READ32_HANDLER( zeus2_r );
WRITE32_HANDLER( zeus2_w );
diff --git a/src/mame/includes/mikie.h b/src/mame/includes/mikie.h
index 49256723b1e..4651da3c888 100644
--- a/src/mame/includes/mikie.h
+++ b/src/mame/includes/mikie.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER( mikie_flipscreen_w );
PALETTE_INIT( mikie );
VIDEO_START( mikie );
-SCREEN_UPDATE( mikie );
+SCREEN_UPDATE_IND16( mikie );
diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h
index 82527f1d708..d42038c30e6 100644
--- a/src/mame/includes/mitchell.h
+++ b/src/mame/includes/mitchell.h
@@ -71,4 +71,4 @@ WRITE8_HANDLER( mstworld_gfxctrl_w );
WRITE8_HANDLER( mstworld_video_bank_w );
VIDEO_START( pang );
-SCREEN_UPDATE( pang );
+SCREEN_UPDATE_IND16( pang );
diff --git a/src/mame/includes/mjkjidai.h b/src/mame/includes/mjkjidai.h
index eaef623bba7..9f7ba953f91 100644
--- a/src/mame/includes/mjkjidai.h
+++ b/src/mame/includes/mjkjidai.h
@@ -23,7 +23,7 @@ public:
/*----------- defined in video/mjkjidai.c -----------*/
VIDEO_START( mjkjidai );
-SCREEN_UPDATE( mjkjidai );
+SCREEN_UPDATE_IND16( mjkjidai );
WRITE8_HANDLER( mjkjidai_videoram_w );
WRITE8_HANDLER( mjkjidai_ctrl_w );
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index 5952773326e..3f7c02b789a 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -112,7 +112,7 @@ void model1_tgp_reset(running_machine &machine, int swa);
/*----------- defined in video/model1.c -----------*/
VIDEO_START(model1);
-SCREEN_UPDATE(model1);
+SCREEN_UPDATE_RGB32(model1);
SCREEN_EOF(model1);
READ16_HANDLER( model1_listctl_r );
diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h
index 0b8847a0ad1..6f4659b16f0 100644
--- a/src/mame/includes/model2.h
+++ b/src/mame/includes/model2.h
@@ -66,7 +66,7 @@ public:
poly_manager *m_poly;
raster_state *m_raster;
geo_state *m_geo;
- bitmap_t *m_sys24_bitmap;
+ bitmap_rgb32 m_sys24_bitmap;
required_device<cpu_device> m_maincpu;
};
@@ -75,6 +75,6 @@ public:
/*----------- defined in video/model2.c -----------*/
VIDEO_START(model2);
-SCREEN_UPDATE(model2);
+SCREEN_UPDATE_RGB32(model2);
void model2_3d_set_zclip( running_machine &machine, UINT8 clip );
diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h
index e02cff19f85..a299786a8c9 100644
--- a/src/mame/includes/model3.h
+++ b/src/mame/includes/model3.h
@@ -78,8 +78,8 @@ public:
UINT32 *m_polygon_ram;
UINT16 *m_pal_lookup;
int m_real3d_display_list;
- bitmap_t *m_bitmap3d;
- bitmap_t *m_zbuffer;
+ bitmap_ind16 m_bitmap3d;
+ bitmap_ind32 m_zbuffer;
rectangle m_clip3d;
rectangle *m_screen_clip;
VECTOR3 m_parallel_light;
@@ -133,7 +133,7 @@ READ64_HANDLER(model3_palette_r);
WRITE64_HANDLER(model3_palette_w);
VIDEO_START(model3);
-SCREEN_UPDATE(model3);
+SCREEN_UPDATE_IND16(model3);
WRITE64_HANDLER(real3d_cmd_w);
WRITE64_HANDLER(real3d_display_list_w);
diff --git a/src/mame/includes/momoko.h b/src/mame/includes/momoko.h
index 2a8b5bbc798..a9055736c8e 100644
--- a/src/mame/includes/momoko.h
+++ b/src/mame/includes/momoko.h
@@ -46,4 +46,4 @@ WRITE8_HANDLER( momoko_fg_select_w);
WRITE8_HANDLER( momoko_bg_select_w);
WRITE8_HANDLER( momoko_bg_priority_w);
-SCREEN_UPDATE( momoko );
+SCREEN_UPDATE_IND16( momoko );
diff --git a/src/mame/includes/moo.h b/src/mame/includes/moo.h
index a166987338c..b683692a5a1 100644
--- a/src/mame/includes/moo.h
+++ b/src/mame/includes/moo.h
@@ -46,4 +46,4 @@ extern void moo_tile_callback(running_machine &machine, int layer, int *code, in
extern void moo_sprite_callback(running_machine &machine, int *code, int *color, int *priority_mask);
VIDEO_START(moo);
-SCREEN_UPDATE(moo);
+SCREEN_UPDATE_RGB32(moo);
diff --git a/src/mame/includes/mosaic.h b/src/mame/includes/mosaic.h
index 015960bd3d9..15e1ebf42a2 100644
--- a/src/mame/includes/mosaic.h
+++ b/src/mame/includes/mosaic.h
@@ -30,4 +30,4 @@ WRITE8_HANDLER( mosaic_fgvideoram_w );
WRITE8_HANDLER( mosaic_bgvideoram_w );
VIDEO_START( mosaic );
-SCREEN_UPDATE( mosaic );
+SCREEN_UPDATE_IND16( mosaic );
diff --git a/src/mame/includes/mouser.h b/src/mame/includes/mouser.h
index 2e6acf33f9f..fd3e51f4988 100644
--- a/src/mame/includes/mouser.h
+++ b/src/mame/includes/mouser.h
@@ -31,4 +31,4 @@ WRITE8_HANDLER( mouser_flip_screen_x_w );
WRITE8_HANDLER( mouser_flip_screen_y_w );
PALETTE_INIT( mouser );
-SCREEN_UPDATE( mouser );
+SCREEN_UPDATE_IND16( mouser );
diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h
index d6f5244816f..6b7ae632ab8 100644
--- a/src/mame/includes/mpu4.h
+++ b/src/mame/includes/mpu4.h
@@ -98,6 +98,11 @@ public:
mpu4_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+ {
+ return 0;
+ }
+
int m_mod_number;
int m_mmtr_data;
int m_alpha_data_line;
diff --git a/src/mame/includes/mrdo.h b/src/mame/includes/mrdo.h
index 0d1c28274cb..38fca72ce0f 100644
--- a/src/mame/includes/mrdo.h
+++ b/src/mame/includes/mrdo.h
@@ -33,4 +33,4 @@ WRITE8_HANDLER( mrdo_flipscreen_w );
PALETTE_INIT( mrdo );
VIDEO_START( mrdo );
-SCREEN_UPDATE( mrdo );
+SCREEN_UPDATE_IND16( mrdo );
diff --git a/src/mame/includes/mrflea.h b/src/mame/includes/mrflea.h
index acf1e4c121a..fb3e12d2294 100644
--- a/src/mame/includes/mrflea.h
+++ b/src/mame/includes/mrflea.h
@@ -36,4 +36,4 @@ WRITE8_HANDLER( mrflea_gfx_bank_w );
WRITE8_HANDLER( mrflea_videoram_w );
WRITE8_HANDLER( mrflea_spriteram_w );
-SCREEN_UPDATE( mrflea );
+SCREEN_UPDATE_IND16( mrflea );
diff --git a/src/mame/includes/mrjong.h b/src/mame/includes/mrjong.h
index 2de79c911be..d5e35164a8f 100644
--- a/src/mame/includes/mrjong.h
+++ b/src/mame/includes/mrjong.h
@@ -27,4 +27,4 @@ WRITE8_HANDLER( mrjong_flipscreen_w );
PALETTE_INIT( mrjong );
VIDEO_START( mrjong );
-SCREEN_UPDATE( mrjong );
+SCREEN_UPDATE_IND16( mrjong );
diff --git a/src/mame/includes/ms32.h b/src/mame/includes/ms32.h
index fbeb158faa2..cf44509a60b 100644
--- a/src/mame/includes/ms32.h
+++ b/src/mame/includes/ms32.h
@@ -26,9 +26,9 @@ public:
UINT32 *m_tx_scroll;
UINT32 *m_bg_scroll;
UINT32 *m_mainram;
- bitmap_t* m_temp_bitmap_tilemaps;
- bitmap_t* m_temp_bitmap_sprites;
- bitmap_t* m_temp_bitmap_sprites_pri;
+ bitmap_ind16 m_temp_bitmap_tilemaps;
+ bitmap_ind16 m_temp_bitmap_sprites;
+ bitmap_ind8 m_temp_bitmap_sprites_pri;
int m_reverse_sprite_order;
int m_flipscreen;
UINT32 m_brt[4];
@@ -48,4 +48,4 @@ WRITE32_HANDLER( ms32_brightness_w );
WRITE32_HANDLER( ms32_gfxctrl_w );
VIDEO_START( ms32 );
VIDEO_START( f1superb );
-SCREEN_UPDATE( ms32 );
+SCREEN_UPDATE_RGB32( ms32 );
diff --git a/src/mame/includes/msisaac.h b/src/mame/includes/msisaac.h
index dea7234ae66..1dea654f406 100644
--- a/src/mame/includes/msisaac.h
+++ b/src/mame/includes/msisaac.h
@@ -17,8 +17,8 @@ public:
size_t m_spriteram2_size;
/* video-related */
- bitmap_t *m_tmp_bitmap1;
- bitmap_t *m_tmp_bitmap2;
+ bitmap_ind16 *m_tmp_bitmap1;
+ bitmap_ind16 *m_tmp_bitmap2;
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg2_tilemap;
@@ -59,5 +59,5 @@ WRITE8_HANDLER( msisaac_bg_videoram_w );
WRITE8_HANDLER( msisaac_bg2_videoram_w );
WRITE8_HANDLER( msisaac_fg_videoram_w );
-SCREEN_UPDATE( msisaac );
+SCREEN_UPDATE_IND16( msisaac );
VIDEO_START( msisaac );
diff --git a/src/mame/includes/mugsmash.h b/src/mame/includes/mugsmash.h
index bd5ff20f144..08f52cf0e36 100644
--- a/src/mame/includes/mugsmash.h
+++ b/src/mame/includes/mugsmash.h
@@ -22,7 +22,7 @@ public:
/*----------- defined in video/mugsmash.c -----------*/
VIDEO_START( mugsmash );
-SCREEN_UPDATE( mugsmash );
+SCREEN_UPDATE_IND16( mugsmash );
WRITE16_HANDLER( mugsmash_reg_w );
WRITE16_HANDLER( mugsmash_videoram2_w );
diff --git a/src/mame/includes/munchmo.h b/src/mame/includes/munchmo.h
index b4c9c0dca23..40907cef8f5 100644
--- a/src/mame/includes/munchmo.h
+++ b/src/mame/includes/munchmo.h
@@ -19,7 +19,7 @@ public:
UINT8 * m_videoram;
/* video-related */
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 *m_tmpbitmap;
int m_palette_bank;
int m_flipscreen;
@@ -39,4 +39,4 @@ WRITE8_HANDLER( mnchmobl_flipscreen_w );
PALETTE_INIT( mnchmobl );
VIDEO_START( mnchmobl );
-SCREEN_UPDATE( mnchmobl );
+SCREEN_UPDATE_IND16( mnchmobl );
diff --git a/src/mame/includes/mustache.h b/src/mame/includes/mustache.h
index 91968b3a040..a8625909101 100644
--- a/src/mame/includes/mustache.h
+++ b/src/mame/includes/mustache.h
@@ -19,5 +19,5 @@ WRITE8_HANDLER( mustache_videoram_w );
WRITE8_HANDLER( mustache_scroll_w );
WRITE8_HANDLER( mustache_video_control_w );
VIDEO_START( mustache );
-SCREEN_UPDATE( mustache );
+SCREEN_UPDATE_IND16( mustache );
PALETTE_INIT( mustache );
diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h
index a337f2f2d0a..cdd673ae50f 100644
--- a/src/mame/includes/mw8080bw.h
+++ b/src/mame/includes/mw8080bw.h
@@ -225,11 +225,11 @@ WRITE8_DEVICE_HANDLER( invad2ct_audio_4_w );
/*----------- defined in video/mw8080bw.c -----------*/
-SCREEN_UPDATE( mw8080bw );
+SCREEN_UPDATE_RGB32( mw8080bw );
-SCREEN_UPDATE( spcenctr );
+SCREEN_UPDATE_RGB32( spcenctr );
-SCREEN_UPDATE( phantom2 );
+SCREEN_UPDATE_RGB32( phantom2 );
SCREEN_EOF( phantom2 );
-SCREEN_UPDATE( invaders );
+SCREEN_UPDATE_RGB32( invaders );
diff --git a/src/mame/includes/mystwarr.h b/src/mame/includes/mystwarr.h
index f51bf45c508..fc23e20f4cf 100644
--- a/src/mame/includes/mystwarr.h
+++ b/src/mame/includes/mystwarr.h
@@ -34,10 +34,10 @@ VIDEO_START( viostorm );
VIDEO_START( metamrph );
VIDEO_START( martchmp );
VIDEO_START( mystwarr );
-SCREEN_UPDATE( dadandrn );
-SCREEN_UPDATE( mystwarr );
-SCREEN_UPDATE( metamrph );
-SCREEN_UPDATE( martchmp );
+SCREEN_UPDATE_RGB32( dadandrn );
+SCREEN_UPDATE_RGB32( mystwarr );
+SCREEN_UPDATE_RGB32( metamrph );
+SCREEN_UPDATE_RGB32( martchmp );
WRITE16_HANDLER( ddd_053936_enable_w );
WRITE16_HANDLER( ddd_053936_clip_w );
diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h
index c6fca55b101..d3c776c977b 100644
--- a/src/mame/includes/n64.h
+++ b/src/mame/includes/n64.h
@@ -19,7 +19,7 @@ public:
/*----------- defined in video/n64.c -----------*/
extern VIDEO_START( n64 );
-extern SCREEN_UPDATE( n64 );
+extern SCREEN_UPDATE_RGB32( n64 );
#define DACRATE_NTSC (48681812)
#define DACRATE_PAL (49656530)
diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h
index fcf922dc641..a2092769105 100644
--- a/src/mame/includes/n8080.h
+++ b/src/mame/includes/n8080.h
@@ -52,9 +52,9 @@ PALETTE_INIT( helifire );
VIDEO_START( spacefev );
VIDEO_START( sheriff );
VIDEO_START( helifire );
-SCREEN_UPDATE( spacefev );
-SCREEN_UPDATE( sheriff );
-SCREEN_UPDATE( helifire );
+SCREEN_UPDATE_IND16( spacefev );
+SCREEN_UPDATE_IND16( sheriff );
+SCREEN_UPDATE_IND16( helifire );
SCREEN_EOF( helifire );
void spacefev_start_red_cannon(running_machine &machine);
diff --git a/src/mame/includes/namcofl.h b/src/mame/includes/namcofl.h
index 433b1bed978..fde8ce129f5 100644
--- a/src/mame/includes/namcofl.h
+++ b/src/mame/includes/namcofl.h
@@ -36,6 +36,6 @@ public:
/*----------- defined in video/namcofl.c -----------*/
VIDEO_START( namcofl );
-SCREEN_UPDATE( namcofl );
+SCREEN_UPDATE_IND16( namcofl );
WRITE32_HANDLER( namcofl_spritebank_w );
diff --git a/src/mame/includes/namcoic.h b/src/mame/includes/namcoic.h
index c8bf72361f8..2f841bb920e 100644
--- a/src/mame/includes/namcoic.h
+++ b/src/mame/includes/namcoic.h
@@ -93,7 +93,7 @@ C102 - Controls CPU access to ROZ Memory Area.
void namco_tilemap_init(
running_machine &machine, int gfxbank, void *pMaskROM,
void (*cb)( running_machine &machine, UINT16 code, int *gfx, int *mask) );
-void namco_tilemap_draw( bitmap_t &bitmap, const rectangle &cliprect, int pri );
+void namco_tilemap_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
void namco_tilemap_invalidate( void );
WRITE16_HANDLER( namco_tilemapvideoram16_w );
READ16_HANDLER( namco_tilemapvideoram16_r );
@@ -113,16 +113,17 @@ WRITE32_HANDLER( namco_tilemapcontrol32_le_w );
/***********************************************************************************/
/* Namco System II Sprite Rendering */
-void namcos2_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri, int control );
+void namcos2_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control );
-void namcos2_draw_sprites_metalhawk( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri );
+void namcos2_draw_sprites_metalhawk( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
/***********************************************************************************/
/* C355 Motion Object Emulation */
/* for palXOR, supply either 0x0 (normal) or 0xf (palette mapping reversed) */
void namco_obj_init( running_machine &machine, int gfxbank, int palXOR, int (*code2tile)( running_machine &machine, int code ) );
-void namco_obj_draw( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri );
+void namco_obj_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
+void namco_obj_draw( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri );
WRITE16_HANDLER( namco_obj16_w );
READ16_HANDLER( namco_obj16_r );
@@ -142,7 +143,7 @@ READ32_HANDLER( namco_spritepos32_r );
/* C169 ROZ Layer Emulation */
void namco_roz_init( running_machine &machine, int gfxbank, const char *maskregion );
-void namco_roz_draw( bitmap_t &bitmap, const rectangle &cliprect, int pri );
+void namco_roz_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
READ16_HANDLER( namco_rozcontrol16_r );
WRITE16_HANDLER( namco_rozcontrol16_w );
@@ -165,7 +166,7 @@ WRITE32_HANDLER( namco_rozvideoram32_le_w );
void namco_road_init( running_machine &machine, int gfxbank );
void namco_road_set_transparent_color(pen_t pen);
-void namco_road_draw( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri );
+void namco_road_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
READ16_HANDLER( namco_road16_r );
WRITE16_HANDLER( namco_road16_w );
diff --git a/src/mame/includes/namcona1.h b/src/mame/includes/namcona1.h
index e405e63b790..5c7d67fcf15 100644
--- a/src/mame/includes/namcona1.h
+++ b/src/mame/includes/namcona1.h
@@ -69,5 +69,5 @@ extern WRITE16_HANDLER( namcona1_gfxram_w );
extern READ16_HANDLER( namcona1_paletteram_r );
extern WRITE16_HANDLER( namcona1_paletteram_w );
-extern SCREEN_UPDATE( namcona1 );
+extern SCREEN_UPDATE_IND16( namcona1 );
extern VIDEO_START( namcona1 );
diff --git a/src/mame/includes/namconb1.h b/src/mame/includes/namconb1.h
index bf274c99b1f..6af9e2e997a 100644
--- a/src/mame/includes/namconb1.h
+++ b/src/mame/includes/namconb1.h
@@ -40,8 +40,8 @@ public:
/*----------- defined in video/namconb1.c -----------*/
-SCREEN_UPDATE( namconb1 );
+SCREEN_UPDATE_IND16( namconb1 );
VIDEO_START( namconb1 );
-SCREEN_UPDATE( namconb2 );
+SCREEN_UPDATE_IND16( namconb2 );
VIDEO_START( namconb2 );
diff --git a/src/mame/includes/namcos1.h b/src/mame/includes/namcos1.h
index f67fc6f00d6..2700450adfb 100644
--- a/src/mame/includes/namcos1.h
+++ b/src/mame/includes/namcos1.h
@@ -102,5 +102,5 @@ READ8_HANDLER( namcos1_spriteram_r );
WRITE8_HANDLER( namcos1_spriteram_w );
VIDEO_START( namcos1 );
-SCREEN_UPDATE( namcos1 );
+SCREEN_UPDATE_IND16( namcos1 );
SCREEN_EOF( namcos1 );
diff --git a/src/mame/includes/namcos2.h b/src/mame/includes/namcos2.h
index 83c72da32f5..68b4c6b4d71 100644
--- a/src/mame/includes/namcos2.h
+++ b/src/mame/includes/namcos2.h
@@ -90,19 +90,19 @@ enum
#define NAMCOS21_NUM_COLORS 0x8000
VIDEO_START( namcos2 );
-SCREEN_UPDATE( namcos2_default );
+SCREEN_UPDATE_IND16( namcos2_default );
VIDEO_START( finallap );
-SCREEN_UPDATE( finallap );
+SCREEN_UPDATE_IND16( finallap );
VIDEO_START( luckywld );
-SCREEN_UPDATE( luckywld );
+SCREEN_UPDATE_IND16( luckywld );
VIDEO_START( metlhawk );
-SCREEN_UPDATE( metlhawk );
+SCREEN_UPDATE_IND16( metlhawk );
VIDEO_START( sgunner );
-SCREEN_UPDATE( sgunner );
+SCREEN_UPDATE_IND16( sgunner );
extern UINT16 *namcos2_sprite_ram;
WRITE16_HANDLER( namcos2_sprite_ram_w );
diff --git a/src/mame/includes/namcos21.h b/src/mame/includes/namcos21.h
index 5da4c16879f..4e6fc1b59dc 100644
--- a/src/mame/includes/namcos21.h
+++ b/src/mame/includes/namcos21.h
@@ -79,4 +79,4 @@ extern READ16_HANDLER(winrun_gpu_register_r);
extern WRITE16_HANDLER(winrun_gpu_register_w);
extern VIDEO_START( namcos21 ) ;
-extern SCREEN_UPDATE( namcos21 );
+extern SCREEN_UPDATE_IND16( namcos21 );
diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h
index 8f3e5ea6301..672cbae38d6 100644
--- a/src/mame/includes/namcos22.h
+++ b/src/mame/includes/namcos22.h
@@ -104,7 +104,7 @@ public:
const UINT8 *m_mpPolyM;
const UINT8 *m_mpPolyL;
UINT8 *m_dirtypal;
- bitmap_t *m_mix_bitmap;
+ bitmap_ind16 *m_mix_bitmap;
tilemap_t *m_bgtilemap;
};
@@ -144,10 +144,10 @@ WRITE32_HANDLER( namcos22_dspram_w );
VIDEO_START( namcos22 );
-SCREEN_UPDATE( namcos22 );
+SCREEN_UPDATE_RGB32( namcos22 );
VIDEO_START( namcos22s );
-SCREEN_UPDATE( namcos22s );
+SCREEN_UPDATE_RGB32( namcos22s );
void namcos22_draw_direct_poly( running_machine &machine, const UINT16 *pSource );
UINT32 namcos22_point_rom_r( running_machine &machine, offs_t offs );
diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h
index 2bd5f2a08f1..6f4d6bed192 100644
--- a/src/mame/includes/namcos86.h
+++ b/src/mame/includes/namcos86.h
@@ -23,7 +23,7 @@ public:
PALETTE_INIT( namcos86 );
VIDEO_START( namcos86 );
-SCREEN_UPDATE( namcos86 );
+SCREEN_UPDATE_IND16( namcos86 );
SCREEN_EOF( namcos86 );
READ8_HANDLER( rthunder_videoram1_r );
diff --git a/src/mame/includes/naughtyb.h b/src/mame/includes/naughtyb.h
index 91d7d99d7d1..d2b27c066fc 100644
--- a/src/mame/includes/naughtyb.h
+++ b/src/mame/includes/naughtyb.h
@@ -14,7 +14,7 @@ public:
int m_cocktail;
UINT8 m_palreg;
int m_bankreg;
- bitmap_t m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
};
@@ -25,4 +25,4 @@ WRITE8_HANDLER( popflame_videoreg_w );
VIDEO_START( naughtyb );
PALETTE_INIT( naughtyb );
-SCREEN_UPDATE( naughtyb );
+SCREEN_UPDATE_IND16( naughtyb );
diff --git a/src/mame/includes/nbmj8688.h b/src/mame/includes/nbmj8688.h
index 7ddf5b7d456..5e962a658bd 100644
--- a/src/mame/includes/nbmj8688.h
+++ b/src/mame/includes/nbmj8688.h
@@ -19,7 +19,7 @@ public:
int m_mjsikaku_flipscreen;
int m_mjsikaku_screen_refresh;
int m_mjsikaku_gfxmode;
- bitmap_t *m_mjsikaku_tmpbitmap;
+ bitmap_ind16 *m_mjsikaku_tmpbitmap;
UINT16 *m_mjsikaku_videoram;
UINT8 *m_clut;
UINT8 *m_HD61830B_ram[2];
@@ -34,9 +34,9 @@ public:
PALETTE_INIT( mbmj8688_8bit );
PALETTE_INIT( mbmj8688_12bit );
PALETTE_INIT( mbmj8688_16bit );
-SCREEN_UPDATE( mbmj8688 );
-SCREEN_UPDATE( mbmj8688_lcd0 );
-SCREEN_UPDATE( mbmj8688_lcd1 );
+SCREEN_UPDATE_IND16( mbmj8688 );
+SCREEN_UPDATE_IND16( mbmj8688_lcd0 );
+SCREEN_UPDATE_IND16( mbmj8688_lcd1 );
VIDEO_START( mbmj8688_8bit );
VIDEO_START( mbmj8688_hybrid_12bit );
VIDEO_START( mbmj8688_pure_12bit );
diff --git a/src/mame/includes/nbmj8891.h b/src/mame/includes/nbmj8891.h
index 053c0784612..fa782660c49 100644
--- a/src/mame/includes/nbmj8891.h
+++ b/src/mame/includes/nbmj8891.h
@@ -19,8 +19,8 @@ public:
int m_clutsel;
int m_screen_refresh;
int m_gfxdraw_mode;
- bitmap_t *m_tmpbitmap0;
- bitmap_t *m_tmpbitmap1;
+ bitmap_ind16 m_tmpbitmap0;
+ bitmap_ind16 m_tmpbitmap1;
UINT8 *m_videoram0;
UINT8 *m_videoram1;
UINT8 *m_palette;
@@ -33,7 +33,7 @@ public:
/*----------- defined in video/nbmj8891.c -----------*/
-SCREEN_UPDATE( nbmj8891 );
+SCREEN_UPDATE_IND16( nbmj8891 );
VIDEO_START( nbmj8891_1layer );
VIDEO_START( nbmj8891_2layer );
diff --git a/src/mame/includes/nbmj8900.h b/src/mame/includes/nbmj8900.h
index f9c957836a4..a5a0d0aac83 100644
--- a/src/mame/includes/nbmj8900.h
+++ b/src/mame/includes/nbmj8900.h
@@ -21,8 +21,8 @@ public:
int m_gfxdraw_mode;
int m_screen_height;
int m_screen_width;
- bitmap_t *m_tmpbitmap0;
- bitmap_t *m_tmpbitmap1;
+ bitmap_ind16 m_tmpbitmap0;
+ bitmap_ind16 m_tmpbitmap1;
UINT8 *m_videoram0;
UINT8 *m_videoram1;
UINT8 *m_palette;
@@ -33,7 +33,7 @@ public:
/*----------- defined in video/nbmj8900.c -----------*/
-SCREEN_UPDATE( nbmj8900 );
+SCREEN_UPDATE_IND16( nbmj8900 );
VIDEO_START( nbmj8900_2layer );
READ8_HANDLER( nbmj8900_palette_type1_r );
diff --git a/src/mame/includes/nbmj8991.h b/src/mame/includes/nbmj8991.h
index 46fb59b9957..a52f935f995 100644
--- a/src/mame/includes/nbmj8991.h
+++ b/src/mame/includes/nbmj8991.h
@@ -18,7 +18,7 @@ public:
int m_flipscreen;
int m_clutsel;
int m_screen_refresh;
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
UINT8 *m_videoram;
UINT8 *m_clut;
int m_flipscreen_old;
@@ -27,8 +27,8 @@ public:
/*----------- defined in video/nbmj8991.c -----------*/
-SCREEN_UPDATE( nbmj8991_type1 );
-SCREEN_UPDATE( nbmj8991_type2 );
+SCREEN_UPDATE_IND16( nbmj8991_type1 );
+SCREEN_UPDATE_IND16( nbmj8991_type2 );
VIDEO_START( nbmj8991 );
WRITE8_HANDLER( nbmj8991_palette_type1_w );
diff --git a/src/mame/includes/nbmj9195.h b/src/mame/includes/nbmj9195.h
index 773b367b53d..75edffa8a92 100644
--- a/src/mame/includes/nbmj9195.h
+++ b/src/mame/includes/nbmj9195.h
@@ -39,7 +39,7 @@ public:
int m_gfxdraw_mode;
int m_nb19010_busyctr;
int m_nb19010_busyflag;
- bitmap_t *m_tmpbitmap[VRAM_MAX];
+ bitmap_ind16 m_tmpbitmap[VRAM_MAX];
UINT16 *m_videoram[VRAM_MAX];
UINT16 *m_videoworkram[VRAM_MAX];
UINT8 *m_palette;
@@ -51,7 +51,7 @@ public:
/*----------- defined in video/nbmj9195.c -----------*/
-SCREEN_UPDATE( nbmj9195 );
+SCREEN_UPDATE_IND16( nbmj9195 );
VIDEO_START( nbmj9195_1layer );
VIDEO_START( nbmj9195_2layer );
VIDEO_START( nbmj9195_nb22090 );
diff --git a/src/mame/includes/nemesis.h b/src/mame/includes/nemesis.h
index 03dd5d077ee..8e096a6e5b4 100644
--- a/src/mame/includes/nemesis.h
+++ b/src/mame/includes/nemesis.h
@@ -61,4 +61,4 @@ WRITE16_HANDLER( nemesis_colorram2_word_w );
WRITE16_HANDLER( nemesis_charram_word_w );
VIDEO_START( nemesis );
-SCREEN_UPDATE( nemesis );
+SCREEN_UPDATE_IND16( nemesis );
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index 90b3b8a3a72..512903ad876 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -212,7 +212,7 @@ void mvs_install_protection(device_image_interface& image);
VIDEO_START( neogeo );
VIDEO_RESET( neogeo );
-SCREEN_UPDATE( neogeo );
+SCREEN_UPDATE_RGB32( neogeo );
READ16_HANDLER( neogeo_video_register_r );
WRITE16_HANDLER( neogeo_video_register_w );
diff --git a/src/mame/includes/news.h b/src/mame/includes/news.h
index 3a6b22e7af4..f103b75f602 100644
--- a/src/mame/includes/news.h
+++ b/src/mame/includes/news.h
@@ -24,4 +24,4 @@ WRITE8_HANDLER( news_bgram_w );
WRITE8_HANDLER( news_bgpic_w );
VIDEO_START( news );
-SCREEN_UPDATE( news );
+SCREEN_UPDATE_IND16( news );
diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h
index b5fb334b4ab..5c638c0308d 100644
--- a/src/mame/includes/ninjakd2.h
+++ b/src/mame/includes/ninjakd2.h
@@ -13,7 +13,7 @@ public:
int m_next_sprite_overdraw_enabled;
int (*m_stencil_compare_function) (UINT16 pal);
int m_sprites_updated;
- bitmap_t *m_sp_bitmap;
+ bitmap_ind16 m_sp_bitmap;
int m_robokid_sprites;
tilemap_t* m_fg_tilemap;
tilemap_t* m_bg_tilemap;
@@ -56,8 +56,8 @@ extern VIDEO_START( mnight );
extern VIDEO_START( arkarea );
extern VIDEO_START( robokid );
extern VIDEO_START( omegaf );
-extern SCREEN_UPDATE( ninjakd2 );
-extern SCREEN_UPDATE( robokid );
-extern SCREEN_UPDATE( omegaf );
+extern SCREEN_UPDATE_IND16( ninjakd2 );
+extern SCREEN_UPDATE_IND16( robokid );
+extern SCREEN_UPDATE_IND16( omegaf );
extern SCREEN_EOF( ninjakd2 );
diff --git a/src/mame/includes/ninjaw.h b/src/mame/includes/ninjaw.h
index f72a0e0af8f..00ecf40a297 100644
--- a/src/mame/includes/ninjaw.h
+++ b/src/mame/includes/ninjaw.h
@@ -40,6 +40,6 @@ public:
/*----------- defined in video/ninjaw.c -----------*/
VIDEO_START( ninjaw );
-SCREEN_UPDATE( ninjaw_left );
-SCREEN_UPDATE( ninjaw_middle );
-SCREEN_UPDATE( ninjaw_right );
+SCREEN_UPDATE_IND16( ninjaw_left );
+SCREEN_UPDATE_IND16( ninjaw_middle );
+SCREEN_UPDATE_IND16( ninjaw_right );
diff --git a/src/mame/includes/nitedrvr.h b/src/mame/includes/nitedrvr.h
index b09516401ff..0e7125c6fb1 100644
--- a/src/mame/includes/nitedrvr.h
+++ b/src/mame/includes/nitedrvr.h
@@ -71,4 +71,4 @@ WRITE8_HANDLER( nitedrvr_hvc_w );
WRITE8_HANDLER( nitedrvr_videoram_w );
VIDEO_START( nitedrvr );
-SCREEN_UPDATE( nitedrvr );
+SCREEN_UPDATE_IND16( nitedrvr );
diff --git a/src/mame/includes/niyanpai.h b/src/mame/includes/niyanpai.h
index 04a00cfc246..565e6059f43 100644
--- a/src/mame/includes/niyanpai.h
+++ b/src/mame/includes/niyanpai.h
@@ -27,7 +27,7 @@ public:
int m_screen_refresh;
int m_nb19010_busyctr;
int m_nb19010_busyflag;
- bitmap_t *m_tmpbitmap[VRAM_MAX];
+ bitmap_ind16 m_tmpbitmap[VRAM_MAX];
UINT16 *m_videoram[VRAM_MAX];
UINT16 *m_videoworkram[VRAM_MAX];
UINT16 *m_palette;
@@ -38,7 +38,7 @@ public:
/*----------- defined in video/niyanpai.c -----------*/
-SCREEN_UPDATE( niyanpai );
+SCREEN_UPDATE_IND16( niyanpai );
VIDEO_START( niyanpai );
READ16_HANDLER( niyanpai_palette_r );
diff --git a/src/mame/includes/nmk16.h b/src/mame/includes/nmk16.h
index daa63edbd1d..30563bd25ac 100644
--- a/src/mame/includes/nmk16.h
+++ b/src/mame/includes/nmk16.h
@@ -30,7 +30,7 @@ public:
tilemap_t *m_bg_tilemap3;
tilemap_t *m_tx_tilemap;
tilemap_t *m_fg_tilemap;
- bitmap_t *m_background_bitmap;
+ bitmap_ind16 *m_background_bitmap;
int m_mustang_bg_xscroll;
UINT8 m_scroll[4];
UINT8 m_scroll_2[4];
@@ -67,29 +67,29 @@ WRITE16_HANDLER( vandykeb_scroll_w );
WRITE16_HANDLER( manybloc_scroll_w );
VIDEO_START( macross );
-SCREEN_UPDATE( manybloc );
+SCREEN_UPDATE_IND16( manybloc );
VIDEO_START( gunnail );
VIDEO_START( macross2 );
VIDEO_START( raphero );
VIDEO_START( bjtwin );
VIDEO_START( bioship );
VIDEO_START( strahl );
-SCREEN_UPDATE( bioship );
-SCREEN_UPDATE( strahl );
-SCREEN_UPDATE( macross );
-SCREEN_UPDATE( gunnail );
-SCREEN_UPDATE( bjtwin );
-SCREEN_UPDATE( tharrier );
-SCREEN_UPDATE( hachamf );
-SCREEN_UPDATE( tdragon );
+SCREEN_UPDATE_IND16( bioship );
+SCREEN_UPDATE_IND16( strahl );
+SCREEN_UPDATE_IND16( macross );
+SCREEN_UPDATE_IND16( gunnail );
+SCREEN_UPDATE_IND16( bjtwin );
+SCREEN_UPDATE_IND16( tharrier );
+SCREEN_UPDATE_IND16( hachamf );
+SCREEN_UPDATE_IND16( tdragon );
SCREEN_EOF( nmk );
SCREEN_EOF( strahl );
VIDEO_START( afega );
VIDEO_START( grdnstrm );
VIDEO_START( firehawk );
-SCREEN_UPDATE( afega );
-SCREEN_UPDATE( redhawkb );
-SCREEN_UPDATE(redhawki );
-SCREEN_UPDATE( bubl2000 );
-SCREEN_UPDATE( firehawk );
+SCREEN_UPDATE_IND16( afega );
+SCREEN_UPDATE_IND16( redhawkb );
+SCREEN_UPDATE_IND16(redhawki );
+SCREEN_UPDATE_IND16( bubl2000 );
+SCREEN_UPDATE_IND16( firehawk );
diff --git a/src/mame/includes/nova2001.h b/src/mame/includes/nova2001.h
index e5409c28c2d..1b3212ab09e 100644
--- a/src/mame/includes/nova2001.h
+++ b/src/mame/includes/nova2001.h
@@ -27,10 +27,10 @@ extern WRITE8_HANDLER( ninjakun_paletteram_w );
extern PALETTE_INIT( nova2001 );
extern VIDEO_START( nova2001 );
-extern SCREEN_UPDATE( nova2001 );
+extern SCREEN_UPDATE_IND16( nova2001 );
extern VIDEO_START( ninjakun );
-extern SCREEN_UPDATE( ninjakun );
+extern SCREEN_UPDATE_IND16( ninjakun );
extern VIDEO_START( pkunwar );
-extern SCREEN_UPDATE( pkunwar );
+extern SCREEN_UPDATE_IND16( pkunwar );
extern VIDEO_START( raiders5 );
-extern SCREEN_UPDATE( raiders5 );
+extern SCREEN_UPDATE_IND16( raiders5 );
diff --git a/src/mame/includes/nycaptor.h b/src/mame/includes/nycaptor.h
index c295830480d..34e16f2d406 100644
--- a/src/mame/includes/nycaptor.h
+++ b/src/mame/includes/nycaptor.h
@@ -83,4 +83,4 @@ WRITE8_HANDLER( nycaptor_gfxctrl_w );
WRITE8_HANDLER( nycaptor_scrlram_w );
VIDEO_START( nycaptor );
-SCREEN_UPDATE( nycaptor );
+SCREEN_UPDATE_IND16( nycaptor );
diff --git a/src/mame/includes/offtwall.h b/src/mame/includes/offtwall.h
index 120ecb18b93..4b6b9b01fbe 100644
--- a/src/mame/includes/offtwall.h
+++ b/src/mame/includes/offtwall.h
@@ -24,4 +24,4 @@ public:
/*----------- defined in video/offtwall.c -----------*/
VIDEO_START( offtwall );
-SCREEN_UPDATE( offtwall );
+SCREEN_UPDATE_IND16( offtwall );
diff --git a/src/mame/includes/ohmygod.h b/src/mame/includes/ohmygod.h
index ad3af3370d6..dbc3267efa1 100644
--- a/src/mame/includes/ohmygod.h
+++ b/src/mame/includes/ohmygod.h
@@ -36,4 +36,4 @@ WRITE16_HANDLER( ohmygod_scrollx_w );
WRITE16_HANDLER( ohmygod_scrolly_w );
VIDEO_START( ohmygod );
-SCREEN_UPDATE( ohmygod );
+SCREEN_UPDATE_IND16( ohmygod );
diff --git a/src/mame/includes/ojankohs.h b/src/mame/includes/ojankohs.h
index 2f52ba65782..8364289148c 100644
--- a/src/mame/includes/ojankohs.h
+++ b/src/mame/includes/ojankohs.h
@@ -17,7 +17,7 @@ public:
/* video-related */
tilemap_t *m_tilemap;
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
int m_gfxreg;
int m_flipscreen;
int m_flipscreen_old;
@@ -54,8 +54,8 @@ VIDEO_START( ojankohs );
VIDEO_START( ojankoy );
VIDEO_START( ojankoc );
-SCREEN_UPDATE( ojankohs );
-SCREEN_UPDATE( ojankoc );
+SCREEN_UPDATE_IND16( ojankohs );
+SCREEN_UPDATE_IND16( ojankoc );
void ojankoc_flipscreen(address_space *space, int data);
diff --git a/src/mame/includes/oneshot.h b/src/mame/includes/oneshot.h
index 80b8c265440..a943cb4a4c8 100644
--- a/src/mame/includes/oneshot.h
+++ b/src/mame/includes/oneshot.h
@@ -38,5 +38,5 @@ WRITE16_HANDLER( oneshot_mid_videoram_w );
WRITE16_HANDLER( oneshot_fg_videoram_w );
VIDEO_START( oneshot );
-SCREEN_UPDATE( oneshot );
-SCREEN_UPDATE( maddonna );
+SCREEN_UPDATE_IND16( oneshot );
+SCREEN_UPDATE_IND16( maddonna );
diff --git a/src/mame/includes/opwolf.h b/src/mame/includes/opwolf.h
index f8067fd7bd7..698d1075ae6 100644
--- a/src/mame/includes/opwolf.h
+++ b/src/mame/includes/opwolf.h
@@ -67,4 +67,4 @@ WRITE16_HANDLER( opwolf_cchip_bank_w );
WRITE16_HANDLER( opwolf_spritectrl_w );
-SCREEN_UPDATE( opwolf );
+SCREEN_UPDATE_IND16( opwolf );
diff --git a/src/mame/includes/orbit.h b/src/mame/includes/orbit.h
index a12b7da5f05..f4cc338d972 100644
--- a/src/mame/includes/orbit.h
+++ b/src/mame/includes/orbit.h
@@ -50,6 +50,6 @@ DISCRETE_SOUND_EXTERN( orbit );
/*----------- defined in video/orbit.c -----------*/
VIDEO_START( orbit );
-SCREEN_UPDATE( orbit );
+SCREEN_UPDATE_IND16( orbit );
WRITE8_HANDLER( orbit_playfield_w );
diff --git a/src/mame/includes/othldrby.h b/src/mame/includes/othldrby.h
index 729fa7c8174..00708ba6200 100644
--- a/src/mame/includes/othldrby.h
+++ b/src/mame/includes/othldrby.h
@@ -38,4 +38,4 @@ WRITE16_HANDLER( othldrby_vreg_w );
VIDEO_START( othldrby );
SCREEN_EOF( othldrby );
-SCREEN_UPDATE( othldrby );
+SCREEN_UPDATE_IND16( othldrby );
diff --git a/src/mame/includes/othunder.h b/src/mame/includes/othunder.h
index d2f2952a7aa..8ca147b0973 100644
--- a/src/mame/includes/othunder.h
+++ b/src/mame/includes/othunder.h
@@ -56,4 +56,4 @@ public:
/*----------- defined in video/othunder.c -----------*/
VIDEO_START( othunder );
-SCREEN_UPDATE( othunder );
+SCREEN_UPDATE_IND16( othunder );
diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h
index b78c41396ea..0f198e102cc 100644
--- a/src/mame/includes/overdriv.h
+++ b/src/mame/includes/overdriv.h
@@ -39,4 +39,4 @@ extern void overdriv_sprite_callback(running_machine &machine, int *code,int *co
extern void overdriv_zoom_callback_0(running_machine &machine, int *code,int *color,int *flags);
extern void overdriv_zoom_callback_1(running_machine &machine, int *code,int *color,int *flags);
-SCREEN_UPDATE( overdriv );
+SCREEN_UPDATE_IND16( overdriv );
diff --git a/src/mame/includes/pacland.h b/src/mame/includes/pacland.h
index b0f135288a3..84a1168c945 100644
--- a/src/mame/includes/pacland.h
+++ b/src/mame/includes/pacland.h
@@ -11,7 +11,7 @@ public:
const UINT8 *m_color_prom;
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- bitmap_t *m_fg_bitmap;
+ bitmap_ind16 m_fg_bitmap;
UINT32 *m_transmask[3];
UINT16 m_scroll0;
UINT16 m_scroll1;
@@ -30,4 +30,4 @@ WRITE8_HANDLER( pacland_bankswitch_w );
PALETTE_INIT( pacland );
VIDEO_START( pacland );
-SCREEN_UPDATE( pacland );
+SCREEN_UPDATE_IND16( pacland );
diff --git a/src/mame/includes/pacman.h b/src/mame/includes/pacman.h
index 2fd5d348718..f87f5e77bab 100644
--- a/src/mame/includes/pacman.h
+++ b/src/mame/includes/pacman.h
@@ -37,7 +37,7 @@ public:
PALETTE_INIT( pacman );
VIDEO_START( pacman );
-SCREEN_UPDATE( pacman );
+SCREEN_UPDATE_IND16( pacman );
WRITE8_HANDLER( pacman_videoram_w );
WRITE8_HANDLER( pacman_colorram_w );
@@ -52,7 +52,7 @@ WRITE8_HANDLER( pengo_gfxbank_w );
VIDEO_START( s2650games );
-SCREEN_UPDATE( s2650games );
+SCREEN_UPDATE_IND16( s2650games );
WRITE8_HANDLER( s2650games_videoram_w );
diff --git a/src/mame/includes/pandoras.h b/src/mame/includes/pandoras.h
index eab03a61455..17fbd502166 100644
--- a/src/mame/includes/pandoras.h
+++ b/src/mame/includes/pandoras.h
@@ -43,5 +43,5 @@ WRITE8_HANDLER( pandoras_flipscreen_w );
WRITE8_HANDLER( pandoras_scrolly_w );
VIDEO_START( pandoras );
-SCREEN_UPDATE( pandoras );
+SCREEN_UPDATE_IND16( pandoras );
diff --git a/src/mame/includes/paradise.h b/src/mame/includes/paradise.h
index 6f987708b3a..7cdb5df66ac 100644
--- a/src/mame/includes/paradise.h
+++ b/src/mame/includes/paradise.h
@@ -18,7 +18,7 @@ public:
tilemap_t *m_tilemap_0;
tilemap_t *m_tilemap_1;
tilemap_t *m_tilemap_2;
- bitmap_t *m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
UINT8 m_palbank;
UINT8 m_priority;
UINT8 m_pixbank;
@@ -43,6 +43,6 @@ WRITE8_HANDLER( paradise_palbank_w );
VIDEO_START( paradise );
-SCREEN_UPDATE( paradise );
-SCREEN_UPDATE( torus );
-SCREEN_UPDATE( madball );
+SCREEN_UPDATE_IND16( paradise );
+SCREEN_UPDATE_IND16( torus );
+SCREEN_UPDATE_IND16( madball );
diff --git a/src/mame/includes/parodius.h b/src/mame/includes/parodius.h
index c64e343e864..1d29ac652f5 100644
--- a/src/mame/includes/parodius.h
+++ b/src/mame/includes/parodius.h
@@ -37,4 +37,4 @@ public:
extern void parodius_tile_callback(running_machine &machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
extern void parodius_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask);
-SCREEN_UPDATE( parodius );
+SCREEN_UPDATE_IND16( parodius );
diff --git a/src/mame/includes/pass.h b/src/mame/includes/pass.h
index 4284abf1523..b55131f4ba2 100644
--- a/src/mame/includes/pass.h
+++ b/src/mame/includes/pass.h
@@ -18,4 +18,4 @@ WRITE16_HANDLER( pass_fg_videoram_w );
WRITE16_HANDLER( pass_bg_videoram_w );
VIDEO_START( pass );
-SCREEN_UPDATE( pass );
+SCREEN_UPDATE_IND16( pass );
diff --git a/src/mame/includes/pastelg.h b/src/mame/includes/pastelg.h
index 8750366381a..a4a73a67d60 100644
--- a/src/mame/includes/pastelg.h
+++ b/src/mame/includes/pastelg.h
@@ -25,7 +25,7 @@ public:
/*----------- defined in video/pastelg.c -----------*/
PALETTE_INIT( pastelg );
-SCREEN_UPDATE( pastelg );
+SCREEN_UPDATE_IND16( pastelg );
VIDEO_START( pastelg );
WRITE8_HANDLER( pastelg_clut_w );
diff --git a/src/mame/includes/pbaction.h b/src/mame/includes/pbaction.h
index 0c47e147dd0..889861ce880 100644
--- a/src/mame/includes/pbaction.h
+++ b/src/mame/includes/pbaction.h
@@ -43,4 +43,4 @@ extern WRITE8_HANDLER( pbaction_flipscreen_w );
extern WRITE8_HANDLER( pbaction_scroll_w );
extern VIDEO_START( pbaction );
-extern SCREEN_UPDATE( pbaction );
+extern SCREEN_UPDATE_IND16( pbaction );
diff --git a/src/mame/includes/pcktgal.h b/src/mame/includes/pcktgal.h
index 94b8ee84f25..ebd625d2344 100644
--- a/src/mame/includes/pcktgal.h
+++ b/src/mame/includes/pcktgal.h
@@ -15,5 +15,5 @@ public:
PALETTE_INIT( pcktgal );
-SCREEN_UPDATE( pcktgal );
-SCREEN_UPDATE( pcktgalb );
+SCREEN_UPDATE_IND16( pcktgal );
+SCREEN_UPDATE_IND16( pcktgalb );
diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h
index 515b266f18e..098118f3114 100644
--- a/src/mame/includes/pgm.h
+++ b/src/mame/includes/pgm.h
@@ -28,7 +28,7 @@ public:
tilemap_t *m_bg_tilemap;
tilemap_t *m_tx_tilemap;
UINT16 *m_sprite_temp_render;
- bitmap_t *m_tmppgmbitmap;
+ bitmap_rgb32 m_tmppgmbitmap;
/* misc */
// kov2
@@ -172,4 +172,4 @@ WRITE16_HANDLER( pgm_bg_videoram_w );
VIDEO_START( pgm );
SCREEN_EOF( pgm );
-SCREEN_UPDATE( pgm );
+SCREEN_UPDATE_IND16( pgm );
diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h
index 661ceaef5d7..f0edde19333 100644
--- a/src/mame/includes/phoenix.h
+++ b/src/mame/includes/phoenix.h
@@ -52,7 +52,7 @@ PALETTE_INIT( phoenix );
PALETTE_INIT( survival );
PALETTE_INIT( pleiads );
VIDEO_START( phoenix );
-SCREEN_UPDATE( phoenix );
+SCREEN_UPDATE_IND16( phoenix );
WRITE8_HANDLER( phoenix_videoram_w );
WRITE8_HANDLER( phoenix_videoreg_w );
diff --git a/src/mame/includes/pingpong.h b/src/mame/includes/pingpong.h
index 2aee17dea1a..378a5943981 100644
--- a/src/mame/includes/pingpong.h
+++ b/src/mame/includes/pingpong.h
@@ -25,4 +25,4 @@ WRITE8_HANDLER( pingpong_colorram_w );
PALETTE_INIT( pingpong );
VIDEO_START( pingpong );
-SCREEN_UPDATE( pingpong );
+SCREEN_UPDATE_IND16( pingpong );
diff --git a/src/mame/includes/pirates.h b/src/mame/includes/pirates.h
index 78502e47b07..1db9465b1a3 100644
--- a/src/mame/includes/pirates.h
+++ b/src/mame/includes/pirates.h
@@ -22,4 +22,4 @@ WRITE16_HANDLER( pirates_fg_tileram_w );
WRITE16_HANDLER( pirates_bg_tileram_w );
VIDEO_START( pirates );
-SCREEN_UPDATE( pirates );
+SCREEN_UPDATE_IND16( pirates );
diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h
index c67516f1f65..335101c2b29 100644
--- a/src/mame/includes/pitnrun.h
+++ b/src/mame/includes/pitnrun.h
@@ -20,7 +20,7 @@ public:
int m_scroll;
int m_char_bank;
int m_color_select;
- bitmap_t *m_tmp_bitmap[4];
+ bitmap_ind16 *m_tmp_bitmap[4];
tilemap_t *m_bg;
tilemap_t *m_fg;
UINT8 *m_spriteram;
@@ -57,4 +57,4 @@ WRITE8_HANDLER( pitnrun_scroll_w );
PALETTE_INIT(pitnrun);
VIDEO_START(pitnrun);
-SCREEN_UPDATE(pitnrun);
+SCREEN_UPDATE_IND16(pitnrun);
diff --git a/src/mame/includes/pk8000.h b/src/mame/includes/pk8000.h
index bc2d34fa62e..68b8c44982e 100644
--- a/src/mame/includes/pk8000.h
+++ b/src/mame/includes/pk8000.h
@@ -18,4 +18,4 @@ extern UINT8 pk8000_video_enable;
PALETTE_INIT( pk8000 );
-UINT32 pk8000_video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *videomem);
+UINT32 pk8000_video_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *videomem);
diff --git a/src/mame/includes/pktgaldx.h b/src/mame/includes/pktgaldx.h
index cab46a4fd98..4eafd73bc35 100644
--- a/src/mame/includes/pktgaldx.h
+++ b/src/mame/includes/pktgaldx.h
@@ -29,5 +29,5 @@ public:
/*----------- defined in video/pktgaldx.c -----------*/
-SCREEN_UPDATE( pktgaldx );
-SCREEN_UPDATE( pktgaldb );
+SCREEN_UPDATE_IND16( pktgaldx );
+SCREEN_UPDATE_IND16( pktgaldb );
diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h
index e49bd883f04..6bc2ec6cfe1 100644
--- a/src/mame/includes/playch10.h
+++ b/src/mame/includes/playch10.h
@@ -98,5 +98,5 @@ WRITE8_HANDLER( playch10_videoram_w );
PALETTE_INIT( playch10 );
VIDEO_START( playch10 );
VIDEO_START( playch10_hboard );
-SCREEN_UPDATE( playch10_top );
-SCREEN_UPDATE( playch10_bottom );
+SCREEN_UPDATE_IND16( playch10_top );
+SCREEN_UPDATE_IND16( playch10_bottom );
diff --git a/src/mame/includes/playmark.h b/src/mame/includes/playmark.h
index add387adc19..b5fa943ca1b 100644
--- a/src/mame/includes/playmark.h
+++ b/src/mame/includes/playmark.h
@@ -71,8 +71,8 @@ VIDEO_START( excelsr );
VIDEO_START( hotmind );
VIDEO_START( hrdtimes );
-SCREEN_UPDATE( bigtwin );
-SCREEN_UPDATE( bigtwinb );
-SCREEN_UPDATE( wbeachvl );
-SCREEN_UPDATE( excelsr );
-SCREEN_UPDATE( hrdtimes );
+SCREEN_UPDATE_IND16( bigtwin );
+SCREEN_UPDATE_IND16( bigtwinb );
+SCREEN_UPDATE_IND16( wbeachvl );
+SCREEN_UPDATE_IND16( excelsr );
+SCREEN_UPDATE_IND16( hrdtimes );
diff --git a/src/mame/includes/plygonet.h b/src/mame/includes/plygonet.h
index 778831deafa..ce19409f5c4 100644
--- a/src/mame/includes/plygonet.h
+++ b/src/mame/includes/plygonet.h
@@ -37,7 +37,7 @@ public:
/*----------- defined in video/plygonet.c -----------*/
VIDEO_START( polygonet );
-SCREEN_UPDATE( polygonet );
+SCREEN_UPDATE_IND16( polygonet );
READ32_HANDLER( polygonet_ttl_ram_r );
WRITE32_HANDLER( polygonet_ttl_ram_w );
diff --git a/src/mame/includes/pokechmp.h b/src/mame/includes/pokechmp.h
index 6bbde80bbaa..c608c9d6ba4 100644
--- a/src/mame/includes/pokechmp.h
+++ b/src/mame/includes/pokechmp.h
@@ -17,4 +17,4 @@ WRITE8_HANDLER( pokechmp_videoram_w );
WRITE8_HANDLER( pokechmp_flipscreen_w );
VIDEO_START( pokechmp );
-SCREEN_UPDATE( pokechmp );
+SCREEN_UPDATE_IND16( pokechmp );
diff --git a/src/mame/includes/polepos.h b/src/mame/includes/polepos.h
index e1924475815..28ae8df3d55 100644
--- a/src/mame/includes/polepos.h
+++ b/src/mame/includes/polepos.h
@@ -51,7 +51,7 @@ DISCRETE_SOUND_EXTERN( polepos );
VIDEO_START( polepos );
PALETTE_INIT( polepos );
-SCREEN_UPDATE( polepos );
+SCREEN_UPDATE_IND16( polepos );
WRITE16_HANDLER( polepos_view16_w );
WRITE16_HANDLER( polepos_road16_w );
diff --git a/src/mame/includes/policetr.h b/src/mame/includes/policetr.h
index d2103e26db2..5ac43a4eea9 100644
--- a/src/mame/includes/policetr.h
+++ b/src/mame/includes/policetr.h
@@ -42,4 +42,4 @@ WRITE32_HANDLER( policetr_palette_offset_w );
WRITE32_HANDLER( policetr_palette_data_w );
VIDEO_START( policetr );
-SCREEN_UPDATE( policetr );
+SCREEN_UPDATE_IND16( policetr );
diff --git a/src/mame/includes/polyplay.h b/src/mame/includes/polyplay.h
index d8f678635f3..510bf741766 100644
--- a/src/mame/includes/polyplay.h
+++ b/src/mame/includes/polyplay.h
@@ -39,5 +39,5 @@ SAMPLES_START( polyplay_sh_start );
PALETTE_INIT( polyplay );
VIDEO_START( polyplay );
-SCREEN_UPDATE( polyplay );
+SCREEN_UPDATE_IND16( polyplay );
WRITE8_HANDLER( polyplay_characterram_w );
diff --git a/src/mame/includes/poolshrk.h b/src/mame/includes/poolshrk.h
index c55b18d39e3..016a195ab77 100644
--- a/src/mame/includes/poolshrk.h
+++ b/src/mame/includes/poolshrk.h
@@ -35,5 +35,5 @@ DISCRETE_SOUND_EXTERN( poolshrk );
/*----------- defined in video/poolshrk.c -----------*/
VIDEO_START( poolshrk );
-SCREEN_UPDATE( poolshrk );
+SCREEN_UPDATE_IND16( poolshrk );
diff --git a/src/mame/includes/pooyan.h b/src/mame/includes/pooyan.h
index f90f225a389..7e94fa259fe 100644
--- a/src/mame/includes/pooyan.h
+++ b/src/mame/includes/pooyan.h
@@ -30,4 +30,4 @@ WRITE8_HANDLER( pooyan_flipscreen_w );
PALETTE_INIT( pooyan );
VIDEO_START( pooyan );
-SCREEN_UPDATE( pooyan );
+SCREEN_UPDATE_IND16( pooyan );
diff --git a/src/mame/includes/popeye.h b/src/mame/includes/popeye.h
index 8623d8943fc..3b71b0af674 100644
--- a/src/mame/includes/popeye.h
+++ b/src/mame/includes/popeye.h
@@ -13,7 +13,7 @@ public:
UINT8 *m_background_pos;
UINT8 *m_palettebank;
UINT8 *m_bitmapram;
- bitmap_t *m_tmpbitmap2;
+ bitmap_ind16 *m_tmpbitmap2;
UINT8 m_invertmask;
UINT8 m_bitmap_type;
tilemap_t *m_fg_tilemap;
@@ -34,4 +34,4 @@ PALETTE_INIT( popeye );
PALETTE_INIT( popeyebl );
VIDEO_START( skyskipr );
VIDEO_START( popeye );
-SCREEN_UPDATE( popeye );
+SCREEN_UPDATE_IND16( popeye );
diff --git a/src/mame/includes/popper.h b/src/mame/includes/popper.h
index 536314108a6..d6785cc283e 100644
--- a/src/mame/includes/popper.h
+++ b/src/mame/includes/popper.h
@@ -47,5 +47,5 @@ WRITE8_HANDLER( popper_gfx_bank_w );
PALETTE_INIT( popper );
VIDEO_START( popper );
-SCREEN_UPDATE( popper );
+SCREEN_UPDATE_IND16( popper );
diff --git a/src/mame/includes/portrait.h b/src/mame/includes/portrait.h
index 5c563dc1ba0..38e23200195 100644
--- a/src/mame/includes/portrait.h
+++ b/src/mame/includes/portrait.h
@@ -18,6 +18,6 @@ public:
PALETTE_INIT( portrait );
VIDEO_START( portrait );
-SCREEN_UPDATE( portrait );
+SCREEN_UPDATE_IND16( portrait );
WRITE8_HANDLER( portrait_bgvideo_write );
WRITE8_HANDLER( portrait_fgvideo_write );
diff --git a/src/mame/includes/powerins.h b/src/mame/includes/powerins.h
index 9f72e68519e..eb56786cd51 100644
--- a/src/mame/includes/powerins.h
+++ b/src/mame/includes/powerins.h
@@ -27,4 +27,4 @@ WRITE16_HANDLER( powerins_vram_0_w );
WRITE16_HANDLER( powerins_vram_1_w );
VIDEO_START( powerins );
-SCREEN_UPDATE( powerins );
+SCREEN_UPDATE_IND16( powerins );
diff --git a/src/mame/includes/prehisle.h b/src/mame/includes/prehisle.h
index 23133c5cbc3..db3fc027c73 100644
--- a/src/mame/includes/prehisle.h
+++ b/src/mame/includes/prehisle.h
@@ -24,4 +24,4 @@ WRITE16_HANDLER( prehisle_control16_w );
READ16_HANDLER( prehisle_control16_r );
VIDEO_START( prehisle );
-SCREEN_UPDATE( prehisle );
+SCREEN_UPDATE_IND16( prehisle );
diff --git a/src/mame/includes/psikyo.h b/src/mame/includes/psikyo.h
index 26f2e5d14e4..16887598691 100644
--- a/src/mame/includes/psikyo.h
+++ b/src/mame/includes/psikyo.h
@@ -68,6 +68,6 @@ WRITE32_HANDLER( psikyo_vram_1_w );
VIDEO_START( sngkace );
VIDEO_START( psikyo );
-SCREEN_UPDATE( psikyo );
-SCREEN_UPDATE( psikyo_bootleg );
+SCREEN_UPDATE_IND16( psikyo );
+SCREEN_UPDATE_IND16( psikyo_bootleg );
SCREEN_EOF( psikyo );
diff --git a/src/mame/includes/psikyo4.h b/src/mame/includes/psikyo4.h
index 3990a97e927..adfa1489559 100644
--- a/src/mame/includes/psikyo4.h
+++ b/src/mame/includes/psikyo4.h
@@ -35,5 +35,5 @@ public:
/*----------- defined in video/psikyo4.c -----------*/
VIDEO_START( psikyo4 );
-SCREEN_UPDATE( psikyo4_left );
-SCREEN_UPDATE( psikyo4_right );
+SCREEN_UPDATE_IND16( psikyo4_left );
+SCREEN_UPDATE_IND16( psikyo4_right );
diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h
index be579c4ed32..786a05f9f0b 100644
--- a/src/mame/includes/psikyosh.h
+++ b/src/mame/includes/psikyosh.h
@@ -32,9 +32,9 @@ public:
// size_t m_spriteram_size;
/* video-related */
- bitmap_t *m_zoom_bitmap;
- bitmap_t *m_z_bitmap;
- bitmap_t *m_bg_bitmap;
+ bitmap_ind8 m_zoom_bitmap;
+ bitmap_ind16 m_z_bitmap;
+ bitmap_rgb32 m_bg_bitmap;
UINT16 *m_bg_zoom;
UINT8 m_alphatable[256];
@@ -45,5 +45,5 @@ public:
/*----------- defined in video/psikyosh.c -----------*/
VIDEO_START( psikyosh );
-SCREEN_UPDATE( psikyosh );
+SCREEN_UPDATE_RGB32( psikyosh );
SCREEN_EOF( psikyosh );
diff --git a/src/mame/includes/psx.h b/src/mame/includes/psx.h
index 036165b2feb..6512bab0b57 100644
--- a/src/mame/includes/psx.h
+++ b/src/mame/includes/psx.h
@@ -37,7 +37,7 @@ extern void psx_lightgun_set( running_machine &, int, int );
// emu/video/psx.c
PALETTE_INIT( psx );
-SCREEN_UPDATE( psx );
+SCREEN_UPDATE_IND16( psx );
INTERRUPT_GEN( psx_vblank );
#define PSX_H ( 1 )
diff --git a/src/mame/includes/psychic5.h b/src/mame/includes/psychic5.h
index 2ced0fcb9bd..db3b040ab54 100644
--- a/src/mame/includes/psychic5.h
+++ b/src/mame/includes/psychic5.h
@@ -40,11 +40,11 @@ READ8_HANDLER( psychic5_vram_page_select_r );
VIDEO_START( psychic5 );
VIDEO_RESET( psychic5 );
-SCREEN_UPDATE( psychic5 );
+SCREEN_UPDATE_RGB32( psychic5 );
WRITE8_HANDLER( bombsa_paged_ram_w );
WRITE8_HANDLER( bombsa_unknown_w );
VIDEO_START( bombsa );
VIDEO_RESET( bombsa );
-SCREEN_UPDATE( bombsa );
+SCREEN_UPDATE_RGB32( bombsa );
diff --git a/src/mame/includes/punchout.h b/src/mame/includes/punchout.h
index 117b5d8b669..72fcc1e268f 100644
--- a/src/mame/includes/punchout.h
+++ b/src/mame/includes/punchout.h
@@ -37,10 +37,10 @@ WRITE8_HANDLER( punchout_spr2_videoram_w );
VIDEO_START( punchout );
VIDEO_START( armwrest );
-SCREEN_UPDATE( punchout_top );
-SCREEN_UPDATE( punchout_bottom );
-SCREEN_UPDATE( armwrest_top );
-SCREEN_UPDATE( armwrest_bottom );
+SCREEN_UPDATE_IND16( punchout_top );
+SCREEN_UPDATE_IND16( punchout_bottom );
+SCREEN_UPDATE_IND16( armwrest_top );
+SCREEN_UPDATE_IND16( armwrest_bottom );
DRIVER_INIT( punchout );
DRIVER_INIT( spnchout );
diff --git a/src/mame/includes/pushman.h b/src/mame/includes/pushman.h
index 4d0a3d854bf..632f2caf31b 100644
--- a/src/mame/includes/pushman.h
+++ b/src/mame/includes/pushman.h
@@ -39,4 +39,4 @@ WRITE16_HANDLER( pushman_videoram_w );
VIDEO_START( pushman );
-SCREEN_UPDATE( pushman );
+SCREEN_UPDATE_IND16( pushman );
diff --git a/src/mame/includes/qdrmfgp.h b/src/mame/includes/qdrmfgp.h
index a8a10a720a1..6011870f950 100644
--- a/src/mame/includes/qdrmfgp.h
+++ b/src/mame/includes/qdrmfgp.h
@@ -20,7 +20,7 @@ public:
VIDEO_START( qdrmfgp );
VIDEO_START( qdrmfgp2 );
-SCREEN_UPDATE( qdrmfgp );
+SCREEN_UPDATE_IND16( qdrmfgp );
void qdrmfgp_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
void qdrmfgp2_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
diff --git a/src/mame/includes/quizdna.h b/src/mame/includes/quizdna.h
index a9bbcfb3add..5c278f1c916 100644
--- a/src/mame/includes/quizdna.h
+++ b/src/mame/includes/quizdna.h
@@ -19,7 +19,7 @@ public:
/*----------- defined in video/quizdna.c -----------*/
VIDEO_START( quizdna );
-SCREEN_UPDATE( quizdna );
+SCREEN_UPDATE_IND16( quizdna );
WRITE8_HANDLER( quizdna_fg_ram_w );
WRITE8_HANDLER( quizdna_bg_ram_w );
diff --git a/src/mame/includes/quizpani.h b/src/mame/includes/quizpani.h
index 5949f5440f4..cb84ab6807d 100644
--- a/src/mame/includes/quizpani.h
+++ b/src/mame/includes/quizpani.h
@@ -21,4 +21,4 @@ WRITE16_HANDLER( quizpani_txt_videoram_w );
WRITE16_HANDLER( quizpani_tilesbank_w );
VIDEO_START( quizpani );
-SCREEN_UPDATE( quizpani );
+SCREEN_UPDATE_IND16( quizpani );
diff --git a/src/mame/includes/raiden.h b/src/mame/includes/raiden.h
index 23a8ab9ca72..456299288a5 100644
--- a/src/mame/includes/raiden.h
+++ b/src/mame/includes/raiden.h
@@ -26,4 +26,4 @@ VIDEO_START( raiden );
VIDEO_START( raidena );
WRITE16_HANDLER( raiden_control_w );
WRITE16_HANDLER( raidena_control_w );
-SCREEN_UPDATE( raiden );
+SCREEN_UPDATE_IND16( raiden );
diff --git a/src/mame/includes/raiden2.h b/src/mame/includes/raiden2.h
index c5ffaab2daf..1bc464f8b97 100644
--- a/src/mame/includes/raiden2.h
+++ b/src/mame/includes/raiden2.h
@@ -109,7 +109,7 @@ public:
UINT16 cop_hit_status;
- void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect ,int pri_mask );
+ void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ,int pri_mask );
UINT8 cop_calculate_collsion_detection(running_machine &machine);
};
diff --git a/src/mame/includes/rainbow.h b/src/mame/includes/rainbow.h
index 0ea1e355860..24385692455 100644
--- a/src/mame/includes/rainbow.h
+++ b/src/mame/includes/rainbow.h
@@ -47,9 +47,9 @@ WRITE16_HANDLER( rbisland_cchip_ram_w );
/*----------- defined in video/rainbow.c -----------*/
-SCREEN_UPDATE( rbisland );
+SCREEN_UPDATE_IND16( rainbow );
VIDEO_START( jumping );
-SCREEN_UPDATE( jumping );
+SCREEN_UPDATE_IND16( jumping );
WRITE16_HANDLER( jumping_spritectrl_w );
WRITE16_HANDLER( rbisland_spritectrl_w );
diff --git a/src/mame/includes/rallyx.h b/src/mame/includes/rallyx.h
index bf40f49db95..c14cc572f6a 100644
--- a/src/mame/includes/rallyx.h
+++ b/src/mame/includes/rallyx.h
@@ -52,6 +52,6 @@ VIDEO_START( rallyx );
VIDEO_START( jungler );
VIDEO_START( locomotn );
VIDEO_START( commsega );
-SCREEN_UPDATE( rallyx );
-SCREEN_UPDATE( jungler );
-SCREEN_UPDATE( locomotn );
+SCREEN_UPDATE_IND16( rallyx );
+SCREEN_UPDATE_IND16( jungler );
+SCREEN_UPDATE_IND16( locomotn );
diff --git a/src/mame/includes/rampart.h b/src/mame/includes/rampart.h
index b44a1029b8b..94b3eb9ce61 100644
--- a/src/mame/includes/rampart.h
+++ b/src/mame/includes/rampart.h
@@ -20,4 +20,4 @@ public:
/*----------- defined in video/rampart.c -----------*/
VIDEO_START( rampart );
-SCREEN_UPDATE( rampart );
+SCREEN_UPDATE_IND16( rampart );
diff --git a/src/mame/includes/rastan.h b/src/mame/includes/rastan.h
index 3614ced9d8b..46cd628de08 100644
--- a/src/mame/includes/rastan.h
+++ b/src/mame/includes/rastan.h
@@ -33,4 +33,4 @@ public:
WRITE16_HANDLER( rastan_spritectrl_w );
-SCREEN_UPDATE( rastan );
+SCREEN_UPDATE_IND16( rastan );
diff --git a/src/mame/includes/realbrk.h b/src/mame/includes/realbrk.h
index 369fc01f303..0a93a5ee5bf 100644
--- a/src/mame/includes/realbrk.h
+++ b/src/mame/includes/realbrk.h
@@ -12,8 +12,8 @@ public:
UINT16 *m_vregs;
UINT16 *m_vram_0ras;
UINT16 *m_vram_1ras;
- bitmap_t *m_tmpbitmap0;
- bitmap_t *m_tmpbitmap1;
+ bitmap_ind16 *m_tmpbitmap0;
+ bitmap_ind16 *m_tmpbitmap1;
int m_disable_video;
tilemap_t *m_tilemap_0;
tilemap_t *m_tilemap_1;
@@ -28,8 +28,8 @@ public:
#define REALBRK_H
VIDEO_START(realbrk);
-SCREEN_UPDATE(realbrk);
-SCREEN_UPDATE(dai2kaku);
+SCREEN_UPDATE_IND16(realbrk);
+SCREEN_UPDATE_IND16(dai2kaku);
WRITE16_HANDLER( realbrk_vram_0_w );
WRITE16_HANDLER( realbrk_vram_1_w );
diff --git a/src/mame/includes/relief.h b/src/mame/includes/relief.h
index f2350622819..883cc5adb20 100644
--- a/src/mame/includes/relief.h
+++ b/src/mame/includes/relief.h
@@ -21,4 +21,4 @@ public:
/*----------- defined in video/relief.c -----------*/
VIDEO_START( relief );
-SCREEN_UPDATE( relief );
+SCREEN_UPDATE_IND16( relief );
diff --git a/src/mame/includes/renegade.h b/src/mame/includes/renegade.h
index e1eb0db9d37..e95ea01a973 100644
--- a/src/mame/includes/renegade.h
+++ b/src/mame/includes/renegade.h
@@ -44,7 +44,7 @@ public:
/*----------- defined in video/renegade.c -----------*/
-SCREEN_UPDATE( renegade );
+SCREEN_UPDATE_IND16( renegade );
VIDEO_START( renegade );
WRITE8_HANDLER( renegade_scroll0_w );
WRITE8_HANDLER( renegade_scroll1_w );
diff --git a/src/mame/includes/retofinv.h b/src/mame/includes/retofinv.h
index c924f21ff3f..84abaea3b4d 100644
--- a/src/mame/includes/retofinv.h
+++ b/src/mame/includes/retofinv.h
@@ -51,7 +51,7 @@ READ8_HANDLER( retofinv_mcu_status_r );
VIDEO_START( retofinv );
PALETTE_INIT( retofinv );
-SCREEN_UPDATE( retofinv );
+SCREEN_UPDATE_IND16( retofinv );
WRITE8_HANDLER( retofinv_bg_videoram_w );
WRITE8_HANDLER( retofinv_fg_videoram_w );
WRITE8_HANDLER( retofinv_gfx_ctrl_w );
diff --git a/src/mame/includes/rltennis.h b/src/mame/includes/rltennis.h
index cf363ba4906..8282e082228 100644
--- a/src/mame/includes/rltennis.h
+++ b/src/mame/includes/rltennis.h
@@ -24,7 +24,7 @@ public:
INT32 m_unk_counter;
- bitmap_t *m_tmp_bitmap[RLT_NUM_BITMAPS];
+ bitmap_ind16 *m_tmp_bitmap[RLT_NUM_BITMAPS];
device_t *m_dac_1;
device_t *m_dac_2;
@@ -42,5 +42,5 @@ public:
WRITE16_HANDLER( rlt_blitter_w );
VIDEO_START( rltennis );
-SCREEN_UPDATE( rltennis );
+SCREEN_UPDATE_IND16( rltennis );
diff --git a/src/mame/includes/rockrage.h b/src/mame/includes/rockrage.h
index d165a861e81..ba969a81d89 100644
--- a/src/mame/includes/rockrage.h
+++ b/src/mame/includes/rockrage.h
@@ -28,7 +28,7 @@ public:
WRITE8_HANDLER( rockrage_vreg_w );
-SCREEN_UPDATE( rockrage );
+SCREEN_UPDATE_IND16( rockrage );
PALETTE_INIT( rockrage );
void rockrage_tile_callback(running_machine &machine, int layer, int bank, int *code, int *color, int *flags);
diff --git a/src/mame/includes/rocnrope.h b/src/mame/includes/rocnrope.h
index 9a2fa3fb2b1..b5fea6d334f 100644
--- a/src/mame/includes/rocnrope.h
+++ b/src/mame/includes/rocnrope.h
@@ -25,4 +25,4 @@ WRITE8_HANDLER( rocnrope_flipscreen_w );
PALETTE_INIT( rocnrope );
VIDEO_START( rocnrope );
-SCREEN_UPDATE( rocnrope );
+SCREEN_UPDATE_IND16( rocnrope );
diff --git a/src/mame/includes/rohga.h b/src/mame/includes/rohga.h
index 9a393feb010..98e67e23dd0 100644
--- a/src/mame/includes/rohga.h
+++ b/src/mame/includes/rohga.h
@@ -46,7 +46,7 @@ WRITE16_HANDLER( rohga_buffer_spriteram16_w );
VIDEO_START( rohga );
-SCREEN_UPDATE( rohga );
-SCREEN_UPDATE( schmeisr );
-SCREEN_UPDATE( wizdfire );
-SCREEN_UPDATE( nitrobal );
+SCREEN_UPDATE_IND16( rohga );
+SCREEN_UPDATE_IND16( schmeisr );
+SCREEN_UPDATE_RGB32( wizdfire );
+SCREEN_UPDATE_RGB32( nitrobal );
diff --git a/src/mame/includes/rollerg.h b/src/mame/includes/rollerg.h
index 1e294f16dc9..b01b97504b8 100644
--- a/src/mame/includes/rollerg.h
+++ b/src/mame/includes/rollerg.h
@@ -34,4 +34,4 @@ extern void rollerg_sprite_callback(running_machine &machine, int *code,int *col
extern void rollerg_zoom_callback(running_machine &machine, int *code,int *color,int *flags);
VIDEO_START( rollerg );
-SCREEN_UPDATE( rollerg );
+SCREEN_UPDATE_IND16( rollerg );
diff --git a/src/mame/includes/rollrace.h b/src/mame/includes/rollrace.h
index 119f192a58b..4e66fe54e8b 100644
--- a/src/mame/includes/rollrace.h
+++ b/src/mame/includes/rollrace.h
@@ -26,7 +26,7 @@ public:
/*----------- defined in video/rollrace.c -----------*/
PALETTE_INIT( rollrace );
-SCREEN_UPDATE( rollrace );
+SCREEN_UPDATE_IND16( rollrace );
WRITE8_HANDLER( rollrace_charbank_w );
WRITE8_HANDLER( rollrace_backgroundpage_w );
diff --git a/src/mame/includes/route16.h b/src/mame/includes/route16.h
index b50636901df..325ac370c99 100644
--- a/src/mame/includes/route16.h
+++ b/src/mame/includes/route16.h
@@ -20,6 +20,6 @@ public:
WRITE8_HANDLER( route16_out0_w );
WRITE8_HANDLER( route16_out1_w );
-SCREEN_UPDATE( route16 );
-SCREEN_UPDATE( stratvox );
-SCREEN_UPDATE( ttmahjng );
+SCREEN_UPDATE_RGB32( route16 );
+SCREEN_UPDATE_RGB32( stratvox );
+SCREEN_UPDATE_RGB32( ttmahjng );
diff --git a/src/mame/includes/rpunch.h b/src/mame/includes/rpunch.h
index 2e26661a6af..1a866d328ef 100644
--- a/src/mame/includes/rpunch.h
+++ b/src/mame/includes/rpunch.h
@@ -25,7 +25,7 @@ public:
/*----------- defined in video/rpunch.c -----------*/
VIDEO_START( rpunch );
-SCREEN_UPDATE( rpunch );
+SCREEN_UPDATE_IND16( rpunch );
WRITE16_HANDLER( rpunch_videoram_w );
WRITE16_HANDLER( rpunch_videoreg_w );
diff --git a/src/mame/includes/runaway.h b/src/mame/includes/runaway.h
index e208e533634..595e56096bd 100644
--- a/src/mame/includes/runaway.h
+++ b/src/mame/includes/runaway.h
@@ -16,8 +16,8 @@ public:
VIDEO_START( runaway );
VIDEO_START( qwak );
-SCREEN_UPDATE( runaway );
-SCREEN_UPDATE( qwak );
+SCREEN_UPDATE_IND16( runaway );
+SCREEN_UPDATE_IND16( qwak );
WRITE8_HANDLER( runaway_paletteram_w );
WRITE8_HANDLER( runaway_video_ram_w );
diff --git a/src/mame/includes/rungun.h b/src/mame/includes/rungun.h
index a8369b4777a..18c5acb9f84 100644
--- a/src/mame/includes/rungun.h
+++ b/src/mame/includes/rungun.h
@@ -48,4 +48,4 @@ WRITE16_HANDLER( rng_ttl_ram_w );
WRITE16_HANDLER( rng_936_videoram_w );
VIDEO_START( rng );
-SCREEN_UPDATE( rng );
+SCREEN_UPDATE_IND16( rng );
diff --git a/src/mame/includes/sauro.h b/src/mame/includes/sauro.h
index 21f4f7af141..95d17affbda 100644
--- a/src/mame/includes/sauro.h
+++ b/src/mame/includes/sauro.h
@@ -30,5 +30,5 @@ WRITE8_HANDLER( sauro_palette_bank_w );
VIDEO_START( sauro );
VIDEO_START( trckydoc );
-SCREEN_UPDATE( sauro );
-SCREEN_UPDATE( trckydoc );
+SCREEN_UPDATE_IND16( sauro );
+SCREEN_UPDATE_IND16( trckydoc );
diff --git a/src/mame/includes/sbasketb.h b/src/mame/includes/sbasketb.h
index dedb895dc6a..7f5c1c29100 100644
--- a/src/mame/includes/sbasketb.h
+++ b/src/mame/includes/sbasketb.h
@@ -26,4 +26,4 @@ WRITE8_HANDLER( sbasketb_flipscreen_w );
PALETTE_INIT( sbasketb );
VIDEO_START( sbasketb );
-SCREEN_UPDATE( sbasketb );
+SCREEN_UPDATE_IND16( sbasketb );
diff --git a/src/mame/includes/sbugger.h b/src/mame/includes/sbugger.h
index b2d43d035a2..2e1b0854943 100644
--- a/src/mame/includes/sbugger.h
+++ b/src/mame/includes/sbugger.h
@@ -14,7 +14,7 @@ public:
/*----------- defined in video/sbugger.c -----------*/
PALETTE_INIT(sbugger);
-SCREEN_UPDATE(sbugger);
+SCREEN_UPDATE_IND16(sbugger);
VIDEO_START(sbugger);
WRITE8_HANDLER( sbugger_videoram_attr_w );
WRITE8_HANDLER( sbugger_videoram_w );
diff --git a/src/mame/includes/scotrsht.h b/src/mame/includes/scotrsht.h
index a173e1342bc..736207ff711 100644
--- a/src/mame/includes/scotrsht.h
+++ b/src/mame/includes/scotrsht.h
@@ -26,4 +26,4 @@ WRITE8_HANDLER( scotrsht_palettebank_w );
PALETTE_INIT( scotrsht );
VIDEO_START( scotrsht );
-SCREEN_UPDATE( scotrsht );
+SCREEN_UPDATE_IND16( scotrsht );
diff --git a/src/mame/includes/sderby.h b/src/mame/includes/sderby.h
index 391007befd7..b51a939cb5d 100644
--- a/src/mame/includes/sderby.h
+++ b/src/mame/includes/sderby.h
@@ -25,6 +25,6 @@ WRITE16_HANDLER( sderby_videoram_w );
WRITE16_HANDLER( sderby_md_videoram_w );
WRITE16_HANDLER( sderby_fg_videoram_w );
VIDEO_START( sderby );
-SCREEN_UPDATE( sderby );
-SCREEN_UPDATE( pmroulet );
+SCREEN_UPDATE_IND16( sderby );
+SCREEN_UPDATE_IND16( pmroulet );
WRITE16_HANDLER( sderby_scroll_w );
diff --git a/src/mame/includes/segag80r.h b/src/mame/includes/segag80r.h
index 7f1e599b545..35efc7c2d0d 100644
--- a/src/mame/includes/segag80r.h
+++ b/src/mame/includes/segag80r.h
@@ -77,7 +77,7 @@ READ8_HANDLER( segag80r_video_port_r );
WRITE8_HANDLER( segag80r_video_port_w );
VIDEO_START( segag80r );
-SCREEN_UPDATE( segag80r );
+SCREEN_UPDATE_IND16( segag80r );
READ8_HANDLER( spaceod_back_port_r );
diff --git a/src/mame/includes/segag80v.h b/src/mame/includes/segag80v.h
index 10d04bbd0f0..e5b15d7b411 100644
--- a/src/mame/includes/segag80v.h
+++ b/src/mame/includes/segag80v.h
@@ -40,4 +40,4 @@ WRITE8_HANDLER( zektor2_sh_w );
/*----------- defined in video/segag80v.c -----------*/
VIDEO_START( segag80v );
-SCREEN_UPDATE( segag80v );
+SCREEN_UPDATE_RGB32( segag80v );
diff --git a/src/mame/includes/segamsys.h b/src/mame/includes/segamsys.h
index 7dcb9cdd9a3..6de643804f4 100644
--- a/src/mame/includes/segamsys.h
+++ b/src/mame/includes/segamsys.h
@@ -8,9 +8,9 @@ enum sms_mapper
ADDRESS_MAP_EXTERN( sms_io_map, 8 );
-extern SCREEN_UPDATE(megatech_bios);
-extern SCREEN_UPDATE(megaplay_bios);
-extern SCREEN_UPDATE(megatech_md_sms);
+extern SCREEN_UPDATE_RGB32(megatech_bios);
+extern SCREEN_UPDATE_RGB32(megaplay_bios);
+extern SCREEN_UPDATE_RGB32(megatech_md_sms);
extern DRIVER_INIT( megatech_bios );
extern DRIVER_INIT( hazemd_segasyse );
extern MACHINE_RESET(megatech_bios);
@@ -41,7 +41,7 @@ extern WRITE8_HANDLER( sms_vdp_2_data_w );
extern READ8_HANDLER( sms_vdp_2_ctrl_r );
extern WRITE8_HANDLER( sms_vdp_2_ctrl_w );
extern SCREEN_EOF(systeme);
-extern SCREEN_UPDATE(systeme);
+extern SCREEN_UPDATE_RGB32(systeme);
extern MACHINE_RESET(systeme);
extern UINT8* sms_mainram;
extern UINT8* vdp2_vram_bank0;
diff --git a/src/mame/includes/segas16.h b/src/mame/includes/segas16.h
index b78e47f83ef..acf0267ec4f 100644
--- a/src/mame/includes/segas16.h
+++ b/src/mame/includes/segas16.h
@@ -15,7 +15,7 @@ public:
/* misc video */
UINT8 m_road_priority; // segaxbd
- bitmap_t *m_tmp_bitmap; // segaybd & segas18
+ bitmap_ind16 *m_tmp_bitmap; // segaybd & segas18
UINT8 m_grayscale_enable; // segas18
UINT8 m_vdp_enable; // segas18
UINT8 m_vdp_mixing; // segas18
@@ -105,23 +105,23 @@ public:
VIDEO_START( hangon );
VIDEO_START( sharrier );
-SCREEN_UPDATE( hangon );
+SCREEN_UPDATE_IND16( hangon );
/*----------- defined in video/segas16a.c -----------*/
VIDEO_START( system16a );
-SCREEN_UPDATE( system16a );
+SCREEN_UPDATE_IND16( system16a );
/*----------- defined in video/segas16b.c -----------*/
VIDEO_START( system16b );
VIDEO_START( timscanr );
-SCREEN_UPDATE( system16b );
+SCREEN_UPDATE_IND16( system16b );
/*----------- defined in video/segas18.c -----------*/
VIDEO_START( system18 );
-SCREEN_UPDATE( system18 );
+SCREEN_UPDATE_IND16( system18 );
void system18_set_grayscale(running_machine &machine, int enable);
void system18_set_vdp_enable(running_machine &machine, int eanble);
@@ -131,18 +131,18 @@ void system18_set_vdp_mixing(running_machine &machine, int mixing);
VIDEO_START( outrun );
VIDEO_START( shangon );
-SCREEN_UPDATE( outrun );
-SCREEN_UPDATE( shangon );
+SCREEN_UPDATE_IND16( outrun );
+SCREEN_UPDATE_IND16( shangon );
/*----------- defined in video/segaxbd.c -----------*/
VIDEO_START( xboard );
-SCREEN_UPDATE( xboard );
+SCREEN_UPDATE_IND16( xboard );
/*----------- defined in video/segaybd.c -----------*/
VIDEO_START( yboard );
-SCREEN_UPDATE( yboard );
+SCREEN_UPDATE_IND16( yboard );
/*----------- defined in machine/s16fd.c -----------*/
diff --git a/src/mame/includes/segas24.h b/src/mame/includes/segas24.h
index a7f8b053957..f4fd6519193 100644
--- a/src/mame/includes/segas24.h
+++ b/src/mame/includes/segas24.h
@@ -104,4 +104,4 @@ extern void s24_fd1094_driver_init(running_machine &machine);
/*----------- defined in video/segas24.c -----------*/
-SCREEN_UPDATE(system24);
+SCREEN_UPDATE_IND16(system24);
diff --git a/src/mame/includes/segas32.h b/src/mame/includes/segas32.h
index ee336204f9e..795ab466ca2 100644
--- a/src/mame/includes/segas32.h
+++ b/src/mame/includes/segas32.h
@@ -8,8 +8,8 @@
typedef void (*sys32_output_callback)(int which, UINT16 data);
struct layer_info
{
- bitmap_t * bitmap;
- UINT8 * transparent;
+ bitmap_ind16 *bitmap;
+ UINT8 *transparent;
};
@@ -92,9 +92,9 @@ WRITE16_HANDLER( arescue_dsp_w );
VIDEO_START(system32);
VIDEO_START(multi32);
-SCREEN_UPDATE(system32);
-SCREEN_UPDATE(multi32_left);
-SCREEN_UPDATE(multi32_right);
+SCREEN_UPDATE_RGB32(system32);
+SCREEN_UPDATE_RGB32(multi32_left);
+SCREEN_UPDATE_RGB32(multi32_right);
void system32_set_vblank(running_machine &machine, int state);
READ16_HANDLER( system32_videoram_r );
diff --git a/src/mame/includes/sei_crtc.h b/src/mame/includes/sei_crtc.h
index a2df5d43f92..df8f743c9f5 100644
--- a/src/mame/includes/sei_crtc.h
+++ b/src/mame/includes/sei_crtc.h
@@ -11,4 +11,4 @@ WRITE16_HANDLER( seibucrtc_sc3vram_w );
WRITE16_HANDLER( seibucrtc_vregs_w );
void seibucrtc_sc0bank_w(UINT16 data);
VIDEO_START( seibu_crtc );
-SCREEN_UPDATE( seibu_crtc );
+SCREEN_UPDATE_IND16( seibu_crtc );
diff --git a/src/mame/includes/seibuspi.h b/src/mame/includes/seibuspi.h
index c060675e812..4f7c0636a77 100644
--- a/src/mame/includes/seibuspi.h
+++ b/src/mame/includes/seibuspi.h
@@ -54,10 +54,10 @@ void seibuspi_sprite_decrypt(UINT8 *src, int romsize);
/*----------- defined in video/seibuspi.c -----------*/
VIDEO_START( spi );
-SCREEN_UPDATE( spi );
+SCREEN_UPDATE_RGB32( spi );
VIDEO_START( sys386f2 );
-SCREEN_UPDATE( sys386f2 );
+SCREEN_UPDATE_RGB32( sys386f2 );
READ32_HANDLER( spi_layer_bank_r );
WRITE32_HANDLER( spi_layer_bank_w );
diff --git a/src/mame/includes/seicross.h b/src/mame/includes/seicross.h
index 4f29bd5ea77..6e2aea766bc 100644
--- a/src/mame/includes/seicross.h
+++ b/src/mame/includes/seicross.h
@@ -29,4 +29,4 @@ WRITE8_HANDLER( seicross_colorram_w );
PALETTE_INIT( seicross );
VIDEO_START( seicross );
-SCREEN_UPDATE( seicross );
+SCREEN_UPDATE_IND16( seicross );
diff --git a/src/mame/includes/senjyo.h b/src/mame/includes/senjyo.h
index 32493551dc5..f69448fbcf3 100644
--- a/src/mame/includes/senjyo.h
+++ b/src/mame/includes/senjyo.h
@@ -62,4 +62,4 @@ WRITE8_HANDLER( senjyo_bg3videoram_w );
WRITE8_HANDLER( senjyo_bgstripes_w );
VIDEO_START( senjyo );
-SCREEN_UPDATE( senjyo );
+SCREEN_UPDATE_IND16( senjyo );
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index b7f2b3eba49..e53a56e014f 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -114,11 +114,11 @@ VIDEO_START( seta_1_layer);
VIDEO_START( seta_2_layers);
VIDEO_START( oisipuzl_2_layers );
-SCREEN_UPDATE( seta );
-SCREEN_UPDATE( seta_no_layers );
-SCREEN_UPDATE( usclssic );
-SCREEN_UPDATE( inttoote );
-SCREEN_UPDATE( setaroul );
+SCREEN_UPDATE_IND16( seta );
+SCREEN_UPDATE_IND16( seta_no_layers );
+SCREEN_UPDATE_IND16( usclssic );
+SCREEN_UPDATE_IND16( inttoote );
+SCREEN_UPDATE_IND16( setaroul );
SCREEN_EOF( setaroul );
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index 08cf4cef8e3..cd59fe5c2c1 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -37,5 +37,5 @@ WRITE16_HANDLER( seta2_vregs_w );
VIDEO_START( seta2 );
VIDEO_START( seta2_xoffset );
VIDEO_START( seta2_yoffset );
-SCREEN_UPDATE( seta2 );
+SCREEN_UPDATE_IND16( seta2 );
SCREEN_EOF( seta2 );
diff --git a/src/mame/includes/sf.h b/src/mame/includes/sf.h
index e74b5e0e411..64fdb435319 100644
--- a/src/mame/includes/sf.h
+++ b/src/mame/includes/sf.h
@@ -38,4 +38,4 @@ WRITE16_HANDLER( sf_videoram_w );
WRITE16_HANDLER( sf_gfxctrl_w );
VIDEO_START( sf );
-SCREEN_UPDATE( sf );
+SCREEN_UPDATE_IND16( sf );
diff --git a/src/mame/includes/shadfrce.h b/src/mame/includes/shadfrce.h
index 1b76e78516b..2db245332a0 100644
--- a/src/mame/includes/shadfrce.h
+++ b/src/mame/includes/shadfrce.h
@@ -32,7 +32,7 @@ WRITE16_HANDLER ( shadfrce_bg0scrolly_w );
WRITE16_HANDLER ( shadfrce_bg1scrolly_w );
VIDEO_START( shadfrce );
SCREEN_EOF(shadfrce);
-SCREEN_UPDATE( shadfrce );
+SCREEN_UPDATE_IND16( shadfrce );
WRITE16_HANDLER( shadfrce_fgvideoram_w );
WRITE16_HANDLER( shadfrce_bg0videoram_w );
WRITE16_HANDLER( shadfrce_bg1videoram_w );
diff --git a/src/mame/includes/shangha3.h b/src/mame/includes/shangha3.h
index 271f129f430..10b0640f390 100644
--- a/src/mame/includes/shangha3.h
+++ b/src/mame/includes/shangha3.h
@@ -11,7 +11,7 @@ public:
int m_do_shadows;
UINT16 m_gfxlist_addr;
- bitmap_t *m_rawbitmap;
+ bitmap_ind16 m_rawbitmap;
UINT8 m_drawmode_table[16];
};
@@ -23,4 +23,4 @@ WRITE16_HANDLER( shangha3_flipscreen_w );
WRITE16_HANDLER( shangha3_gfxlist_addr_w );
WRITE16_HANDLER( shangha3_blitter_go_w );
VIDEO_START( shangha3 );
-SCREEN_UPDATE( shangha3 );
+SCREEN_UPDATE_IND16( shangha3 );
diff --git a/src/mame/includes/shangkid.h b/src/mame/includes/shangkid.h
index 1991a705a1c..e1f4a296c1f 100644
--- a/src/mame/includes/shangkid.h
+++ b/src/mame/includes/shangkid.h
@@ -17,9 +17,9 @@ public:
/*----------- defined in video/shangkid.c -----------*/
VIDEO_START( shangkid );
-SCREEN_UPDATE( shangkid );
+SCREEN_UPDATE_IND16( shangkid );
WRITE8_HANDLER( shangkid_videoram_w );
PALETTE_INIT( dynamski );
-SCREEN_UPDATE( dynamski );
+SCREEN_UPDATE_IND16( dynamski );
diff --git a/src/mame/includes/shaolins.h b/src/mame/includes/shaolins.h
index 6c0c42af2d4..d7fc09548d8 100644
--- a/src/mame/includes/shaolins.h
+++ b/src/mame/includes/shaolins.h
@@ -29,4 +29,4 @@ WRITE8_HANDLER( shaolins_nmi_w );
PALETTE_INIT( shaolins );
VIDEO_START( shaolins );
-SCREEN_UPDATE( shaolins );
+SCREEN_UPDATE_IND16( shaolins );
diff --git a/src/mame/includes/shisen.h b/src/mame/includes/shisen.h
index 17dcddb06d1..8ebe400aa79 100644
--- a/src/mame/includes/shisen.h
+++ b/src/mame/includes/shisen.h
@@ -18,4 +18,4 @@ WRITE8_HANDLER( sichuan2_bankswitch_w );
WRITE8_HANDLER( sichuan2_paletteram_w );
VIDEO_START( sichuan2 );
-SCREEN_UPDATE( sichuan2 );
+SCREEN_UPDATE_IND16( sichuan2 );
diff --git a/src/mame/includes/shootout.h b/src/mame/includes/shootout.h
index d7f154cbd1f..7129583bf2b 100644
--- a/src/mame/includes/shootout.h
+++ b/src/mame/includes/shootout.h
@@ -20,5 +20,5 @@ WRITE8_HANDLER( shootout_textram_w );
PALETTE_INIT( shootout );
VIDEO_START( shootout );
-SCREEN_UPDATE( shootout );
-SCREEN_UPDATE( shootouj );
+SCREEN_UPDATE_IND16( shootout );
+SCREEN_UPDATE_IND16( shootouj );
diff --git a/src/mame/includes/shuuz.h b/src/mame/includes/shuuz.h
index 2245a84072e..53694a7899e 100644
--- a/src/mame/includes/shuuz.h
+++ b/src/mame/includes/shuuz.h
@@ -19,4 +19,4 @@ public:
/*----------- defined in video/shuuz.c -----------*/
VIDEO_START( shuuz );
-SCREEN_UPDATE( shuuz );
+SCREEN_UPDATE_IND16( shuuz );
diff --git a/src/mame/includes/sidearms.h b/src/mame/includes/sidearms.h
index a2fa87058bf..2e7cd4da486 100644
--- a/src/mame/includes/sidearms.h
+++ b/src/mame/includes/sidearms.h
@@ -36,5 +36,5 @@ WRITE8_HANDLER( sidearms_c804_w );
WRITE8_HANDLER( sidearms_gfxctrl_w );
VIDEO_START( sidearms );
-SCREEN_UPDATE( sidearms );
+SCREEN_UPDATE_IND16( sidearms );
SCREEN_EOF( sidearms );
diff --git a/src/mame/includes/sidepckt.h b/src/mame/includes/sidepckt.h
index e70a31d20c3..0796d2f2f07 100644
--- a/src/mame/includes/sidepckt.h
+++ b/src/mame/includes/sidepckt.h
@@ -22,7 +22,7 @@ public:
PALETTE_INIT( sidepckt );
VIDEO_START( sidepckt );
-SCREEN_UPDATE( sidepckt );
+SCREEN_UPDATE_IND16( sidepckt );
WRITE8_HANDLER( sidepckt_flipscreen_w );
WRITE8_HANDLER( sidepckt_videoram_w );
diff --git a/src/mame/includes/silkroad.h b/src/mame/includes/silkroad.h
index e4b74a557b5..4f676bbd1d3 100644
--- a/src/mame/includes/silkroad.h
+++ b/src/mame/includes/silkroad.h
@@ -21,4 +21,4 @@ WRITE32_HANDLER( silkroad_fgram_w );
WRITE32_HANDLER( silkroad_fgram2_w );
WRITE32_HANDLER( silkroad_fgram3_w );
VIDEO_START(silkroad);
-SCREEN_UPDATE(silkroad);
+SCREEN_UPDATE_IND16(silkroad);
diff --git a/src/mame/includes/simpl156.h b/src/mame/includes/simpl156.h
index 6ee7be80f02..dbbb7f8db17 100644
--- a/src/mame/includes/simpl156.h
+++ b/src/mame/includes/simpl156.h
@@ -38,4 +38,4 @@ public:
/*----------- defined in video/simpl156.c -----------*/
VIDEO_START( simpl156 );
-SCREEN_UPDATE( simpl156 );
+SCREEN_UPDATE_IND16( simpl156 );
diff --git a/src/mame/includes/simpsons.h b/src/mame/includes/simpsons.h
index 7a88cbcb097..164ba2b1a54 100644
--- a/src/mame/includes/simpsons.h
+++ b/src/mame/includes/simpsons.h
@@ -42,7 +42,7 @@ MACHINE_START( simpsons );
/*----------- defined in video/simpsons.c -----------*/
void simpsons_video_banking( running_machine &machine, int select );
-SCREEN_UPDATE( simpsons );
+SCREEN_UPDATE_IND16( simpsons );
extern void simpsons_tile_callback(running_machine &machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
extern void simpsons_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask);
diff --git a/src/mame/includes/skullxbo.h b/src/mame/includes/skullxbo.h
index b9bed8c023c..5681acbfb0a 100644
--- a/src/mame/includes/skullxbo.h
+++ b/src/mame/includes/skullxbo.h
@@ -22,6 +22,6 @@ WRITE16_HANDLER( skullxbo_yscroll_w );
WRITE16_HANDLER( skullxbo_mobmsb_w );
VIDEO_START( skullxbo );
-SCREEN_UPDATE( skullxbo );
+SCREEN_UPDATE_IND16( skullxbo );
void skullxbo_scanline_update(running_machine &machine, int param);
diff --git a/src/mame/includes/skydiver.h b/src/mame/includes/skydiver.h
index 424d7f1f486..62086ca9c24 100644
--- a/src/mame/includes/skydiver.h
+++ b/src/mame/includes/skydiver.h
@@ -53,4 +53,4 @@ WRITE8_HANDLER( skydiver_2000_201F_w );
WRITE8_HANDLER( skydiver_width_w );
WRITE8_HANDLER( skydiver_coin_lockout_w );
VIDEO_START( skydiver );
-SCREEN_UPDATE( skydiver );
+SCREEN_UPDATE_IND16( skydiver );
diff --git a/src/mame/includes/skyfox.h b/src/mame/includes/skyfox.h
index 6faf1705558..1f7915cada1 100644
--- a/src/mame/includes/skyfox.h
+++ b/src/mame/includes/skyfox.h
@@ -32,5 +32,5 @@ WRITE8_HANDLER( skyfox_vregs_w );
PALETTE_INIT( skyfox );
-SCREEN_UPDATE( skyfox );
+SCREEN_UPDATE_IND16( skyfox );
diff --git a/src/mame/includes/skykid.h b/src/mame/includes/skykid.h
index 141cbfe58f2..afa300f7a18 100644
--- a/src/mame/includes/skykid.h
+++ b/src/mame/includes/skykid.h
@@ -21,7 +21,7 @@ public:
/*----------- defined in video/skykid.c -----------*/
VIDEO_START( skykid );
-SCREEN_UPDATE( skykid );
+SCREEN_UPDATE_IND16( skykid );
PALETTE_INIT( skykid );
READ8_HANDLER( skykid_videoram_r );
diff --git a/src/mame/includes/skyraid.h b/src/mame/includes/skyraid.h
index 5347135ebf8..f4805626e72 100644
--- a/src/mame/includes/skyraid.h
+++ b/src/mame/includes/skyraid.h
@@ -15,7 +15,7 @@ public:
UINT8* m_pos_ram;
UINT8* m_obj_ram;
- bitmap_t *m_helper;
+ bitmap_ind16 *m_helper;
};
@@ -29,4 +29,4 @@ WRITE8_DEVICE_HANDLER( skyraid_sound_w );
/*----------- defined in video/skyraid.c -----------*/
VIDEO_START(skyraid);
-SCREEN_UPDATE(skyraid);
+SCREEN_UPDATE_IND16(skyraid);
diff --git a/src/mame/includes/slapfght.h b/src/mame/includes/slapfght.h
index ecc2af7dca5..390e027be2f 100644
--- a/src/mame/includes/slapfght.h
+++ b/src/mame/includes/slapfght.h
@@ -123,8 +123,8 @@ INTERRUPT_GEN( getstar_interrupt );
/*----------- defined in video/slapfght.c -----------*/
-SCREEN_UPDATE( slapfight );
-SCREEN_UPDATE( perfrman );
+SCREEN_UPDATE_IND16( slapfight );
+SCREEN_UPDATE_IND16( perfrman );
VIDEO_START( slapfight );
VIDEO_START( perfrman );
diff --git a/src/mame/includes/slapshot.h b/src/mame/includes/slapshot.h
index bbba495a9d4..06f265bc569 100644
--- a/src/mame/includes/slapshot.h
+++ b/src/mame/includes/slapshot.h
@@ -58,5 +58,5 @@ public:
/*----------- defined in video/slapshot.c -----------*/
VIDEO_START( slapshot );
-SCREEN_UPDATE( slapshot );
+SCREEN_UPDATE_IND16( slapshot );
SCREEN_EOF( taito_no_buffer );
diff --git a/src/mame/includes/snes.h b/src/mame/includes/snes.h
index 7665f4f3006..5b4cb85196b 100644
--- a/src/mame/includes/snes.h
+++ b/src/mame/includes/snes.h
@@ -688,7 +688,7 @@ extern struct SNES_PPU_STRUCT snes_ppu;
extern void snes_latch_counters(running_machine &machine);
extern VIDEO_START( snes );
-extern SCREEN_UPDATE( snes );
+extern SCREEN_UPDATE_RGB32( snes );
extern READ8_HANDLER( snes_ppu_read );
extern WRITE8_HANDLER( snes_ppu_write );
diff --git a/src/mame/includes/snk.h b/src/mame/includes/snk.h
index 09932558214..d45c8d3ef1f 100644
--- a/src/mame/includes/snk.h
+++ b/src/mame/includes/snk.h
@@ -67,11 +67,11 @@ extern VIDEO_START( gwar );
extern VIDEO_START( psychos );
extern VIDEO_START( tdfever );
-extern SCREEN_UPDATE( marvins );
-extern SCREEN_UPDATE( tnk3 );
-extern SCREEN_UPDATE( ikari );
-extern SCREEN_UPDATE( gwar );
-extern SCREEN_UPDATE( tdfever );
+extern SCREEN_UPDATE_IND16( marvins );
+extern SCREEN_UPDATE_IND16( tnk3 );
+extern SCREEN_UPDATE_IND16( ikari );
+extern SCREEN_UPDATE_IND16( gwar );
+extern SCREEN_UPDATE_IND16( tdfever );
extern WRITE8_HANDLER( snk_fg_scrollx_w );
extern WRITE8_HANDLER( snk_fg_scrolly_w );
diff --git a/src/mame/includes/snk6502.h b/src/mame/includes/snk6502.h
index 908646deab9..4b560bc08bb 100644
--- a/src/mame/includes/snk6502.h
+++ b/src/mame/includes/snk6502.h
@@ -75,7 +75,7 @@ WRITE8_HANDLER( snk6502_scrolly_w );
PALETTE_INIT( snk6502 );
VIDEO_START( snk6502 );
-SCREEN_UPDATE( snk6502 );
+SCREEN_UPDATE_IND16( snk6502 );
VIDEO_START( pballoon );
WRITE8_HANDLER( satansat_b002_w );
diff --git a/src/mame/includes/snk68.h b/src/mame/includes/snk68.h
index 9f2a1ee55ab..4fa7b61bcb5 100644
--- a/src/mame/includes/snk68.h
+++ b/src/mame/includes/snk68.h
@@ -22,7 +22,7 @@ public:
VIDEO_START( pow );
VIDEO_START( searchar );
-SCREEN_UPDATE( pow );
+SCREEN_UPDATE_IND16( pow );
WRITE16_HANDLER( pow_paletteram16_word_w );
WRITE16_HANDLER( pow_flipscreen16_w );
WRITE16_HANDLER( searchar_flipscreen16_w );
diff --git a/src/mame/includes/snookr10.h b/src/mame/includes/snookr10.h
index c440192be8b..d12fd8ea9e8 100644
--- a/src/mame/includes/snookr10.h
+++ b/src/mame/includes/snookr10.h
@@ -26,5 +26,5 @@ PALETTE_INIT( snookr10 );
PALETTE_INIT( apple10 );
VIDEO_START( snookr10 );
VIDEO_START( apple10 );
-SCREEN_UPDATE( snookr10 );
+SCREEN_UPDATE_IND16( snookr10 );
diff --git a/src/mame/includes/solomon.h b/src/mame/includes/solomon.h
index 52c0c9a96a1..1647ad73b9c 100644
--- a/src/mame/includes/solomon.h
+++ b/src/mame/includes/solomon.h
@@ -27,4 +27,4 @@ WRITE8_HANDLER( solomon_colorram2_w );
WRITE8_HANDLER( solomon_flipscreen_w );
VIDEO_START( solomon );
-SCREEN_UPDATE( solomon );
+SCREEN_UPDATE_IND16( solomon );
diff --git a/src/mame/includes/sonson.h b/src/mame/includes/sonson.h
index 5c4edd8c00c..53b1c2325b8 100644
--- a/src/mame/includes/sonson.h
+++ b/src/mame/includes/sonson.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( sonson_flipscreen_w );
PALETTE_INIT( sonson );
VIDEO_START( sonson );
-SCREEN_UPDATE( sonson );
+SCREEN_UPDATE_IND16( sonson );
diff --git a/src/mame/includes/spacefb.h b/src/mame/includes/spacefb.h
index b6c8a0affaa..8b5705f350d 100644
--- a/src/mame/includes/spacefb.h
+++ b/src/mame/includes/spacefb.h
@@ -56,7 +56,7 @@ WRITE8_HANDLER( spacefb_port_1_w );
/*----------- defined in video/spacefb.c -----------*/
VIDEO_START( spacefb );
-SCREEN_UPDATE( spacefb );
+SCREEN_UPDATE_RGB32( spacefb );
WRITE8_HANDLER( spacefb_port_0_w );
WRITE8_HANDLER( spacefb_port_2_w );
diff --git a/src/mame/includes/spbactn.h b/src/mame/includes/spbactn.h
index b7ded7af8bd..6c3539fc46a 100644
--- a/src/mame/includes/spbactn.h
+++ b/src/mame/includes/spbactn.h
@@ -8,12 +8,12 @@ public:
UINT16 *m_fgvideoram;
UINT16 *m_spvideoram;
- bitmap_t *m_tile_bitmap_bg;
- bitmap_t *m_tile_bitmap_fg;
+ bitmap_ind16 m_tile_bitmap_bg;
+ bitmap_ind16 m_tile_bitmap_fg;
};
/*----------- defined in video/spbactn.c -----------*/
VIDEO_START( spbactn );
-SCREEN_UPDATE( spbactn );
+SCREEN_UPDATE_RGB32( spbactn );
diff --git a/src/mame/includes/spcforce.h b/src/mame/includes/spcforce.h
index 30903374143..672449a0256 100644
--- a/src/mame/includes/spcforce.h
+++ b/src/mame/includes/spcforce.h
@@ -18,4 +18,4 @@ public:
/*----------- defined in video/spcforce.c -----------*/
WRITE8_HANDLER( spcforce_flip_screen_w );
-SCREEN_UPDATE( spcforce );
+SCREEN_UPDATE_IND16( spcforce );
diff --git a/src/mame/includes/spdodgeb.h b/src/mame/includes/spdodgeb.h
index f5a3bc0faf8..335f7f3f126 100644
--- a/src/mame/includes/spdodgeb.h
+++ b/src/mame/includes/spdodgeb.h
@@ -40,7 +40,7 @@ public:
PALETTE_INIT( spdodgeb );
VIDEO_START( spdodgeb );
-SCREEN_UPDATE( spdodgeb );
+SCREEN_UPDATE_IND16( spdodgeb );
TIMER_DEVICE_CALLBACK( spdodgeb_interrupt );
WRITE8_HANDLER( spdodgeb_scrollx_lo_w );
WRITE8_HANDLER( spdodgeb_ctrl_w );
diff --git a/src/mame/includes/speedatk.h b/src/mame/includes/speedatk.h
index 5f5d2184cbb..a34eb2d03a5 100644
--- a/src/mame/includes/speedatk.h
+++ b/src/mame/includes/speedatk.h
@@ -24,4 +24,4 @@ WRITE8_HANDLER( speedatk_colorram_w );
WRITE8_HANDLER( speedatk_6845_w );
PALETTE_INIT( speedatk );
VIDEO_START( speedatk );
-SCREEN_UPDATE( speedatk );
+SCREEN_UPDATE_IND16( speedatk );
diff --git a/src/mame/includes/speedbal.h b/src/mame/includes/speedbal.h
index 59cf6fdafc2..05903f0642f 100644
--- a/src/mame/includes/speedbal.h
+++ b/src/mame/includes/speedbal.h
@@ -16,6 +16,6 @@ public:
/*----------- defined in video/speedbal.c -----------*/
VIDEO_START( speedbal );
-SCREEN_UPDATE( speedbal );
+SCREEN_UPDATE_IND16( speedbal );
WRITE8_HANDLER( speedbal_foreground_videoram_w );
WRITE8_HANDLER( speedbal_background_videoram_w );
diff --git a/src/mame/includes/speedspn.h b/src/mame/includes/speedspn.h
index deec090a051..604c4a41e56 100644
--- a/src/mame/includes/speedspn.h
+++ b/src/mame/includes/speedspn.h
@@ -15,7 +15,7 @@ public:
/*----------- defined in video/speedspn.c -----------*/
VIDEO_START( speedspn );
-SCREEN_UPDATE( speedspn );
+SCREEN_UPDATE_IND16( speedspn );
WRITE8_HANDLER( speedspn_vidram_w );
WRITE8_HANDLER( speedspn_attram_w );
diff --git a/src/mame/includes/splash.h b/src/mame/includes/splash.h
index f452844ace0..0d4260f624a 100644
--- a/src/mame/includes/splash.h
+++ b/src/mame/includes/splash.h
@@ -35,5 +35,5 @@ public:
WRITE16_HANDLER( splash_vram_w );
VIDEO_START( splash );
-SCREEN_UPDATE( splash );
-SCREEN_UPDATE( funystrp );
+SCREEN_UPDATE_IND16( splash );
+SCREEN_UPDATE_IND16( funystrp );
diff --git a/src/mame/includes/sprcros2.h b/src/mame/includes/sprcros2.h
index 78d085a5784..64675755c7f 100644
--- a/src/mame/includes/sprcros2.h
+++ b/src/mame/includes/sprcros2.h
@@ -30,4 +30,4 @@ WRITE8_HANDLER( sprcros2_bgscrolly_w );
PALETTE_INIT( sprcros2 );
VIDEO_START( sprcros2 );
-SCREEN_UPDATE( sprcros2 );
+SCREEN_UPDATE_IND16( sprcros2 );
diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h
index 46d25f429ca..2576b8683a2 100644
--- a/src/mame/includes/sprint2.h
+++ b/src/mame/includes/sprint2.h
@@ -34,7 +34,7 @@ public:
UINT8 m_dial[2];
UINT8* m_video_ram;
tilemap_t* m_bg_tilemap;
- bitmap_t* m_helper;
+ bitmap_ind16 m_helper;
int m_collision[2];
};
@@ -56,7 +56,7 @@ WRITE8_HANDLER( sprint2_collision_reset2_w );
WRITE8_HANDLER( sprint2_video_ram_w );
PALETTE_INIT( sprint2 );
-SCREEN_UPDATE( sprint2 );
+SCREEN_UPDATE_IND16( sprint2 );
VIDEO_START( sprint2 );
SCREEN_EOF( sprint2 );
diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h
index 94092cb166b..06d2e53c370 100644
--- a/src/mame/includes/sprint4.h
+++ b/src/mame/includes/sprint4.h
@@ -12,7 +12,7 @@ public:
UINT8 m_last_wheel[4];
int m_collision[4];
tilemap_t* m_playfield;
- bitmap_t* m_helper;
+ bitmap_ind16 m_helper;
};
@@ -22,6 +22,6 @@ PALETTE_INIT( sprint4 );
SCREEN_EOF( sprint4 );
VIDEO_START( sprint4 );
-SCREEN_UPDATE( sprint4 );
+SCREEN_UPDATE_IND16( sprint4 );
WRITE8_HANDLER( sprint4_video_ram_w );
diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h
index 911f518edd4..bda145b045c 100644
--- a/src/mame/includes/sprint8.h
+++ b/src/mame/includes/sprint8.h
@@ -18,8 +18,8 @@ public:
UINT8* m_team;
tilemap_t* m_tilemap1;
tilemap_t* m_tilemap2;
- bitmap_t* m_helper1;
- bitmap_t* m_helper2;
+ bitmap_ind16 m_helper1;
+ bitmap_ind16 m_helper2;
};
@@ -33,7 +33,7 @@ void sprint8_set_collision(running_machine &machine, int n);
PALETTE_INIT( sprint8 );
SCREEN_EOF( sprint8 );
VIDEO_START( sprint8 );
-SCREEN_UPDATE( sprint8 );
+SCREEN_UPDATE_IND16( sprint8 );
WRITE8_HANDLER( sprint8_video_ram_w );
diff --git a/src/mame/includes/spy.h b/src/mame/includes/spy.h
index 80056a9edad..2d298edcdc0 100644
--- a/src/mame/includes/spy.h
+++ b/src/mame/includes/spy.h
@@ -41,4 +41,4 @@ extern void spy_tile_callback(running_machine &machine, int layer,int bank,int *
extern void spy_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask,int *shadow);
VIDEO_START( spy );
-SCREEN_UPDATE( spy );
+SCREEN_UPDATE_IND16( spy );
diff --git a/src/mame/includes/srmp2.h b/src/mame/includes/srmp2.h
index 2666cc511ac..8bc2e55fc90 100644
--- a/src/mame/includes/srmp2.h
+++ b/src/mame/includes/srmp2.h
@@ -29,7 +29,7 @@ public:
/*----------- defined in video/srmp2.c -----------*/
PALETTE_INIT( srmp2 );
-SCREEN_UPDATE( srmp2 );
+SCREEN_UPDATE_IND16( srmp2 );
PALETTE_INIT( srmp3 );
-SCREEN_UPDATE( srmp3 );
-SCREEN_UPDATE( mjyuugi );
+SCREEN_UPDATE_IND16( srmp3 );
+SCREEN_UPDATE_IND16( mjyuugi );
diff --git a/src/mame/includes/srumbler.h b/src/mame/includes/srumbler.h
index d4280291673..fc6596b644d 100644
--- a/src/mame/includes/srumbler.h
+++ b/src/mame/includes/srumbler.h
@@ -24,5 +24,5 @@ WRITE8_HANDLER( srumbler_scroll_w );
WRITE8_HANDLER( srumbler_4009_w );
VIDEO_START( srumbler );
-SCREEN_UPDATE( srumbler );
+SCREEN_UPDATE_IND16( srumbler );
SCREEN_EOF( srumbler );
diff --git a/src/mame/includes/sshangha.h b/src/mame/includes/sshangha.h
index 996d1b26476..73f04f1796b 100644
--- a/src/mame/includes/sshangha.h
+++ b/src/mame/includes/sshangha.h
@@ -27,6 +27,6 @@ public:
/*----------- defined in video/sshangha.c -----------*/
VIDEO_START( sshangha );
-SCREEN_UPDATE( sshangha );
+SCREEN_UPDATE_RGB32( sshangha );
WRITE16_HANDLER( sshangha_video_w );
diff --git a/src/mame/includes/sslam.h b/src/mame/includes/sslam.h
index 9b8380c7676..4bb801ce3ef 100644
--- a/src/mame/includes/sslam.h
+++ b/src/mame/includes/sslam.h
@@ -39,5 +39,5 @@ WRITE16_HANDLER( sslam_bg_tileram_w );
WRITE16_HANDLER( powerbls_bg_tileram_w );
VIDEO_START(sslam);
VIDEO_START(powerbls);
-SCREEN_UPDATE(sslam);
-SCREEN_UPDATE(powerbls);
+SCREEN_UPDATE_IND16(sslam);
+SCREEN_UPDATE_IND16(powerbls);
diff --git a/src/mame/includes/ssozumo.h b/src/mame/includes/ssozumo.h
index 92e1f7f3d86..fe954c9cd71 100644
--- a/src/mame/includes/ssozumo.h
+++ b/src/mame/includes/ssozumo.h
@@ -31,4 +31,4 @@ WRITE8_HANDLER( ssozumo_flipscreen_w );
PALETTE_INIT( ssozumo );
VIDEO_START( ssozumo );
-SCREEN_UPDATE( ssozumo );
+SCREEN_UPDATE_IND16( ssozumo );
diff --git a/src/mame/includes/sspeedr.h b/src/mame/includes/sspeedr.h
index a08a92b7302..66e6839c29a 100644
--- a/src/mame/includes/sspeedr.h
+++ b/src/mame/includes/sspeedr.h
@@ -37,5 +37,5 @@ WRITE8_HANDLER( sspeedr_track_vert_w );
WRITE8_HANDLER( sspeedr_track_ice_w );
VIDEO_START( sspeedr );
-SCREEN_UPDATE( sspeedr );
+SCREEN_UPDATE_IND16( sspeedr );
SCREEN_EOF( sspeedr );
diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h
index 2c64862a848..d8da319ca16 100644
--- a/src/mame/includes/ssrj.h
+++ b/src/mame/includes/ssrj.h
@@ -24,6 +24,6 @@ WRITE8_HANDLER(ssrj_vram2_w);
WRITE8_HANDLER(ssrj_vram4_w);
VIDEO_START( ssrj );
-SCREEN_UPDATE( ssrj );
+SCREEN_UPDATE_IND16( ssrj );
SCREEN_EOF( ssrj );
PALETTE_INIT( ssrj );
diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h
index 3a906fafaa3..ce31a31bc64 100644
--- a/src/mame/includes/ssv.h
+++ b/src/mame/includes/ssv.h
@@ -63,6 +63,6 @@ VIDEO_START( ssv );
VIDEO_START( eaglshot );
VIDEO_START( gdfs );
-SCREEN_UPDATE( ssv );
-SCREEN_UPDATE( eaglshot );
-SCREEN_UPDATE( gdfs );
+SCREEN_UPDATE_IND16( ssv );
+SCREEN_UPDATE_IND16( eaglshot );
+SCREEN_UPDATE_IND16( gdfs );
diff --git a/src/mame/includes/st0016.h b/src/mame/includes/st0016.h
index 5c02b1ef5df..b969295758f 100644
--- a/src/mame/includes/st0016.h
+++ b/src/mame/includes/st0016.h
@@ -57,6 +57,6 @@ WRITE8_HANDLER (st0016_character_ram_w);
READ8_HANDLER (st0016_vregs_r);
WRITE8_HANDLER (st0016_vregs_w);
-void st0016_draw_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
+void st0016_draw_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
VIDEO_START(st0016);
-SCREEN_UPDATE(st0016);
+SCREEN_UPDATE_IND16(st0016);
diff --git a/src/mame/includes/stadhero.h b/src/mame/includes/stadhero.h
index 6859a691412..374cfd53be6 100644
--- a/src/mame/includes/stadhero.h
+++ b/src/mame/includes/stadhero.h
@@ -14,6 +14,6 @@ public:
/*----------- defined in video/stadhero.c -----------*/
VIDEO_START( stadhero );
-SCREEN_UPDATE( stadhero );
+SCREEN_UPDATE_IND16( stadhero );
WRITE16_HANDLER( stadhero_pf1_data_w );
diff --git a/src/mame/includes/starcrus.h b/src/mame/includes/starcrus.h
index 0ef6ae44828..09bf0506de2 100644
--- a/src/mame/includes/starcrus.h
+++ b/src/mame/includes/starcrus.h
@@ -4,10 +4,10 @@ public:
starcrus_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
- bitmap_t *m_ship1_vid;
- bitmap_t *m_ship2_vid;
- bitmap_t *m_proj1_vid;
- bitmap_t *m_proj2_vid;
+ bitmap_ind16 *m_ship1_vid;
+ bitmap_ind16 *m_ship2_vid;
+ bitmap_ind16 *m_proj1_vid;
+ bitmap_ind16 *m_proj2_vid;
int m_s1_x;
int m_s1_y;
@@ -55,4 +55,4 @@ WRITE8_HANDLER( starcrus_proj_parm_1_w );
WRITE8_HANDLER( starcrus_proj_parm_2_w );
READ8_HANDLER( starcrus_coll_det_r );
VIDEO_START( starcrus );
-SCREEN_UPDATE( starcrus );
+SCREEN_UPDATE_IND16( starcrus );
diff --git a/src/mame/includes/starfire.h b/src/mame/includes/starfire.h
index 629116df564..705b34c2789 100644
--- a/src/mame/includes/starfire.h
+++ b/src/mame/includes/starfire.h
@@ -29,12 +29,12 @@ public:
UINT8 *m_starfire_colorram;
emu_timer* m_scanline_timer;
- bitmap_t *m_starfire_screen;
+ bitmap_rgb32 m_starfire_screen;
};
/*----------- defined in video/starfire.c -----------*/
-SCREEN_UPDATE( starfire );
+SCREEN_UPDATE_RGB32( starfire );
VIDEO_START( starfire );
WRITE8_HANDLER( starfire_videoram_w );
diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h
index c2235c5d9af..7108bab908b 100644
--- a/src/mame/includes/starshp1.h
+++ b/src/mame/includes/starshp1.h
@@ -58,7 +58,7 @@ public:
int m_mux;
int m_inverse;
UINT16 *m_LSFR;
- bitmap_t *m_helper;
+ bitmap_ind16 m_helper;
tilemap_t *m_bg_tilemap;
};
@@ -72,7 +72,7 @@ WRITE8_HANDLER( starshp1_ssadd_w );
WRITE8_HANDLER( starshp1_playfield_w );
PALETTE_INIT( starshp1 );
-SCREEN_UPDATE( starshp1 );
+SCREEN_UPDATE_IND16( starshp1 );
SCREEN_EOF( starshp1 );
VIDEO_START( starshp1 );
diff --git a/src/mame/includes/stfight.h b/src/mame/includes/stfight.h
index c1c3b470235..6c5c5224b44 100644
--- a/src/mame/includes/stfight.h
+++ b/src/mame/includes/stfight.h
@@ -47,4 +47,4 @@ WRITE8_HANDLER( stfight_text_attr_w );
WRITE8_HANDLER( stfight_vh_latch_w );
WRITE8_HANDLER( stfight_sprite_bank_w );
VIDEO_START( stfight );
-SCREEN_UPDATE( stfight );
+SCREEN_UPDATE_IND16( stfight );
diff --git a/src/mame/includes/stlforce.h b/src/mame/includes/stlforce.h
index ec72c92cc32..7216da61183 100644
--- a/src/mame/includes/stlforce.h
+++ b/src/mame/includes/stlforce.h
@@ -27,7 +27,7 @@ public:
/*----------- defined in video/stlforce.c -----------*/
VIDEO_START( stlforce );
-SCREEN_UPDATE( stlforce );
+SCREEN_UPDATE_IND16( stlforce );
WRITE16_HANDLER( stlforce_tx_videoram_w );
WRITE16_HANDLER( stlforce_mhigh_videoram_w );
WRITE16_HANDLER( stlforce_mlow_videoram_w );
diff --git a/src/mame/includes/strnskil.h b/src/mame/includes/strnskil.h
index 76161b99118..82903827495 100644
--- a/src/mame/includes/strnskil.h
+++ b/src/mame/includes/strnskil.h
@@ -27,4 +27,4 @@ WRITE8_HANDLER( strnskil_scrl_ctrl_w );
PALETTE_INIT( strnskil );
VIDEO_START( strnskil );
-SCREEN_UPDATE( strnskil );
+SCREEN_UPDATE_IND16( strnskil );
diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h
index 38259731f62..63e8b362e08 100644
--- a/src/mame/includes/stv.h
+++ b/src/mame/includes/stv.h
@@ -66,7 +66,7 @@ public:
struct {
UINT8 *gfx_decode;
- bitmap_t *roz_bitmap[2];
+ bitmap_rgb32 roz_bitmap[2];
UINT8 dotsel;
UINT8 pal;
UINT16 h_count;
@@ -118,6 +118,8 @@ public:
legacy_cpu_device* m_maincpu;
legacy_cpu_device* m_slave;
legacy_cpu_device* m_audiocpu;
+
+ bitmap_rgb32 m_tmpbitmap;
};
#define MASTER_CLOCK_352 57272720
@@ -222,7 +224,7 @@ WRITE32_HANDLER ( saturn_vdp2_cram_w );
WRITE16_HANDLER ( saturn_vdp2_regs_w );
VIDEO_START ( stv_vdp2 );
-SCREEN_UPDATE( stv_vdp2 );
+SCREEN_UPDATE_RGB32( stv_vdp2 );
#if NEW_VIDEO_CODE
-SCREEN_UPDATE( saturn );
+SCREEN_UPDATE_RGB32( saturn );
#endif
diff --git a/src/mame/includes/subs.h b/src/mame/includes/subs.h
index a15cd3056f2..f155ce6b762 100644
--- a/src/mame/includes/subs.h
+++ b/src/mame/includes/subs.h
@@ -58,8 +58,8 @@ DISCRETE_SOUND_EXTERN( subs );
/*----------- defined in video/subs.c -----------*/
-SCREEN_UPDATE( subs_left );
-SCREEN_UPDATE( subs_right );
+SCREEN_UPDATE_IND16( subs_left );
+SCREEN_UPDATE_IND16( subs_right );
WRITE8_HANDLER( subs_invert1_w );
WRITE8_HANDLER( subs_invert2_w );
diff --git a/src/mame/includes/suna16.h b/src/mame/includes/suna16.h
index 5117c2e6ec5..04e826ee102 100644
--- a/src/mame/includes/suna16.h
+++ b/src/mame/includes/suna16.h
@@ -25,5 +25,5 @@ READ16_HANDLER ( suna16_paletteram16_r );
WRITE16_HANDLER( suna16_paletteram16_w );
VIDEO_START( suna16 );
-SCREEN_UPDATE( suna16 );
-SCREEN_UPDATE( bestbest );
+SCREEN_UPDATE_IND16( suna16 );
+SCREEN_UPDATE_IND16( bestbest );
diff --git a/src/mame/includes/suna8.h b/src/mame/includes/suna8.h
index 69f16e5026e..645f75bcf69 100644
--- a/src/mame/includes/suna8.h
+++ b/src/mame/includes/suna8.h
@@ -61,4 +61,4 @@ WRITE8_HANDLER( brickzn_banked_paletteram_w );
VIDEO_START( suna8_textdim0 );
VIDEO_START( suna8_textdim8 );
VIDEO_START( suna8_textdim12 );
-SCREEN_UPDATE( suna8 );
+SCREEN_UPDATE_IND16( suna8 );
diff --git a/src/mame/includes/supbtime.h b/src/mame/includes/supbtime.h
index 042a849d720..41703142e5f 100644
--- a/src/mame/includes/supbtime.h
+++ b/src/mame/includes/supbtime.h
@@ -29,4 +29,4 @@ public:
/*----------- defined in video/supbtime.c -----------*/
-SCREEN_UPDATE( supbtime );
+SCREEN_UPDATE_IND16( supbtime );
diff --git a/src/mame/includes/superchs.h b/src/mame/includes/superchs.h
index 49818094577..b8586dd253e 100644
--- a/src/mame/includes/superchs.h
+++ b/src/mame/includes/superchs.h
@@ -28,4 +28,4 @@ public:
/*----------- defined in video/superchs.c -----------*/
VIDEO_START( superchs );
-SCREEN_UPDATE( superchs );
+SCREEN_UPDATE_IND16( superchs );
diff --git a/src/mame/includes/superqix.h b/src/mame/includes/superqix.h
index 5ceb07bc2ca..acbd3b67203 100644
--- a/src/mame/includes/superqix.h
+++ b/src/mame/includes/superqix.h
@@ -27,7 +27,7 @@ public:
UINT8 *m_bitmapram;
UINT8 *m_bitmapram2;
int m_gfxbank;
- bitmap_t *m_fg_bitmap[2];
+ bitmap_ind16 *m_fg_bitmap[2];
int m_show_bitmap;
tilemap_t *m_bg_tilemap;
UINT8 *m_spriteram;
@@ -47,6 +47,6 @@ WRITE8_HANDLER( pbillian_0410_w );
WRITE8_HANDLER( superqix_0410_w );
VIDEO_START( pbillian );
-SCREEN_UPDATE( pbillian );
+SCREEN_UPDATE_IND16( pbillian );
VIDEO_START( superqix );
-SCREEN_UPDATE( superqix );
+SCREEN_UPDATE_IND16( superqix );
diff --git a/src/mame/includes/suprloco.h b/src/mame/includes/suprloco.h
index 4060050d864..1130e48e055 100644
--- a/src/mame/includes/suprloco.h
+++ b/src/mame/includes/suprloco.h
@@ -17,7 +17,7 @@ public:
PALETTE_INIT( suprloco );
VIDEO_START( suprloco );
-SCREEN_UPDATE( suprloco );
+SCREEN_UPDATE_IND16( suprloco );
WRITE8_HANDLER( suprloco_videoram_w );
WRITE8_HANDLER( suprloco_scrollram_w );
WRITE8_HANDLER( suprloco_control_w );
diff --git a/src/mame/includes/suprnova.h b/src/mame/includes/suprnova.h
index 1547aa0bc53..f54628b10a6 100644
--- a/src/mame/includes/suprnova.h
+++ b/src/mame/includes/suprnova.h
@@ -35,11 +35,11 @@ public:
UINT32 *m_cache_ram;
hit_t m_hit;
UINT32 m_timer_0_temp[4];
- bitmap_t *m_sprite_bitmap;
- bitmap_t *m_tilemap_bitmap_lower;
- bitmap_t *m_tilemap_bitmapflags_lower;
- bitmap_t *m_tilemap_bitmap_higher;
- bitmap_t *m_tilemap_bitmapflags_higher;
+ bitmap_ind16 m_sprite_bitmap;
+ bitmap_ind16 m_tilemap_bitmap_lower;
+ bitmap_ind8 m_tilemap_bitmapflags_lower;
+ bitmap_ind16 m_tilemap_bitmap_higher;
+ bitmap_ind8 m_tilemap_bitmapflags_higher;
int m_depthA;
int m_depthB;
int m_use_spc_bright;
@@ -74,7 +74,7 @@ public:
void skns_sprite_kludge(int x, int y);
void skns_draw_sprites(
- running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+ running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
UINT32* spriteram_source, size_t spriteram_size,
UINT8* gfx_source, size_t gfx_length,
UINT32* sprite_regs );
@@ -87,4 +87,4 @@ WRITE32_HANDLER ( skns_palette_ram_w );
VIDEO_START(skns);
VIDEO_RESET(skns);
SCREEN_EOF(skns);
-SCREEN_UPDATE(skns);
+SCREEN_UPDATE_RGB32(skns);
diff --git a/src/mame/includes/suprridr.h b/src/mame/includes/suprridr.h
index 424542a0257..d7ec57ff110 100644
--- a/src/mame/includes/suprridr.h
+++ b/src/mame/includes/suprridr.h
@@ -38,4 +38,4 @@ int suprridr_is_screen_flipped(running_machine &machine);
WRITE8_HANDLER( suprridr_fgram_w );
WRITE8_HANDLER( suprridr_bgram_w );
-SCREEN_UPDATE( suprridr );
+SCREEN_UPDATE_IND16( suprridr );
diff --git a/src/mame/includes/suprslam.h b/src/mame/includes/suprslam.h
index f8df81df3b8..21f89e34e50 100644
--- a/src/mame/includes/suprslam.h
+++ b/src/mame/includes/suprslam.h
@@ -41,4 +41,4 @@ WRITE16_HANDLER( suprslam_bg_videoram_w );
WRITE16_HANDLER( suprslam_bank_w );
VIDEO_START( suprslam );
-SCREEN_UPDATE( suprslam );
+SCREEN_UPDATE_IND16( suprslam );
diff --git a/src/mame/includes/surpratk.h b/src/mame/includes/surpratk.h
index 360ba2c5a00..12c2c68d148 100644
--- a/src/mame/includes/surpratk.h
+++ b/src/mame/includes/surpratk.h
@@ -34,4 +34,4 @@ public:
extern void surpratk_tile_callback(running_machine &machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
extern void surpratk_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask);
-SCREEN_UPDATE( surpratk );
+SCREEN_UPDATE_IND16( surpratk );
diff --git a/src/mame/includes/system1.h b/src/mame/includes/system1.h
index 560e562334b..b970158f542 100644
--- a/src/mame/includes/system1.h
+++ b/src/mame/includes/system1.h
@@ -19,7 +19,7 @@ public:
UINT8 m_mix_collide_summary;
UINT8 *m_sprite_collide;
UINT8 m_sprite_collide_summary;
- bitmap_t *m_sprite_bitmap;
+ bitmap_ind16 *m_sprite_bitmap;
UINT8 m_video_mode;
UINT8 m_videoram_bank;
tilemap_t *m_tilemap_page[8];
@@ -48,6 +48,6 @@ READ8_HANDLER( system1_sprite_collision_r );
WRITE8_HANDLER( system1_sprite_collision_w );
WRITE8_HANDLER( system1_sprite_collision_reset_w );
-SCREEN_UPDATE( system1 );
-SCREEN_UPDATE( system2 );
-SCREEN_UPDATE( system2_rowscroll );
+SCREEN_UPDATE_IND16( system1 );
+SCREEN_UPDATE_IND16( system2 );
+SCREEN_UPDATE_IND16( system2_rowscroll );
diff --git a/src/mame/includes/system16.h b/src/mame/includes/system16.h
index b8625d4d36e..51ae69691db 100644
--- a/src/mame/includes/system16.h
+++ b/src/mame/includes/system16.h
@@ -106,8 +106,8 @@ extern VIDEO_START( s16a_bootleg );
extern VIDEO_START( s16a_bootleg_wb3bl );
extern VIDEO_START( s16a_bootleg_shinobi );
extern VIDEO_START( s16a_bootleg_passsht );
-extern SCREEN_UPDATE( s16a_bootleg );
-extern SCREEN_UPDATE( s16a_bootleg_passht4b );
+extern SCREEN_UPDATE_IND16( s16a_bootleg );
+extern SCREEN_UPDATE_IND16( s16a_bootleg_passht4b );
extern WRITE16_HANDLER( s16a_bootleg_tilemapselect_w );
extern WRITE16_HANDLER( s16a_bootleg_bgscrolly_w );
extern WRITE16_HANDLER( s16a_bootleg_bgscrollx_w );
@@ -120,8 +120,8 @@ extern WRITE16_HANDLER( sys16_textram_w );
/* "normal" video hardware */
extern VIDEO_START( system16 );
-extern SCREEN_UPDATE( system16 );
+extern SCREEN_UPDATE_IND16( system16 );
/* system18 video hardware */
extern VIDEO_START( system18old );
-extern SCREEN_UPDATE( system18old );
+extern SCREEN_UPDATE_IND16( system18old );
diff --git a/src/mame/includes/tagteam.h b/src/mame/includes/tagteam.h
index 87fb6b767df..52ce1fc1f5f 100644
--- a/src/mame/includes/tagteam.h
+++ b/src/mame/includes/tagteam.h
@@ -26,4 +26,4 @@ WRITE8_HANDLER( tagteam_flipscreen_w );
PALETTE_INIT( tagteam );
VIDEO_START( tagteam );
-SCREEN_UPDATE( tagteam );
+SCREEN_UPDATE_IND16( tagteam );
diff --git a/src/mame/includes/tail2nos.h b/src/mame/includes/tail2nos.h
index c2d96eb2712..f080a04d932 100644
--- a/src/mame/includes/tail2nos.h
+++ b/src/mame/includes/tail2nos.h
@@ -40,4 +40,4 @@ WRITE16_HANDLER( tail2nos_zoomdata_w );
WRITE16_HANDLER( tail2nos_gfxbank_w );
VIDEO_START( tail2nos );
-SCREEN_UPDATE( tail2nos );
+SCREEN_UPDATE_IND16( tail2nos );
diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h
index a6231b3dd66..38b45f1121c 100644
--- a/src/mame/includes/taito_b.h
+++ b/src/mame/includes/taito_b.h
@@ -12,9 +12,9 @@ public:
/* video-related */
/* framebuffer is a raw bitmap, remapped as a last step */
- bitmap_t *m_framebuffer[2];
- bitmap_t *m_pixel_bitmap;
- bitmap_t *m_realpunc_bitmap;
+ bitmap_ind16 *m_framebuffer[2];
+ bitmap_ind16 *m_pixel_bitmap;
+ bitmap_ind16 *m_realpunc_bitmap;
UINT16 m_pixel_scroll[2];
@@ -56,7 +56,7 @@ VIDEO_START( realpunc );
VIDEO_RESET( hitice );
-SCREEN_UPDATE( realpunc );
-SCREEN_UPDATE( taitob );
+SCREEN_UPDATE_RGB32( realpunc );
+SCREEN_UPDATE_IND16( taitob );
SCREEN_EOF( taitob );
diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h
index dd73fc5a949..9462bae1b3a 100644
--- a/src/mame/includes/taito_f2.h
+++ b/src/mame/includes/taito_f2.h
@@ -114,14 +114,14 @@ SCREEN_EOF( taitof2_partial_buffer_delayed );
SCREEN_EOF( taitof2_partial_buffer_delayed_thundfox );
SCREEN_EOF( taitof2_partial_buffer_delayed_qzchikyu );
-SCREEN_UPDATE( taitof2 );
-SCREEN_UPDATE( taitof2_pri );
-SCREEN_UPDATE( taitof2_pri_roz );
-SCREEN_UPDATE( taitof2_ssi );
-SCREEN_UPDATE( taitof2_thundfox );
-SCREEN_UPDATE( taitof2_deadconx );
-SCREEN_UPDATE( taitof2_metalb );
-SCREEN_UPDATE( taitof2_yesnoj );
+SCREEN_UPDATE_IND16( taitof2 );
+SCREEN_UPDATE_IND16( taitof2_pri );
+SCREEN_UPDATE_IND16( taitof2_pri_roz );
+SCREEN_UPDATE_IND16( taitof2_ssi );
+SCREEN_UPDATE_IND16( taitof2_thundfox );
+SCREEN_UPDATE_IND16( taitof2_deadconx );
+SCREEN_UPDATE_IND16( taitof2_metalb );
+SCREEN_UPDATE_IND16( taitof2_yesnoj );
WRITE16_HANDLER( taitof2_spritebank_w );
WRITE16_HANDLER( koshien_spritebank_w );
diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h
index 319bdb160a0..524168a7a8a 100644
--- a/src/mame/includes/taito_f3.h
+++ b/src/mame/includes/taito_f3.h
@@ -83,7 +83,7 @@ public:
int m_f3_skip_this_frame;
int m_sprite_lag;
UINT8 m_sprite_pri_usage;
- bitmap_t *m_pri_alp_bitmap;
+ bitmap_ind8 m_pri_alp_bitmap;
int m_f3_alpha_level_2as;
int m_f3_alpha_level_2ad;
int m_f3_alpha_level_3as;
@@ -199,7 +199,7 @@ public:
/*----------- defined in video/taito_f3.c -----------*/
VIDEO_START( f3 );
-SCREEN_UPDATE( f3 );
+SCREEN_UPDATE_RGB32( f3 );
SCREEN_EOF( f3 );
WRITE16_HANDLER( f3_control_0_w );
diff --git a/src/mame/includes/taito_h.h b/src/mame/includes/taito_h.h
index 471ed9e7a8d..b917c7ca81f 100644
--- a/src/mame/includes/taito_h.h
+++ b/src/mame/includes/taito_h.h
@@ -26,6 +26,6 @@ public:
/*----------- defined in video/taito_h.c -----------*/
-SCREEN_UPDATE( syvalion );
-SCREEN_UPDATE( recordbr );
-SCREEN_UPDATE( dleague );
+SCREEN_UPDATE_IND16( syvalion );
+SCREEN_UPDATE_IND16( recordbr );
+SCREEN_UPDATE_IND16( dleague );
diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h
index c72036a47c2..7cd842331bb 100644
--- a/src/mame/includes/taito_l.h
+++ b/src/mame/includes/taito_l.h
@@ -65,7 +65,7 @@ public:
SCREEN_EOF( taitol );
VIDEO_START( taitol );
-SCREEN_UPDATE( taitol );
+SCREEN_UPDATE_IND16( taitol );
void taitol_chardef14_m(running_machine &machine, int offset);
void taitol_chardef15_m(running_machine &machine, int offset);
diff --git a/src/mame/includes/taito_o.h b/src/mame/includes/taito_o.h
index 989906929f3..8a4b7e6ce7f 100644
--- a/src/mame/includes/taito_o.h
+++ b/src/mame/includes/taito_o.h
@@ -20,4 +20,4 @@ public:
/*----------- defined in video/taito_o.c -----------*/
-SCREEN_UPDATE( parentj );
+SCREEN_UPDATE_IND16( parentj );
diff --git a/src/mame/includes/taito_z.h b/src/mame/includes/taito_z.h
index 834afa9cf3c..8995aee6779 100644
--- a/src/mame/includes/taito_z.h
+++ b/src/mame/includes/taito_z.h
@@ -56,10 +56,10 @@ WRITE16_HANDLER( sci_spriteframe_w );
VIDEO_START( taitoz );
-SCREEN_UPDATE( contcirc );
-SCREEN_UPDATE( chasehq );
-SCREEN_UPDATE( bshark );
-SCREEN_UPDATE( sci );
-SCREEN_UPDATE( aquajack );
-SCREEN_UPDATE( spacegun );
-SCREEN_UPDATE( dblaxle );
+SCREEN_UPDATE_IND16( contcirc );
+SCREEN_UPDATE_IND16( chasehq );
+SCREEN_UPDATE_IND16( bshark );
+SCREEN_UPDATE_IND16( sci );
+SCREEN_UPDATE_IND16( aquajack );
+SCREEN_UPDATE_IND16( spacegun );
+SCREEN_UPDATE_IND16( dblaxle );
diff --git a/src/mame/includes/taitoair.h b/src/mame/includes/taitoair.h
index 2e40e7548f8..0f5fe702020 100644
--- a/src/mame/includes/taitoair.h
+++ b/src/mame/includes/taitoair.h
@@ -44,20 +44,20 @@ public:
UINT16 * m_gradram;
UINT16 * m_backregs;
- bitmap_t *m_framebuffer[2];
+ bitmap_ind16 *m_framebuffer[2];
/* 3d info */
INT16 m_frustumLeft;
INT16 m_frustumBottom;
INT16 m_eyecoordBuffer[4]; /* homogeneous */
- //bitmap_t *m_buffer3d;
+ //bitmap_ind16 *m_buffer3d;
};
/*----------- defined in video/taitoair.c -----------*/
-SCREEN_UPDATE( taitoair );
+SCREEN_UPDATE_IND16( taitoair );
VIDEO_START( taitoair );
WRITE16_HANDLER( dsp_flags_w );
diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h
index 8d0a19bf73c..ffaccc6fc8a 100644
--- a/src/mame/includes/taitojc.h
+++ b/src/mame/includes/taitojc.h
@@ -24,8 +24,8 @@ public:
INT32 m_intersection_data[3];
UINT8 *m_texture;
- bitmap_t *m_framebuffer;
- bitmap_t *m_zbuffer;
+ bitmap_ind16 m_framebuffer;
+ bitmap_ind16 m_zbuffer;
UINT32 *m_vram;
UINT32 *m_objlist;
@@ -73,7 +73,7 @@ void taitojc_clear_frame(running_machine &machine);
void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int length);
VIDEO_START(taitojc);
-SCREEN_UPDATE(taitojc);
+SCREEN_UPDATE_IND16(taitojc);
const double taitojc_odometer_table[0x100] =
{
diff --git a/src/mame/includes/taitosj.h b/src/mame/includes/taitosj.h
index d8cb809b298..04fbdefca02 100644
--- a/src/mame/includes/taitosj.h
+++ b/src/mame/includes/taitosj.h
@@ -33,11 +33,11 @@ public:
UINT8 m_spacecr_prot_value;
UINT8 m_protection_value;
UINT32 m_address;
- bitmap_t *m_layer_bitmap[3];
- bitmap_t *m_sprite_sprite_collbitmap1;
- bitmap_t *m_sprite_sprite_collbitmap2;
- bitmap_t *m_sprite_layer_collbitmap1;
- bitmap_t *m_sprite_layer_collbitmap2[3];
+ bitmap_ind16 m_layer_bitmap[3];
+ bitmap_ind16 m_sprite_sprite_collbitmap1;
+ bitmap_ind16 m_sprite_sprite_collbitmap2;
+ bitmap_ind16 m_sprite_layer_collbitmap1;
+ bitmap_ind16 m_sprite_layer_collbitmap2[3];
int m_draw_order[32][4];
};
@@ -72,5 +72,5 @@ WRITE8_HANDLER( taitosj_characterram_w );
WRITE8_HANDLER( junglhbr_characterram_w );
WRITE8_HANDLER( taitosj_collision_reg_clear_w );
VIDEO_START( taitosj );
-SCREEN_UPDATE( taitosj );
-SCREEN_UPDATE( kikstart );
+SCREEN_UPDATE_IND16( taitosj );
+SCREEN_UPDATE_IND16( kikstart );
diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h
index 5d3eae47a17..fade5fc4b29 100644
--- a/src/mame/includes/tank8.h
+++ b/src/mame/includes/tank8.h
@@ -36,9 +36,9 @@ public:
UINT8 *m_pos_d_ram;
UINT8 *m_team;
tilemap_t *m_tilemap;
- bitmap_t *m_helper1;
- bitmap_t *m_helper2;
- bitmap_t *m_helper3;
+ bitmap_ind16 m_helper1;
+ bitmap_ind16 m_helper2;
+ bitmap_ind16 m_helper3;
};
@@ -57,7 +57,7 @@ void tank8_set_collision(running_machine &machine, int index);
PALETTE_INIT( tank8 );
SCREEN_EOF( tank8 );
VIDEO_START( tank8 );
-SCREEN_UPDATE( tank8 );
+SCREEN_UPDATE_IND16( tank8 );
WRITE8_HANDLER( tank8_video_ram_w );
diff --git a/src/mame/includes/tankbatt.h b/src/mame/includes/tankbatt.h
index d3e2ea41e67..20b8b101247 100644
--- a/src/mame/includes/tankbatt.h
+++ b/src/mame/includes/tankbatt.h
@@ -19,4 +19,4 @@ WRITE8_HANDLER( tankbatt_videoram_w );
PALETTE_INIT( tankbatt );
VIDEO_START( tankbatt );
-SCREEN_UPDATE( tankbatt );
+SCREEN_UPDATE_IND16( tankbatt );
diff --git a/src/mame/includes/tankbust.h b/src/mame/includes/tankbust.h
index 967225a7438..0cda2e53e18 100644
--- a/src/mame/includes/tankbust.h
+++ b/src/mame/includes/tankbust.h
@@ -25,7 +25,7 @@ public:
/*----------- defined in video/tankbust.c -----------*/
VIDEO_START( tankbust );
-SCREEN_UPDATE( tankbust );
+SCREEN_UPDATE_IND16( tankbust );
WRITE8_HANDLER( tankbust_background_videoram_w );
READ8_HANDLER( tankbust_background_videoram_r );
diff --git a/src/mame/includes/taotaido.h b/src/mame/includes/taotaido.h
index 4a2f4ed4f95..631c33d6da5 100644
--- a/src/mame/includes/taotaido.h
+++ b/src/mame/includes/taotaido.h
@@ -25,5 +25,5 @@ WRITE16_HANDLER( taotaido_sprite_character_bank_select_w );
WRITE16_HANDLER( taotaido_tileregs_w );
WRITE16_HANDLER( taotaido_bgvideoram_w );
VIDEO_START( taotaido );
-SCREEN_UPDATE( taotaido );
+SCREEN_UPDATE_IND16( taotaido );
SCREEN_EOF( taotaido );
diff --git a/src/mame/includes/targeth.h b/src/mame/includes/targeth.h
index 7f2cc192242..1c33f78ebb4 100644
--- a/src/mame/includes/targeth.h
+++ b/src/mame/includes/targeth.h
@@ -19,4 +19,4 @@ public:
WRITE16_HANDLER( targeth_vram_w );
VIDEO_START( targeth );
-SCREEN_UPDATE( targeth );
+SCREEN_UPDATE_IND16( targeth );
diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h
index efc5af904fd..ac2fc1e21e6 100644
--- a/src/mame/includes/tatsumi.h
+++ b/src/mame/includes/tatsumi.h
@@ -38,7 +38,7 @@ public:
tilemap_t *m_layer1;
tilemap_t *m_layer2;
tilemap_t *m_layer3;
- bitmap_t *m_temp_bitmap;
+ bitmap_rgb32 m_temp_bitmap;
UINT8 *m_apache3_road_x_ram;
UINT8 m_apache3_road_z;
UINT16* m_roundup5_vram;
@@ -101,8 +101,8 @@ VIDEO_START( roundup5 );
VIDEO_START( cyclwarr );
VIDEO_START( bigfight );
-SCREEN_UPDATE( roundup5 );
-SCREEN_UPDATE( apache3 );
-SCREEN_UPDATE( cyclwarr );
-SCREEN_UPDATE( bigfight );
+SCREEN_UPDATE_RGB32( roundup5 );
+SCREEN_UPDATE_RGB32( apache3 );
+SCREEN_UPDATE_RGB32( cyclwarr );
+SCREEN_UPDATE_RGB32( bigfight );
diff --git a/src/mame/includes/taxidriv.h b/src/mame/includes/taxidriv.h
index 06c4203c615..db657db3838 100644
--- a/src/mame/includes/taxidriv.h
+++ b/src/mame/includes/taxidriv.h
@@ -28,4 +28,4 @@ public:
WRITE8_DEVICE_HANDLER( taxidriv_spritectrl_w );
-SCREEN_UPDATE( taxidriv );
+SCREEN_UPDATE_IND16( taxidriv );
diff --git a/src/mame/includes/tbowl.h b/src/mame/includes/tbowl.h
index dc53fbec913..2b578f016a4 100644
--- a/src/mame/includes/tbowl.h
+++ b/src/mame/includes/tbowl.h
@@ -38,6 +38,6 @@ WRITE8_HANDLER( tbowl_bgyscroll_lo );
WRITE8_HANDLER( tbowl_bgyscroll_hi );
VIDEO_START( tbowl );
-SCREEN_UPDATE( tbowl_left );
-SCREEN_UPDATE( tbowl_right );
+SCREEN_UPDATE_IND16( tbowl_left );
+SCREEN_UPDATE_IND16( tbowl_right );
diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h
index 1157cfbb9e0..77f2ccfa018 100644
--- a/src/mame/includes/tceptor.h
+++ b/src/mame/includes/tceptor.h
@@ -22,7 +22,7 @@ public:
INT32 m_bg1_scroll_y;
INT32 m_bg2_scroll_x;
INT32 m_bg2_scroll_y;
- bitmap_t *m_temp_bitmap;
+ bitmap_ind16 m_temp_bitmap;
UINT16 *m_sprite_ram_buffered;
int m_is_mask_spr[1024/16];
};
@@ -32,9 +32,9 @@ public:
PALETTE_INIT( tceptor );
VIDEO_START( tceptor );
-SCREEN_UPDATE( tceptor_2d );
-SCREEN_UPDATE( tceptor_3d_left );
-SCREEN_UPDATE( tceptor_3d_right );
+SCREEN_UPDATE_IND16( tceptor_2d );
+SCREEN_UPDATE_IND16( tceptor_3d_left );
+SCREEN_UPDATE_IND16( tceptor_3d_right );
SCREEN_EOF( tceptor );
WRITE8_HANDLER( tceptor_tile_ram_w );
diff --git a/src/mame/includes/tecmo.h b/src/mame/includes/tecmo.h
index 31f903ea766..f11beeeb18c 100644
--- a/src/mame/includes/tecmo.h
+++ b/src/mame/includes/tecmo.h
@@ -31,4 +31,4 @@ WRITE8_HANDLER( tecmo_bgscroll_w );
WRITE8_HANDLER( tecmo_flipscreen_w );
VIDEO_START( tecmo );
-SCREEN_UPDATE( tecmo );
+SCREEN_UPDATE_IND16( tecmo );
diff --git a/src/mame/includes/tecmo16.h b/src/mame/includes/tecmo16.h
index 6e0bd48db84..72199001fa8 100644
--- a/src/mame/includes/tecmo16.h
+++ b/src/mame/includes/tecmo16.h
@@ -12,9 +12,9 @@ public:
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
tilemap_t *m_tx_tilemap;
- bitmap_t *m_sprite_bitmap;
- bitmap_t *m_tile_bitmap_bg;
- bitmap_t *m_tile_bitmap_fg;
+ bitmap_ind16 m_sprite_bitmap;
+ bitmap_ind16 m_tile_bitmap_bg;
+ bitmap_ind16 m_tile_bitmap_fg;
int m_flipscreen;
int m_game_is_riot;
UINT16 m_scroll_x_w;
@@ -47,4 +47,4 @@ WRITE16_HANDLER( tecmo16_scroll_char_y_w );
VIDEO_START( fstarfrc );
VIDEO_START( ginkun );
VIDEO_START( riot );
-SCREEN_UPDATE( tecmo16 );
+SCREEN_UPDATE_RGB32( tecmo16 );
diff --git a/src/mame/includes/tecmosys.h b/src/mame/includes/tecmosys.h
index b2cbd183fea..b6eda46619f 100644
--- a/src/mame/includes/tecmosys.h
+++ b/src/mame/includes/tecmosys.h
@@ -25,9 +25,9 @@ public:
UINT16* m_c80000regs;
UINT16* m_880000regs;
int m_spritelist;
- bitmap_t *m_sprite_bitmap;
- bitmap_t *m_tmp_tilemap_composebitmap;
- bitmap_t *m_tmp_tilemap_renderbitmap;
+ bitmap_ind16 m_sprite_bitmap;
+ bitmap_ind16 m_tmp_tilemap_composebitmap;
+ bitmap_ind16 m_tmp_tilemap_renderbitmap;
tilemap_t *m_bg0tilemap;
tilemap_t *m_bg1tilemap;
tilemap_t *m_bg2tilemap;
@@ -60,5 +60,5 @@ WRITE16_HANDLER( bg0_tilemap_lineram_w );
WRITE16_HANDLER( bg1_tilemap_lineram_w );
WRITE16_HANDLER( bg2_tilemap_lineram_w );
-SCREEN_UPDATE(tecmosys);
+SCREEN_UPDATE_RGB32(tecmosys);
VIDEO_START(tecmosys);
diff --git a/src/mame/includes/tehkanwc.h b/src/mame/includes/tehkanwc.h
index 9be4a260037..ee9443cefb4 100644
--- a/src/mame/includes/tehkanwc.h
+++ b/src/mame/includes/tehkanwc.h
@@ -34,4 +34,4 @@ extern WRITE8_HANDLER( gridiron_led0_w );
extern WRITE8_HANDLER( gridiron_led1_w );
extern VIDEO_START( tehkanwc );
-extern SCREEN_UPDATE( tehkanwc );
+extern SCREEN_UPDATE_IND16( tehkanwc );
diff --git a/src/mame/includes/terracre.h b/src/mame/includes/terracre.h
index f34a4c02ed0..9c3c55f5862 100644
--- a/src/mame/includes/terracre.h
+++ b/src/mame/includes/terracre.h
@@ -26,4 +26,4 @@ WRITE16_HANDLER( amazon_scrolly_w );
WRITE16_HANDLER( amazon_scrollx_w );
WRITE16_HANDLER( amazon_flipscreen_w );
VIDEO_START( amazon );
-SCREEN_UPDATE( amazon );
+SCREEN_UPDATE_IND16( amazon );
diff --git a/src/mame/includes/tetrisp2.h b/src/mame/includes/tetrisp2.h
index b2b08500416..5f0e226bd71 100644
--- a/src/mame/includes/tetrisp2.h
+++ b/src/mame/includes/tetrisp2.h
@@ -62,13 +62,13 @@ WRITE16_HANDLER( rocknms_sub_vram_fg_w );
WRITE16_HANDLER( rocknms_sub_vram_rot_w );
VIDEO_START( tetrisp2 );
-SCREEN_UPDATE( tetrisp2 );
+SCREEN_UPDATE_IND16( tetrisp2 );
VIDEO_START( rockntread );
-SCREEN_UPDATE( rockntread );
+SCREEN_UPDATE_IND16( rockntread );
VIDEO_START( rocknms );
-SCREEN_UPDATE( rocknms_left );
-SCREEN_UPDATE( rocknms_right );
+SCREEN_UPDATE_RGB32( rocknms_left );
+SCREEN_UPDATE_RGB32( rocknms_right );
VIDEO_START( nndmseal );
diff --git a/src/mame/includes/thedeep.h b/src/mame/includes/thedeep.h
index 44b5c6512ae..fd4f56e34d6 100644
--- a/src/mame/includes/thedeep.h
+++ b/src/mame/includes/thedeep.h
@@ -37,5 +37,5 @@ WRITE8_HANDLER( thedeep_vram_1_w );
PALETTE_INIT( thedeep );
VIDEO_START( thedeep );
-SCREEN_UPDATE( thedeep );
+SCREEN_UPDATE_IND16( thedeep );
diff --git a/src/mame/includes/thepit.h b/src/mame/includes/thepit.h
index 8ebfa124028..7169b272044 100644
--- a/src/mame/includes/thepit.h
+++ b/src/mame/includes/thepit.h
@@ -27,7 +27,7 @@ public:
PALETTE_INIT( thepit );
PALETTE_INIT( suprmous );
VIDEO_START( thepit );
-SCREEN_UPDATE( thepit );
+SCREEN_UPDATE_IND16( thepit );
WRITE8_HANDLER( thepit_videoram_w );
WRITE8_HANDLER( thepit_colorram_w );
WRITE8_HANDLER( thepit_flip_screen_x_w );
diff --git a/src/mame/includes/thief.h b/src/mame/includes/thief.h
index a5707ee4d80..042c434cca5 100644
--- a/src/mame/includes/thief.h
+++ b/src/mame/includes/thief.h
@@ -35,4 +35,4 @@ READ8_HANDLER( thief_coprocessor_r );
WRITE8_HANDLER( thief_coprocessor_w );
VIDEO_START( thief );
-SCREEN_UPDATE( thief );
+SCREEN_UPDATE_IND16( thief );
diff --git a/src/mame/includes/thoop2.h b/src/mame/includes/thoop2.h
index fbb8f0366a7..d061e6dd2c3 100644
--- a/src/mame/includes/thoop2.h
+++ b/src/mame/includes/thoop2.h
@@ -17,4 +17,4 @@ public:
WRITE16_HANDLER( thoop2_vram_w );
VIDEO_START( thoop2 );
-SCREEN_UPDATE( thoop2 );
+SCREEN_UPDATE_IND16( thoop2 );
diff --git a/src/mame/includes/thunderj.h b/src/mame/includes/thunderj.h
index 9c7f85f0dec..e6d036cd881 100644
--- a/src/mame/includes/thunderj.h
+++ b/src/mame/includes/thunderj.h
@@ -19,4 +19,4 @@ public:
/*----------- defined in video/thunderj.c -----------*/
VIDEO_START( thunderj );
-SCREEN_UPDATE( thunderj );
+SCREEN_UPDATE_IND16( thunderj );
diff --git a/src/mame/includes/thunderx.h b/src/mame/includes/thunderx.h
index f9fc42122c3..c360ef88795 100644
--- a/src/mame/includes/thunderx.h
+++ b/src/mame/includes/thunderx.h
@@ -41,4 +41,4 @@ extern void thunderx_tile_callback(running_machine &machine, int layer,int bank,
extern void thunderx_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask,int *shadow);
VIDEO_START( scontra );
-SCREEN_UPDATE( scontra );
+SCREEN_UPDATE_IND16( scontra );
diff --git a/src/mame/includes/tiamc1.h b/src/mame/includes/tiamc1.h
index 00ff3f41f25..1aaebb2af6f 100644
--- a/src/mame/includes/tiamc1.h
+++ b/src/mame/includes/tiamc1.h
@@ -34,7 +34,7 @@ WRITE8_DEVICE_HANDLER( tiamc1_timer1_gate_w );
PALETTE_INIT( tiamc1 );
VIDEO_START( tiamc1 );
-SCREEN_UPDATE( tiamc1 );
+SCREEN_UPDATE_IND16( tiamc1 );
WRITE8_HANDLER( tiamc1_palette_w );
WRITE8_HANDLER( tiamc1_videoram_w );
diff --git a/src/mame/includes/tigeroad.h b/src/mame/includes/tigeroad.h
index e0012585c53..1646c9aedbb 100644
--- a/src/mame/includes/tigeroad.h
+++ b/src/mame/includes/tigeroad.h
@@ -18,5 +18,5 @@ WRITE16_HANDLER( tigeroad_videoram_w );
WRITE16_HANDLER( tigeroad_videoctrl_w );
WRITE16_HANDLER( tigeroad_scroll_w );
VIDEO_START( tigeroad );
-SCREEN_UPDATE( tigeroad );
+SCREEN_UPDATE_IND16( tigeroad );
SCREEN_EOF( tigeroad );
diff --git a/src/mame/includes/timelimt.h b/src/mame/includes/timelimt.h
index 809bd506074..01f8f44974d 100644
--- a/src/mame/includes/timelimt.h
+++ b/src/mame/includes/timelimt.h
@@ -21,7 +21,7 @@ public:
VIDEO_START( timelimt );
PALETTE_INIT( timelimt );
-SCREEN_UPDATE( timelimt );
+SCREEN_UPDATE_IND16( timelimt );
WRITE8_HANDLER( timelimt_videoram_w );
WRITE8_HANDLER( timelimt_bg_videoram_w );
diff --git a/src/mame/includes/timeplt.h b/src/mame/includes/timeplt.h
index e6dd1621f32..8f253bf8e08 100644
--- a/src/mame/includes/timeplt.h
+++ b/src/mame/includes/timeplt.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( timeplt_flipscreen_w );
PALETTE_INIT( timeplt );
VIDEO_START( timeplt );
VIDEO_START( chkun );
-SCREEN_UPDATE( timeplt );
+SCREEN_UPDATE_IND16( timeplt );
diff --git a/src/mame/includes/tmnt.h b/src/mame/includes/tmnt.h
index 2dee8d888c8..325f60a93f3 100644
--- a/src/mame/includes/tmnt.h
+++ b/src/mame/includes/tmnt.h
@@ -100,12 +100,12 @@ VIDEO_START( blswhstl );
VIDEO_START( glfgreat );
VIDEO_START( prmrsocr );
-SCREEN_UPDATE( mia );
-SCREEN_UPDATE( tmnt );
-SCREEN_UPDATE( punkshot );
-SCREEN_UPDATE( lgtnfght );
-SCREEN_UPDATE( glfgreat );
-SCREEN_UPDATE( tmnt2 );
-SCREEN_UPDATE( thndrx2 );
+SCREEN_UPDATE_IND16( mia );
+SCREEN_UPDATE_IND16( tmnt );
+SCREEN_UPDATE_IND16( punkshot );
+SCREEN_UPDATE_IND16( lgtnfght );
+SCREEN_UPDATE_IND16( glfgreat );
+SCREEN_UPDATE_IND16( tmnt2 );
+SCREEN_UPDATE_IND16( thndrx2 );
SCREEN_EOF( blswhstl );
diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h
index c1ceee1261a..b8b90a80a04 100644
--- a/src/mame/includes/tnzs.h
+++ b/src/mame/includes/tnzs.h
@@ -87,5 +87,5 @@ MACHINE_START( jpopnics );
/*----------- defined in video/tnzs.c -----------*/
PALETTE_INIT( arknoid2 );
-SCREEN_UPDATE( tnzs );
+SCREEN_UPDATE_IND16( tnzs );
SCREEN_EOF( tnzs );
diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h
index dcb0c57c5be..e85b41107ea 100644
--- a/src/mame/includes/toaplan1.h
+++ b/src/mame/includes/toaplan1.h
@@ -152,5 +152,5 @@ SCREEN_EOF( toaplan1 );
SCREEN_EOF( samesame );
VIDEO_START( rallybik );
VIDEO_START( toaplan1 );
-SCREEN_UPDATE( rallybik );
-SCREEN_UPDATE( toaplan1 );
+SCREEN_UPDATE_IND16( rallybik );
+SCREEN_UPDATE_IND16( toaplan1 );
diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h
index b29ec8eba2b..c7cac1b646e 100644
--- a/src/mame/includes/toaplan2.h
+++ b/src/mame/includes/toaplan2.h
@@ -48,8 +48,8 @@ public:
size_t m_paletteram_size;
size_t m_mainram_overlap_size;
- bitmap_t* m_custom_priority_bitmap;
- bitmap_t* m_secondary_render_bitmap;
+ bitmap_ind8 m_custom_priority_bitmap;
+ bitmap_ind16 m_secondary_render_bitmap;
tilemap_t *m_tx_tilemap; /* Tilemap for extra-text-layer */
UINT8 m_tx_flip;
@@ -63,11 +63,11 @@ VIDEO_START( fixeightbl );
VIDEO_START( bgaregga );
VIDEO_START( batrider );
-SCREEN_UPDATE( toaplan2 );
-SCREEN_UPDATE( truxton2 );
-SCREEN_UPDATE( batrider );
-SCREEN_UPDATE( dogyuun );
-SCREEN_UPDATE( batsugun );
+SCREEN_UPDATE_IND16( toaplan2 );
+SCREEN_UPDATE_IND16( truxton2 );
+SCREEN_UPDATE_IND16( batrider );
+SCREEN_UPDATE_IND16( dogyuun );
+SCREEN_UPDATE_IND16( batsugun );
SCREEN_EOF( toaplan2 );
diff --git a/src/mame/includes/toki.h b/src/mame/includes/toki.h
index 7db761254c8..51ba65c9c4b 100644
--- a/src/mame/includes/toki.h
+++ b/src/mame/includes/toki.h
@@ -21,8 +21,8 @@ public:
VIDEO_START( toki );
SCREEN_EOF( toki );
SCREEN_EOF( tokib );
-SCREEN_UPDATE( toki );
-SCREEN_UPDATE( tokib );
+SCREEN_UPDATE_IND16( toki );
+SCREEN_UPDATE_IND16( tokib );
WRITE16_HANDLER( toki_background1_videoram16_w );
WRITE16_HANDLER( toki_background2_videoram16_w );
WRITE16_HANDLER( toki_control_w );
diff --git a/src/mame/includes/toobin.h b/src/mame/includes/toobin.h
index cd26ea35394..daa17cde396 100644
--- a/src/mame/includes/toobin.h
+++ b/src/mame/includes/toobin.h
@@ -15,7 +15,7 @@ public:
UINT16 * m_interrupt_scan;
double m_brightness;
- bitmap_t * m_pfbitmap;
+ bitmap_ind16 m_pfbitmap;
};
@@ -28,4 +28,4 @@ WRITE16_HANDLER( toobin_yscroll_w );
WRITE16_HANDLER( toobin_slip_w );
VIDEO_START( toobin );
-SCREEN_UPDATE( toobin );
+SCREEN_UPDATE_RGB32( toobin );
diff --git a/src/mame/includes/topspeed.h b/src/mame/includes/topspeed.h
index 544d78d0044..eeef4ea3b9f 100644
--- a/src/mame/includes/topspeed.h
+++ b/src/mame/includes/topspeed.h
@@ -40,4 +40,4 @@ public:
/*----------- defined in video/topspeed.c -----------*/
-SCREEN_UPDATE( topspeed );
+SCREEN_UPDATE_IND16( topspeed );
diff --git a/src/mame/includes/toypop.h b/src/mame/includes/toypop.h
index 7ae228ca229..9f84aae86b2 100644
--- a/src/mame/includes/toypop.h
+++ b/src/mame/includes/toypop.h
@@ -26,5 +26,5 @@ WRITE16_HANDLER( toypop_merged_background_w );
WRITE8_HANDLER( toypop_palettebank_w );
WRITE16_HANDLER( toypop_flipscreen_w );
VIDEO_START( toypop );
-SCREEN_UPDATE( toypop );
+SCREEN_UPDATE_IND16( toypop );
PALETTE_INIT( toypop );
diff --git a/src/mame/includes/tp84.h b/src/mame/includes/tp84.h
index 1720eb6b516..9a6a5ff6c09 100644
--- a/src/mame/includes/tp84.h
+++ b/src/mame/includes/tp84.h
@@ -29,4 +29,4 @@ READ8_HANDLER( tp84_scanline_r );
PALETTE_INIT( tp84 );
VIDEO_START( tp84 );
-SCREEN_UPDATE( tp84 );
+SCREEN_UPDATE_IND16( tp84 );
diff --git a/src/mame/includes/trackfld.h b/src/mame/includes/trackfld.h
index e68ae951d2d..735327591d7 100644
--- a/src/mame/includes/trackfld.h
+++ b/src/mame/includes/trackfld.h
@@ -42,6 +42,6 @@ WRITE8_HANDLER( atlantol_gfxbank_w );
PALETTE_INIT( trackfld );
VIDEO_START( trackfld );
-SCREEN_UPDATE( trackfld );
+SCREEN_UPDATE_IND16( trackfld );
VIDEO_START( atlantol );
diff --git a/src/mame/includes/travrusa.h b/src/mame/includes/travrusa.h
index cd358f825d4..58ad881bbaa 100644
--- a/src/mame/includes/travrusa.h
+++ b/src/mame/includes/travrusa.h
@@ -24,4 +24,4 @@ WRITE8_HANDLER( travrusa_flipscreen_w );
PALETTE_INIT( travrusa );
PALETTE_INIT( shtrider );
VIDEO_START( travrusa );
-SCREEN_UPDATE( travrusa );
+SCREEN_UPDATE_IND16( travrusa );
diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h
index 7e2ec9eb8cf..a7a6da39d3b 100644
--- a/src/mame/includes/triplhnt.h
+++ b/src/mame/includes/triplhnt.h
@@ -34,7 +34,7 @@ public:
UINT8* m_orga_ram;
int m_sprite_zoom;
int m_sprite_bank;
- bitmap_t* m_helper;
+ bitmap_ind16 m_helper;
tilemap_t* m_bg_tilemap;
};
@@ -53,6 +53,6 @@ extern const samples_interface triplhnt_samples_interface;
/*----------- defined in video/triplhnt.c -----------*/
VIDEO_START( triplhnt );
-SCREEN_UPDATE( triplhnt );
+SCREEN_UPDATE_IND16( triplhnt );
diff --git a/src/mame/includes/truco.h b/src/mame/includes/truco.h
index 245ceb979cc..5095b1b36aa 100644
--- a/src/mame/includes/truco.h
+++ b/src/mame/includes/truco.h
@@ -12,5 +12,5 @@ public:
/*----------- defined in video/truco.c -----------*/
-SCREEN_UPDATE( truco );
+SCREEN_UPDATE_IND16( truco );
PALETTE_INIT( truco );
diff --git a/src/mame/includes/trucocl.h b/src/mame/includes/trucocl.h
index 331eb9acedf..22b0087ac27 100644
--- a/src/mame/includes/trucocl.h
+++ b/src/mame/includes/trucocl.h
@@ -20,4 +20,4 @@ WRITE8_HANDLER( trucocl_videoram_w );
WRITE8_HANDLER( trucocl_colorram_w );
PALETTE_INIT( trucocl );
VIDEO_START( trucocl );
-SCREEN_UPDATE( trucocl );
+SCREEN_UPDATE_IND16( trucocl );
diff --git a/src/mame/includes/tryout.h b/src/mame/includes/tryout.h
index 9454724039b..fd448936e3b 100644
--- a/src/mame/includes/tryout.h
+++ b/src/mame/includes/tryout.h
@@ -26,4 +26,4 @@ WRITE8_HANDLER( tryout_flipscreen_w );
PALETTE_INIT( tryout );
VIDEO_START( tryout );
-SCREEN_UPDATE( tryout );
+SCREEN_UPDATE_IND16( tryout );
diff --git a/src/mame/includes/tsamurai.h b/src/mame/includes/tsamurai.h
index 00e4c58bd79..fbf17717ef3 100644
--- a/src/mame/includes/tsamurai.h
+++ b/src/mame/includes/tsamurai.h
@@ -39,7 +39,7 @@ WRITE8_HANDLER( tsamurai_fg_videoram_w );
WRITE8_HANDLER( tsamurai_fg_colorram_w );
VIDEO_START( tsamurai );
-SCREEN_UPDATE( tsamurai );
+SCREEN_UPDATE_IND16( tsamurai );
VIDEO_START( vsgongf );
-SCREEN_UPDATE( vsgongf );
+SCREEN_UPDATE_IND16( vsgongf );
diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h
index b18951259ea..a5d3c8ef03b 100644
--- a/src/mame/includes/tubep.h
+++ b/src/mame/includes/tubep.h
@@ -43,9 +43,9 @@ public:
void tubep_vblank_end(running_machine &machine);
PALETTE_INIT( tubep );
-SCREEN_UPDATE( tubep );
+SCREEN_UPDATE_IND16( tubep );
PALETTE_INIT( rjammer );
-SCREEN_UPDATE( rjammer );
+SCREEN_UPDATE_IND16( rjammer );
VIDEO_START( tubep );
VIDEO_RESET( tubep );
diff --git a/src/mame/includes/tumbleb.h b/src/mame/includes/tumbleb.h
index 8dac704db44..2eb103941cd 100644
--- a/src/mame/includes/tumbleb.h
+++ b/src/mame/includes/tumbleb.h
@@ -60,14 +60,14 @@ VIDEO_START( sdfight );
VIDEO_START( suprtrio );
VIDEO_START( pangpang );
-SCREEN_UPDATE( tumblepb );
-SCREEN_UPDATE( jumpkids );
-SCREEN_UPDATE( fncywld );
-SCREEN_UPDATE( jumppop );
-SCREEN_UPDATE( semicom );
-SCREEN_UPDATE( semicom_altoffsets );
-SCREEN_UPDATE( bcstory );
-SCREEN_UPDATE(semibase );
-SCREEN_UPDATE( suprtrio );
-SCREEN_UPDATE( pangpang );
-SCREEN_UPDATE( sdfight );
+SCREEN_UPDATE_IND16( tumblepb );
+SCREEN_UPDATE_IND16( jumpkids );
+SCREEN_UPDATE_IND16( fncywld );
+SCREEN_UPDATE_IND16( jumppop );
+SCREEN_UPDATE_IND16( semicom );
+SCREEN_UPDATE_IND16( semicom_altoffsets );
+SCREEN_UPDATE_IND16( bcstory );
+SCREEN_UPDATE_IND16(semibase );
+SCREEN_UPDATE_IND16( suprtrio );
+SCREEN_UPDATE_IND16( pangpang );
+SCREEN_UPDATE_IND16( sdfight );
diff --git a/src/mame/includes/tumblep.h b/src/mame/includes/tumblep.h
index 96816be4d77..7b4d960d4a6 100644
--- a/src/mame/includes/tumblep.h
+++ b/src/mame/includes/tumblep.h
@@ -27,4 +27,4 @@ public:
/*----------- defined in video/tumblep.c -----------*/
-SCREEN_UPDATE( tumblep );
+SCREEN_UPDATE_IND16( tumblep );
diff --git a/src/mame/includes/tunhunt.h b/src/mame/includes/tunhunt.h
index d110aee9551..631a3c95ea7 100644
--- a/src/mame/includes/tunhunt.h
+++ b/src/mame/includes/tunhunt.h
@@ -9,7 +9,7 @@ public:
UINT8 *m_spriteram;
UINT8 *m_videoram;
tilemap_t *m_fg_tilemap;
- bitmap_t m_tmpbitmap;
+ bitmap_ind16 m_tmpbitmap;
};
@@ -19,4 +19,4 @@ WRITE8_HANDLER( tunhunt_videoram_w );
PALETTE_INIT( tunhunt );
VIDEO_START( tunhunt );
-SCREEN_UPDATE( tunhunt );
+SCREEN_UPDATE_IND16( tunhunt );
diff --git a/src/mame/includes/turbo.h b/src/mame/includes/turbo.h
index cb2e1e87918..fd80a85c9bc 100644
--- a/src/mame/includes/turbo.h
+++ b/src/mame/includes/turbo.h
@@ -104,14 +104,14 @@ WRITE8_DEVICE_HANDLER( buckrog_sound_b_w );
PALETTE_INIT( turbo );
VIDEO_START( turbo );
-SCREEN_UPDATE( turbo );
+SCREEN_UPDATE_IND16( turbo );
PALETTE_INIT( subroc3d );
-SCREEN_UPDATE( subroc3d );
+SCREEN_UPDATE_IND16( subroc3d );
PALETTE_INIT( buckrog );
VIDEO_START( buckrog );
-SCREEN_UPDATE( buckrog );
+SCREEN_UPDATE_IND16( buckrog );
WRITE8_HANDLER( turbo_videoram_w );
WRITE8_HANDLER( buckrog_bitmap_w );
diff --git a/src/mame/includes/tutankhm.h b/src/mame/includes/tutankhm.h
index 899d5039790..54edfc762bf 100644
--- a/src/mame/includes/tutankhm.h
+++ b/src/mame/includes/tutankhm.h
@@ -28,4 +28,4 @@ public:
WRITE8_HANDLER( tutankhm_flip_screen_x_w );
WRITE8_HANDLER( tutankhm_flip_screen_y_w );
-SCREEN_UPDATE( tutankhm );
+SCREEN_UPDATE_RGB32( tutankhm );
diff --git a/src/mame/includes/twin16.h b/src/mame/includes/twin16.h
index 390a2275d4f..36397630b3f 100644
--- a/src/mame/includes/twin16.h
+++ b/src/mame/includes/twin16.h
@@ -41,7 +41,7 @@ WRITE16_HANDLER( twin16_video_register_w );
READ16_HANDLER( twin16_sprite_status_r );
VIDEO_START( twin16 );
-SCREEN_UPDATE( twin16 );
+SCREEN_UPDATE_IND16( twin16 );
SCREEN_EOF( twin16 );
void twin16_spriteram_process( running_machine &machine );
diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h
index 65751fa491f..59987260c26 100644
--- a/src/mame/includes/twincobr.h
+++ b/src/mame/includes/twincobr.h
@@ -121,5 +121,5 @@ WRITE8_HANDLER( wardner_sprite_w );
VIDEO_START( toaplan0 );
-SCREEN_UPDATE( toaplan0 );
+SCREEN_UPDATE_IND16( toaplan0 );
SCREEN_EOF( toaplan0 );
diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h
index 85e60718517..760a320db8d 100644
--- a/src/mame/includes/tx1.h
+++ b/src/mame/includes/tx1.h
@@ -119,7 +119,7 @@ public:
UINT8 *m_chr_bmp;
UINT8 *m_obj_bmp;
UINT8 *m_rod_bmp;
- bitmap_t *m_bitmap;
+ bitmap_ind16 *m_bitmap;
};
@@ -161,9 +161,9 @@ WRITE16_HANDLER( tx1_crtc_w );
PALETTE_INIT( tx1 );
VIDEO_START( tx1 );
-SCREEN_UPDATE( tx1_left );
-SCREEN_UPDATE( tx1_middle );
-SCREEN_UPDATE( tx1_right );
+SCREEN_UPDATE_IND16( tx1_left );
+SCREEN_UPDATE_IND16( tx1_middle );
+SCREEN_UPDATE_IND16( tx1_right );
SCREEN_EOF( tx1 );
WRITE16_HANDLER( tx1_slincs_w );
WRITE16_HANDLER( tx1_slock_w );
@@ -173,13 +173,13 @@ WRITE16_HANDLER( tx1_flgcs_w );
PALETTE_INIT( buggyboy );
VIDEO_START( buggyboy );
-SCREEN_UPDATE( buggyboy_left );
-SCREEN_UPDATE( buggyboy_middle );
-SCREEN_UPDATE( buggyboy_right );
+SCREEN_UPDATE_IND16( buggyboy_left );
+SCREEN_UPDATE_IND16( buggyboy_middle );
+SCREEN_UPDATE_IND16( buggyboy_right );
SCREEN_EOF( buggyboy );
VIDEO_START( buggybjr );
-SCREEN_UPDATE( buggybjr );
+SCREEN_UPDATE_IND16( buggybjr );
WRITE16_HANDLER( buggyboy_gas_w );
WRITE16_HANDLER( buggyboy_sky_w );
WRITE16_HANDLER( buggyboy_scolst_w );
diff --git a/src/mame/includes/ultraman.h b/src/mame/includes/ultraman.h
index 738516a5b22..618ef2d6b44 100644
--- a/src/mame/includes/ultraman.h
+++ b/src/mame/includes/ultraman.h
@@ -41,4 +41,4 @@ extern void ultraman_zoom_callback_2(running_machine &machine, int *code,int *co
WRITE16_HANDLER( ultraman_gfxctrl_w );
VIDEO_START( ultraman );
-SCREEN_UPDATE( ultraman );
+SCREEN_UPDATE_IND16( ultraman );
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
index 84c4165db3b..4cb440e5060 100644
--- a/src/mame/includes/ultratnk.h
+++ b/src/mame/includes/ultratnk.h
@@ -15,7 +15,7 @@ public:
int m_da_latch;
int m_collision[4];
tilemap_t* m_playfield;
- bitmap_t* m_helper;
+ bitmap_ind16 m_helper;
};
@@ -23,7 +23,7 @@ public:
PALETTE_INIT( ultratnk );
VIDEO_START( ultratnk );
-SCREEN_UPDATE( ultratnk );
+SCREEN_UPDATE_IND16( ultratnk );
SCREEN_EOF( ultratnk );
WRITE8_HANDLER( ultratnk_video_ram_w );
diff --git a/src/mame/includes/undrfire.h b/src/mame/includes/undrfire.h
index ec57ae3b225..14c96fa0619 100644
--- a/src/mame/includes/undrfire.h
+++ b/src/mame/includes/undrfire.h
@@ -30,5 +30,5 @@ public:
/*----------- defined in video/undrfire.c -----------*/
VIDEO_START( undrfire );
-SCREEN_UPDATE( undrfire );
-SCREEN_UPDATE( cbombers );
+SCREEN_UPDATE_IND16( undrfire );
+SCREEN_UPDATE_IND16( cbombers );
diff --git a/src/mame/includes/unico.h b/src/mame/includes/unico.h
index 278bcb66f27..f0195956bbb 100644
--- a/src/mame/includes/unico.h
+++ b/src/mame/includes/unico.h
@@ -25,8 +25,8 @@ WRITE32_HANDLER( unico_vram32_w );
WRITE32_HANDLER( unico_palette32_w );
VIDEO_START( unico );
-SCREEN_UPDATE( unico );
+SCREEN_UPDATE_IND16( unico );
VIDEO_START( zeropnt2 );
-SCREEN_UPDATE( zeropnt2 );
+SCREEN_UPDATE_IND16( zeropnt2 );
diff --git a/src/mame/includes/usgames.h b/src/mame/includes/usgames.h
index c59fe1f5f64..6a69164b89f 100644
--- a/src/mame/includes/usgames.h
+++ b/src/mame/includes/usgames.h
@@ -16,4 +16,4 @@ WRITE8_HANDLER( usgames_videoram_w );
WRITE8_HANDLER( usgames_charram_w );
VIDEO_START( usgames );
PALETTE_INIT( usgames );
-SCREEN_UPDATE( usgames );
+SCREEN_UPDATE_IND16( usgames );
diff --git a/src/mame/includes/vaportra.h b/src/mame/includes/vaportra.h
index 7a16951d317..3b0dd67bae4 100644
--- a/src/mame/includes/vaportra.h
+++ b/src/mame/includes/vaportra.h
@@ -34,4 +34,4 @@ WRITE16_HANDLER( vaportra_priority_w );
WRITE16_HANDLER( vaportra_palette_24bit_rg_w );
WRITE16_HANDLER( vaportra_palette_24bit_b_w );
-SCREEN_UPDATE( vaportra );
+SCREEN_UPDATE_IND16( vaportra );
diff --git a/src/mame/includes/vastar.h b/src/mame/includes/vastar.h
index 92c6634d7d9..3a77e3d6a95 100644
--- a/src/mame/includes/vastar.h
+++ b/src/mame/includes/vastar.h
@@ -34,4 +34,4 @@ READ8_HANDLER( vastar_bg1videoram_r );
READ8_HANDLER( vastar_bg2videoram_r );
VIDEO_START( vastar );
-SCREEN_UPDATE( vastar );
+SCREEN_UPDATE_IND16( vastar );
diff --git a/src/mame/includes/vball.h b/src/mame/includes/vball.h
index 67e871cd72f..7c042329b59 100644
--- a/src/mame/includes/vball.h
+++ b/src/mame/includes/vball.h
@@ -23,7 +23,7 @@ public:
/*----------- defined in video/vball.c -----------*/
VIDEO_START( vb );
-SCREEN_UPDATE( vb );
+SCREEN_UPDATE_IND16( vb );
void vb_bgprombank_w(running_machine &machine, int bank);
void vb_spprombank_w(running_machine &machine, int bank);
WRITE8_HANDLER( vb_attrib_w );
diff --git a/src/mame/includes/vectrex.h b/src/mame/includes/vectrex.h
index c5fdbeaa736..e40564276d4 100644
--- a/src/mame/includes/vectrex.h
+++ b/src/mame/includes/vectrex.h
@@ -88,7 +88,7 @@ extern const via6522_interface vectrex_via6522_interface;
extern const via6522_interface spectrum1_via6522_interface;
VIDEO_START( vectrex );
-SCREEN_UPDATE( vectrex );
+SCREEN_UPDATE_RGB32( vectrex );
VIDEO_START( raaspec );
diff --git a/src/mame/includes/vendetta.h b/src/mame/includes/vendetta.h
index 74142920e0e..1fa5db8170a 100644
--- a/src/mame/includes/vendetta.h
+++ b/src/mame/includes/vendetta.h
@@ -39,4 +39,4 @@ extern void vendetta_tile_callback(running_machine &machine, int layer,int bank,
extern void esckids_tile_callback(running_machine &machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
extern void vendetta_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask);
-SCREEN_UPDATE( vendetta );
+SCREEN_UPDATE_IND16( vendetta );
diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h
index 28ea1a64f8d..58fe6824f14 100644
--- a/src/mame/includes/vicdual.h
+++ b/src/mame/includes/vicdual.h
@@ -45,9 +45,9 @@ int vicdual_is_cabinet_color(running_machine &machine);
WRITE8_HANDLER( vicdual_palette_bank_w );
-SCREEN_UPDATE( vicdual_bw );
-SCREEN_UPDATE( vicdual_color );
-SCREEN_UPDATE( vicdual_bw_or_color );
+SCREEN_UPDATE_RGB32( vicdual_bw );
+SCREEN_UPDATE_RGB32( vicdual_color );
+SCREEN_UPDATE_RGB32( vicdual_bw_or_color );
/*----------- defined in audio/vicdual.c -----------*/
diff --git a/src/mame/includes/victory.h b/src/mame/includes/victory.h
index 12645be721c..b4a688233aa 100644
--- a/src/mame/includes/victory.h
+++ b/src/mame/includes/victory.h
@@ -60,7 +60,7 @@ public:
/*----------- defined in video/victory.c -----------*/
VIDEO_START( victory );
-SCREEN_UPDATE( victory );
+SCREEN_UPDATE_IND16( victory );
INTERRUPT_GEN( victory_vblank_interrupt );
READ8_HANDLER( victory_video_control_r );
diff --git a/src/mame/includes/videopin.h b/src/mame/includes/videopin.h
index 6e02869b6a7..2b4500de000 100644
--- a/src/mame/includes/videopin.h
+++ b/src/mame/includes/videopin.h
@@ -43,5 +43,5 @@ WRITE8_HANDLER( videopin_video_ram_w );
WRITE8_HANDLER( videopin_ball_w );
VIDEO_START( videopin );
-SCREEN_UPDATE( videopin );
+SCREEN_UPDATE_IND16( videopin );
diff --git a/src/mame/includes/vigilant.h b/src/mame/includes/vigilant.h
index 635b446af1f..79c4af5565a 100644
--- a/src/mame/includes/vigilant.h
+++ b/src/mame/includes/vigilant.h
@@ -12,7 +12,7 @@ public:
int m_rear_color;
int m_rear_disable;
int m_rear_refresh;
- bitmap_t *m_bg_bitmap;
+ bitmap_ind16 *m_bg_bitmap;
UINT8 *m_spriteram;
size_t m_spriteram_size;
};
@@ -26,5 +26,5 @@ WRITE8_HANDLER( vigilant_paletteram_w );
WRITE8_HANDLER( vigilant_horiz_scroll_w );
WRITE8_HANDLER( vigilant_rear_horiz_scroll_w );
WRITE8_HANDLER( vigilant_rear_color_w );
-SCREEN_UPDATE( vigilant );
-SCREEN_UPDATE( kikcubic );
+SCREEN_UPDATE_IND16( vigilant );
+SCREEN_UPDATE_IND16( kikcubic );
diff --git a/src/mame/includes/vindictr.h b/src/mame/includes/vindictr.h
index 41ac951ee27..92cec25af7f 100644
--- a/src/mame/includes/vindictr.h
+++ b/src/mame/includes/vindictr.h
@@ -23,6 +23,6 @@ public:
WRITE16_HANDLER( vindictr_paletteram_w );
VIDEO_START( vindictr );
-SCREEN_UPDATE( vindictr );
+SCREEN_UPDATE_IND16( vindictr );
void vindictr_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/volfied.h b/src/mame/includes/volfied.h
index f2bd70e9bcf..f01370a1c71 100644
--- a/src/mame/includes/volfied.h
+++ b/src/mame/includes/volfied.h
@@ -54,5 +54,5 @@ WRITE16_HANDLER( volfied_video_mask_w );
READ16_HANDLER( volfied_video_ram_r );
READ16_HANDLER( volfied_video_ctrl_r );
-SCREEN_UPDATE( volfied );
+SCREEN_UPDATE_IND16( volfied );
VIDEO_START( volfied );
diff --git a/src/mame/includes/vsnes.h b/src/mame/includes/vsnes.h
index ddec3328f78..a800fbfb1e4 100644
--- a/src/mame/includes/vsnes.h
+++ b/src/mame/includes/vsnes.h
@@ -42,9 +42,9 @@ public:
VIDEO_START( vsnes );
PALETTE_INIT( vsnes );
-SCREEN_UPDATE( vsnes );
+SCREEN_UPDATE_IND16( vsnes );
VIDEO_START( vsdual );
-SCREEN_UPDATE( vsnes_bottom );
+SCREEN_UPDATE_IND16( vsnes_bottom );
PALETTE_INIT( vsdual );
extern const ppu2c0x_interface vsnes_ppu_interface_1;
diff --git a/src/mame/includes/vulgus.h b/src/mame/includes/vulgus.h
index e23929fe152..d6e9e4006a7 100644
--- a/src/mame/includes/vulgus.h
+++ b/src/mame/includes/vulgus.h
@@ -25,4 +25,4 @@ WRITE8_HANDLER( vulgus_palette_bank_w );
VIDEO_START( vulgus );
PALETTE_INIT( vulgus );
-SCREEN_UPDATE( vulgus );
+SCREEN_UPDATE_IND16( vulgus );
diff --git a/src/mame/includes/warpwarp.h b/src/mame/includes/warpwarp.h
index 3bbd1cf925a..7fc7ccbb1aa 100644
--- a/src/mame/includes/warpwarp.h
+++ b/src/mame/includes/warpwarp.h
@@ -28,7 +28,7 @@ PALETTE_INIT( warpwarp );
VIDEO_START( geebee );
VIDEO_START( navarone );
VIDEO_START( warpwarp );
-SCREEN_UPDATE( geebee );
+SCREEN_UPDATE_IND16( geebee );
WRITE8_HANDLER( warpwarp_videoram_w );
WRITE8_HANDLER( geebee_videoram_w );
diff --git a/src/mame/includes/warriorb.h b/src/mame/includes/warriorb.h
index 5afc2ddbf98..8c47329aa2c 100644
--- a/src/mame/includes/warriorb.h
+++ b/src/mame/includes/warriorb.h
@@ -36,5 +36,5 @@ public:
/*----------- defined in video/warriorb.c -----------*/
VIDEO_START( warriorb );
-SCREEN_UPDATE( warriorb_left );
-SCREEN_UPDATE( warriorb_right );
+SCREEN_UPDATE_IND16( warriorb_left );
+SCREEN_UPDATE_IND16( warriorb_right );
diff --git a/src/mame/includes/wc90.h b/src/mame/includes/wc90.h
index bbfdf3ec4a0..49cccb7bb6d 100644
--- a/src/mame/includes/wc90.h
+++ b/src/mame/includes/wc90.h
@@ -34,4 +34,4 @@ VIDEO_START( wc90t );
WRITE8_HANDLER( wc90_fgvideoram_w );
WRITE8_HANDLER( wc90_bgvideoram_w );
WRITE8_HANDLER( wc90_txvideoram_w );
-SCREEN_UPDATE( wc90 );
+SCREEN_UPDATE_IND16( wc90 );
diff --git a/src/mame/includes/wc90b.h b/src/mame/includes/wc90b.h
index b73a77ab5e5..07a08c69409 100644
--- a/src/mame/includes/wc90b.h
+++ b/src/mame/includes/wc90b.h
@@ -25,7 +25,7 @@ public:
/*----------- defined in video/wc90b.c -----------*/
VIDEO_START( wc90b );
-SCREEN_UPDATE( wc90b );
+SCREEN_UPDATE_IND16( wc90b );
WRITE8_HANDLER( wc90b_bgvideoram_w );
WRITE8_HANDLER( wc90b_fgvideoram_w );
diff --git a/src/mame/includes/wecleman.h b/src/mame/includes/wecleman.h
index a43d8627bc1..8da497f83ac 100644
--- a/src/mame/includes/wecleman.h
+++ b/src/mame/includes/wecleman.h
@@ -47,9 +47,9 @@ WRITE16_HANDLER( wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w );
WRITE16_HANDLER( wecleman_videostatus_w );
WRITE16_HANDLER( wecleman_pageram_w );
WRITE16_HANDLER( wecleman_txtram_w );
-SCREEN_UPDATE( wecleman );
+SCREEN_UPDATE_RGB32( wecleman );
VIDEO_START( wecleman );
-SCREEN_UPDATE( hotchase );
+SCREEN_UPDATE_IND16( hotchase );
VIDEO_START( hotchase );
void hotchase_zoom_callback_0(running_machine &machine, int *code,int *color,int *flags);
diff --git a/src/mame/includes/welltris.h b/src/mame/includes/welltris.h
index acd59ca9571..31863f354af 100644
--- a/src/mame/includes/welltris.h
+++ b/src/mame/includes/welltris.h
@@ -30,4 +30,4 @@ WRITE16_HANDLER( welltris_charvideoram_w );
WRITE16_HANDLER( welltris_scrollreg_w );
VIDEO_START( welltris );
-SCREEN_UPDATE( welltris );
+SCREEN_UPDATE_IND16( welltris );
diff --git a/src/mame/includes/wgp.h b/src/mame/includes/wgp.h
index 9056bb50fa1..b5c8f0b6bcc 100644
--- a/src/mame/includes/wgp.h
+++ b/src/mame/includes/wgp.h
@@ -56,4 +56,4 @@ WRITE16_HANDLER( wgp_piv_ctrl_word_w );
VIDEO_START( wgp );
VIDEO_START( wgp2 );
-SCREEN_UPDATE( wgp );
+SCREEN_UPDATE_IND16( wgp );
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index 5caabc3ed43..3d26a5fd705 100644
--- a/src/mame/includes/williams.h
+++ b/src/mame/includes/williams.h
@@ -138,9 +138,9 @@ VIDEO_START( williams );
VIDEO_START( blaster );
VIDEO_START( williams2 );
-SCREEN_UPDATE( williams );
-SCREEN_UPDATE( blaster );
-SCREEN_UPDATE( williams2 );
+SCREEN_UPDATE_RGB32( williams );
+SCREEN_UPDATE_RGB32( blaster );
+SCREEN_UPDATE_RGB32( williams2 );
WRITE8_HANDLER( williams2_tileram_w );
diff --git a/src/mame/includes/wiping.h b/src/mame/includes/wiping.h
index f79ed9ce697..c5402aeff74 100644
--- a/src/mame/includes/wiping.h
+++ b/src/mame/includes/wiping.h
@@ -20,5 +20,5 @@ public:
WRITE8_HANDLER( wiping_flipscreen_w );
PALETTE_INIT( wiping );
-SCREEN_UPDATE( wiping );
+SCREEN_UPDATE_IND16( wiping );
diff --git a/src/mame/includes/wiz.h b/src/mame/includes/wiz.h
index c367b956fec..bebaf004d23 100644
--- a/src/mame/includes/wiz.h
+++ b/src/mame/includes/wiz.h
@@ -36,6 +36,6 @@ WRITE8_HANDLER( wiz_flipy_w );
VIDEO_START( wiz );
PALETTE_INIT( wiz );
-SCREEN_UPDATE( wiz );
-SCREEN_UPDATE( stinger );
-SCREEN_UPDATE( kungfut );
+SCREEN_UPDATE_IND16( wiz );
+SCREEN_UPDATE_IND16( stinger );
+SCREEN_UPDATE_IND16( kungfut );
diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h
index 6d3a9a5d824..b537de19e89 100644
--- a/src/mame/includes/wolfpack.h
+++ b/src/mame/includes/wolfpack.h
@@ -20,14 +20,14 @@ public:
UINT8 m_torpedo_h;
UINT8 m_torpedo_v;
UINT8* m_LFSR;
- bitmap_t* m_helper;
+ bitmap_ind16 m_helper;
};
/*----------- defined in video/wolfpack.c -----------*/
PALETTE_INIT( wolfpack );
-SCREEN_UPDATE( wolfpack );
+SCREEN_UPDATE_IND16( wolfpack );
VIDEO_START( wolfpack );
SCREEN_EOF( wolfpack );
diff --git a/src/mame/includes/wrally.h b/src/mame/includes/wrally.h
index dc2ded6157e..42ecb8a95cd 100644
--- a/src/mame/includes/wrally.h
+++ b/src/mame/includes/wrally.h
@@ -23,5 +23,5 @@ WRITE16_HANDLER( wrally_coin_lockout_w );
/*----------- defined in video/wrally.c -----------*/
VIDEO_START( wrally );
-SCREEN_UPDATE( wrally );
+SCREEN_UPDATE_IND16( wrally );
diff --git a/src/mame/includes/wwfsstar.h b/src/mame/includes/wwfsstar.h
index 8d8e943b00a..d33f3fbdb1a 100644
--- a/src/mame/includes/wwfsstar.h
+++ b/src/mame/includes/wwfsstar.h
@@ -18,6 +18,6 @@ public:
/*----------- defined in video/wwfsstar.c -----------*/
VIDEO_START( wwfsstar );
-SCREEN_UPDATE( wwfsstar );
+SCREEN_UPDATE_IND16( wwfsstar );
WRITE16_HANDLER( wwfsstar_fg0_videoram_w );
WRITE16_HANDLER( wwfsstar_bg0_videoram_w );
diff --git a/src/mame/includes/wwfwfest.h b/src/mame/includes/wwfwfest.h
index 8c9b040e4dc..94094889be8 100644
--- a/src/mame/includes/wwfwfest.h
+++ b/src/mame/includes/wwfwfest.h
@@ -25,7 +25,7 @@ public:
VIDEO_START( wwfwfest );
VIDEO_START( wwfwfstb );
-SCREEN_UPDATE( wwfwfest );
+SCREEN_UPDATE_IND16( wwfwfest );
WRITE16_HANDLER( wwfwfest_fg0_videoram_w );
WRITE16_HANDLER( wwfwfest_bg0_videoram_w );
WRITE16_HANDLER( wwfwfest_bg1_videoram_w );
diff --git a/src/mame/includes/xain.h b/src/mame/includes/xain.h
index 4eb7a425651..92ed159ee32 100644
--- a/src/mame/includes/xain.h
+++ b/src/mame/includes/xain.h
@@ -36,7 +36,7 @@ public:
/*----------- defined in video/xain.c -----------*/
-SCREEN_UPDATE( xain );
+SCREEN_UPDATE_IND16( xain );
VIDEO_START( xain );
WRITE8_HANDLER( xain_scrollxP0_w );
WRITE8_HANDLER( xain_scrollyP0_w );
diff --git a/src/mame/includes/xexex.h b/src/mame/includes/xexex.h
index debb0b7021e..26b89df052e 100644
--- a/src/mame/includes/xexex.h
+++ b/src/mame/includes/xexex.h
@@ -55,4 +55,4 @@ extern void xexex_sprite_callback(running_machine &machine, int *code, int *colo
extern void xexex_tile_callback(running_machine &machine, int layer, int *code, int *color, int *flags);
VIDEO_START( xexex );
-SCREEN_UPDATE( xexex );
+SCREEN_UPDATE_RGB32( xexex );
diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h
index 9da4132dae1..2c451780056 100644
--- a/src/mame/includes/xmen.h
+++ b/src/mame/includes/xmen.h
@@ -14,8 +14,8 @@ public:
int m_layerpri[3];
/* for xmen6p */
- bitmap_t *m_screen_right;
- bitmap_t *m_screen_left;
+ bitmap_ind16 *m_screen_right;
+ bitmap_ind16 *m_screen_left;
UINT16 * m_xmen6p_spriteramleft;
UINT16 * m_xmen6p_spriteramright;
UINT16 * m_xmen6p_tilemapleft;
@@ -43,7 +43,7 @@ void xmen_tile_callback(running_machine &machine, int layer,int bank,int *code,i
void xmen_sprite_callback(running_machine &machine, int *code,int *color,int *priority_mask);
VIDEO_START( xmen6p );
-SCREEN_UPDATE( xmen );
-SCREEN_UPDATE( xmen6p_left );
-SCREEN_UPDATE( xmen6p_right );
+SCREEN_UPDATE_IND16( xmen );
+SCREEN_UPDATE_IND16( xmen6p_left );
+SCREEN_UPDATE_IND16( xmen6p_right );
SCREEN_EOF( xmen6p );
diff --git a/src/mame/includes/xorworld.h b/src/mame/includes/xorworld.h
index 0f0d366df5c..245b37bc26b 100644
--- a/src/mame/includes/xorworld.h
+++ b/src/mame/includes/xorworld.h
@@ -16,4 +16,4 @@ WRITE16_HANDLER( xorworld_videoram16_w );
PALETTE_INIT( xorworld );
VIDEO_START( xorworld );
-SCREEN_UPDATE( xorworld );
+SCREEN_UPDATE_IND16( xorworld );
diff --git a/src/mame/includes/xxmissio.h b/src/mame/includes/xxmissio.h
index c4a9cb80f8d..e35f2174e59 100644
--- a/src/mame/includes/xxmissio.h
+++ b/src/mame/includes/xxmissio.h
@@ -19,7 +19,7 @@ public:
/*----------- defined in video/xxmissio.c -----------*/
VIDEO_START( xxmissio );
-SCREEN_UPDATE( xxmissio );
+SCREEN_UPDATE_IND16( xxmissio );
WRITE8_DEVICE_HANDLER( xxmissio_scroll_x_w );
WRITE8_DEVICE_HANDLER( xxmissio_scroll_y_w );
diff --git a/src/mame/includes/xybots.h b/src/mame/includes/xybots.h
index 1775d66dfd5..af86836ec13 100644
--- a/src/mame/includes/xybots.h
+++ b/src/mame/includes/xybots.h
@@ -19,4 +19,4 @@ public:
/*----------- defined in video/xybots.c -----------*/
VIDEO_START( xybots );
-SCREEN_UPDATE( xybots );
+SCREEN_UPDATE_IND16( xybots );
diff --git a/src/mame/includes/xyonix.h b/src/mame/includes/xyonix.h
index 2f95c9470b6..3be11c85fc8 100644
--- a/src/mame/includes/xyonix.h
+++ b/src/mame/includes/xyonix.h
@@ -19,4 +19,4 @@ public:
PALETTE_INIT( xyonix );
WRITE8_HANDLER( xyonix_vidram_w );
VIDEO_START(xyonix);
-SCREEN_UPDATE(xyonix);
+SCREEN_UPDATE_IND16(xyonix);
diff --git a/src/mame/includes/yiear.h b/src/mame/includes/yiear.h
index 3e2cd8a8d85..0e4c1fc60d3 100644
--- a/src/mame/includes/yiear.h
+++ b/src/mame/includes/yiear.h
@@ -25,7 +25,7 @@ WRITE8_HANDLER( yiear_control_w );
PALETTE_INIT( yiear );
VIDEO_START( yiear );
-SCREEN_UPDATE( yiear );
+SCREEN_UPDATE_IND16( yiear );
READ8_DEVICE_HANDLER( yiear_speech_r );
WRITE8_DEVICE_HANDLER( yiear_VLM5030_control_w );
diff --git a/src/mame/includes/yunsun16.h b/src/mame/includes/yunsun16.h
index 758268833a6..b033ba8696d 100644
--- a/src/mame/includes/yunsun16.h
+++ b/src/mame/includes/yunsun16.h
@@ -37,4 +37,4 @@ WRITE16_HANDLER( yunsun16_vram_0_w );
WRITE16_HANDLER( yunsun16_vram_1_w );
VIDEO_START( yunsun16 );
-SCREEN_UPDATE( yunsun16 );
+SCREEN_UPDATE_IND16( yunsun16 );
diff --git a/src/mame/includes/yunsung8.h b/src/mame/includes/yunsung8.h
index 0fdd3a7f04c..fd489763432 100644
--- a/src/mame/includes/yunsung8.h
+++ b/src/mame/includes/yunsung8.h
@@ -38,4 +38,4 @@ WRITE8_HANDLER( yunsung8_videoram_w );
WRITE8_HANDLER( yunsung8_flipscreen_w );
VIDEO_START( yunsung8 );
-SCREEN_UPDATE( yunsung8 );
+SCREEN_UPDATE_IND16( yunsung8 );
diff --git a/src/mame/includes/zac2650.h b/src/mame/includes/zac2650.h
index 82c028684a4..c73d59ac8d5 100644
--- a/src/mame/includes/zac2650.h
+++ b/src/mame/includes/zac2650.h
@@ -6,7 +6,8 @@ public:
UINT8 *m_videoram;
UINT8 *m_s2636_0_ram;
- bitmap_t *m_spritebitmap;
+ bitmap_ind16 m_bitmap;
+ bitmap_ind16 m_spritebitmap;
int m_CollisionBackground;
int m_CollisionSprite;
tilemap_t *m_bg_tilemap;
@@ -21,5 +22,5 @@ WRITE8_HANDLER( zac_s2636_w );
READ8_HANDLER( tinvader_port_0_r );
VIDEO_START( tinvader );
-SCREEN_UPDATE( tinvader );
+SCREEN_UPDATE_IND16( tinvader );
diff --git a/src/mame/includes/zaccaria.h b/src/mame/includes/zaccaria.h
index 1149b4b08b0..c1c91de9da3 100644
--- a/src/mame/includes/zaccaria.h
+++ b/src/mame/includes/zaccaria.h
@@ -27,4 +27,4 @@ WRITE8_HANDLER( zaccaria_videoram_w );
WRITE8_HANDLER( zaccaria_attributes_w );
WRITE8_HANDLER( zaccaria_flip_screen_x_w );
WRITE8_HANDLER( zaccaria_flip_screen_y_w );
-SCREEN_UPDATE( zaccaria );
+SCREEN_UPDATE_IND16( zaccaria );
diff --git a/src/mame/includes/zaxxon.h b/src/mame/includes/zaxxon.h
index e53988d0c6b..70df59e29e5 100644
--- a/src/mame/includes/zaxxon.h
+++ b/src/mame/includes/zaxxon.h
@@ -71,7 +71,7 @@ VIDEO_START( zaxxon );
VIDEO_START( razmataz );
VIDEO_START( congo );
-SCREEN_UPDATE( zaxxon );
-SCREEN_UPDATE( razmataz );
-SCREEN_UPDATE( congo );
-SCREEN_UPDATE( futspy );
+SCREEN_UPDATE_IND16( zaxxon );
+SCREEN_UPDATE_IND16( razmataz );
+SCREEN_UPDATE_IND16( congo );
+SCREEN_UPDATE_IND16( futspy );
diff --git a/src/mame/includes/zerozone.h b/src/mame/includes/zerozone.h
index 47335e4fbf2..fe1ff0fa8ba 100644
--- a/src/mame/includes/zerozone.h
+++ b/src/mame/includes/zerozone.h
@@ -39,6 +39,8 @@ public:
UINT16 m_tilebank;
tilemap_t *m_zz_tilemap;
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// driver_device overrides
@@ -46,5 +48,4 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/includes/zodiack.h b/src/mame/includes/zodiack.h
index 1cf0f26632e..1a8d1c3ec5e 100644
--- a/src/mame/includes/zodiack.h
+++ b/src/mame/includes/zodiack.h
@@ -31,8 +31,8 @@ public:
DECLARE_WRITE8_MEMBER(attributes_w);
DECLARE_WRITE8_MEMBER(flipscreen_w);
- void draw_bullets(bitmap_t &bitmap, const rectangle &cliprect);
- void draw_sprites(bitmap_t &bitmap, const rectangle &cliprect);
+ void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
// devices
required_device<z80_device> m_maincpu;
@@ -61,6 +61,8 @@ public:
// misc
int m_percuss_hardware;
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
protected:
// driver_device overrides
@@ -68,7 +70,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
};
class percuss_state : public zodiack_state
diff --git a/src/mame/machine/3do.c b/src/mame/machine/3do.c
index 1a03abbb76b..ff420bb06ba 100644
--- a/src/mame/machine/3do.c
+++ b/src/mame/machine/3do.c
@@ -985,7 +985,7 @@ VIDEO_START( _3do )
/* This is incorrect! Just testing stuff */
-SCREEN_UPDATE( _3do )
+SCREEN_UPDATE_RGB32( _3do )
{
_3do_state *state = screen.machine().driver_data<_3do_state>();
UINT32 *source_p = state->m_vram + 0x1c0000 / 4;
diff --git a/src/mame/machine/amiga.c b/src/mame/machine/amiga.c
index 3fadb1a8051..d94a9a0c7a5 100644
--- a/src/mame/machine/amiga.c
+++ b/src/mame/machine/amiga.c
@@ -335,11 +335,16 @@ static TIMER_CALLBACK( scanline_callback )
/* render up to this scanline */
if (!machine.primary_screen->update_partial(scanline))
{
- bitmap_t dummy_bitmap;
if (IS_AGA(state->m_intf))
+ {
+ bitmap_rgb32 dummy_bitmap;
amiga_aga_render_scanline(machine, dummy_bitmap, scanline);
+ }
else
+ {
+ bitmap_ind16 dummy_bitmap;
amiga_render_scanline(machine, dummy_bitmap, scanline);
+ }
}
/* force a sound update */
diff --git a/src/mame/machine/decocass.h b/src/mame/machine/decocass.h
index 98a6e03fb5e..420f334c6a7 100644
--- a/src/mame/machine/decocass.h
+++ b/src/mame/machine/decocass.h
@@ -201,6 +201,6 @@ WRITE8_HANDLER( decocass_center_h_shift_space_w );
WRITE8_HANDLER( decocass_center_v_shift_w );
VIDEO_START( decocass );
-SCREEN_UPDATE( decocass );
+SCREEN_UPDATE_IND16( decocass );
void decocass_video_state_save_init(running_machine &machine);
diff --git a/src/mame/machine/konppc.c b/src/mame/machine/konppc.c
index 8b6852f65f3..19b1a1b0c70 100644
--- a/src/mame/machine/konppc.c
+++ b/src/mame/machine/konppc.c
@@ -535,7 +535,7 @@ WRITE32_DEVICE_HANDLER(nwk_voodoo_1_w)
#define LED_ON 0xff00ff00
-void draw_7segment_led(bitmap_t &bitmap, int x, int y, UINT8 value)
+void draw_7segment_led(bitmap_rgb32 &bitmap, int x, int y, UINT8 value)
{
if ((value & 0x7f) == 0x7f)
{
diff --git a/src/mame/machine/konppc.h b/src/mame/machine/konppc.h
index 16651a82532..621253d665c 100644
--- a/src/mame/machine/konppc.h
+++ b/src/mame/machine/konppc.h
@@ -38,6 +38,6 @@ READ32_DEVICE_HANDLER(nwk_voodoo_1_r);
WRITE32_DEVICE_HANDLER(nwk_voodoo_0_w);
WRITE32_DEVICE_HANDLER(nwk_voodoo_1_w);
-void draw_7segment_led(bitmap_t &bitmap, int x, int y, UINT8 value);
+void draw_7segment_led(bitmap_rgb32 &bitmap, int x, int y, UINT8 value);
#endif
diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c
index 7228faf4a0d..8d61c9675eb 100644
--- a/src/mame/machine/megadriv.c
+++ b/src/mame/machine/megadriv.c
@@ -385,7 +385,7 @@ static timer_device* frame_timer;
static timer_device* scanline_timer;
static timer_device* irq6_on_timer;
static timer_device* irq4_on_timer;
-static bitmap_t* render_bitmap;
+static bitmap_ind16* render_bitmap;
//emu_timer* vblankirq_off_timer;
/* Sega CD stuff */
@@ -6457,7 +6457,7 @@ static WRITE16_HANDLER( segacd_stampsize_w )
// the lower 3 bits of segacd_imagebuffer_hdot_size are set
// this really needs to be doing it's own lookups rather than depending on the inefficient MAME cache..
-INLINE UINT8 read_pixel_from_stampmap( running_machine& machine, bitmap_t* srcbitmap, int x, int y)
+INLINE UINT8 read_pixel_from_stampmap( running_machine& machine, bitmap_ind16* srcbitmap, int x, int y)
{
/*
if (!srcbitmap)
@@ -6514,8 +6514,8 @@ WRITE16_HANDLER( segacd_trace_vector_base_address_w )
int line;
- //bitmap_t *srcbitmap = tilemap_get_pixmap(segacd_stampmap[segacd_get_active_stampmap_tilemap()]);
- bitmap_t *srcbitmap = 0;
+ //bitmap_ind16 *srcbitmap = tilemap_get_pixmap(segacd_stampmap[segacd_get_active_stampmap_tilemap()]);
+ bitmap_ind16 *srcbitmap = 0;
UINT32 bufferstart = ((segacd_imagebuffer_start_address&0xfff8)*2)<<3;
for (line=0;line<segacd_imagebuffer_vdot_size;line++)
@@ -7224,7 +7224,7 @@ VIDEO_START(megadriv)
{
int x;
- render_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ render_bitmap = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
megadrive_vdp_vram = auto_alloc_array(machine, UINT16, 0x10000/2);
megadrive_vdp_cram = auto_alloc_array(machine, UINT16, 0x80/2);
@@ -7272,10 +7272,15 @@ VIDEO_START(megadriv)
segac2_sp_pal_lookup[3] = 0x30;
}
-SCREEN_UPDATE(megadriv)
+SCREEN_UPDATE_RGB32(megadriv)
{
/* Copy our screen buffer here */
- copybitmap(bitmap, *render_bitmap, 0, 0, 0, 0, cliprect);
+ for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
+ for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
+ {
+ UINT16 src = render_bitmap->pix(y, x);
+ bitmap.pix32(y, x) = MAKE_RGB(pal5bit(src >> 10), pal5bit(src >> 5), pal5bit(src >> 0));
+ }
// int xxx;
/* reference */
@@ -9555,12 +9560,11 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
MCFG_FRAGMENT_ADD(megadriv_timers)
MCFG_SCREEN_ADD("megadriv", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_REFRESH_RATE(60)
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(megadriv) /* Copies a bitmap */
+ MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
MCFG_SCREEN_EOF(megadriv) /* Used to Sync the timing */
MCFG_NVRAM_HANDLER(megadriv)
@@ -9604,12 +9608,11 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
MCFG_FRAGMENT_ADD(megadriv_timers)
MCFG_SCREEN_ADD("megadriv", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_REFRESH_RATE(50)
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(megadriv) /* Copies a bitmap */
+ MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
MCFG_SCREEN_EOF(megadriv) /* Used to Sync the timing */
MCFG_NVRAM_HANDLER(megadriv)
diff --git a/src/mame/machine/segamsys.c b/src/mame/machine/segamsys.c
index c08ae9b53f1..8d6bf03190b 100644
--- a/src/mame/machine/segamsys.c
+++ b/src/mame/machine/segamsys.c
@@ -353,7 +353,7 @@ struct sms_vdp
UINT8* vram;
UINT8* cram;
UINT8 writemode;
- bitmap_t* r_bitmap;
+ bitmap_rgb32* r_bitmap;
UINT8* tile_renderline;
UINT8* sprite_renderline;
@@ -377,7 +377,7 @@ struct sms_vdp
int sms_total_scanlines;
int sms_framerate;
emu_timer* sms_scanline_timer;
- UINT16* cram_mamecolours; // for use on RGB_DIRECT screen
+ UINT32* cram_mamecolours; // for use on RGB_DIRECT screen
int (*set_irq)(running_machine &machine, int state);
};
@@ -420,13 +420,13 @@ static void *start_vdp(running_machine &machine, int type)
if (chip->vdp_type==GG_VDP)
{
chip->cram = auto_alloc_array_clear(machine, UINT8, 0x0040);
- chip->cram_mamecolours = auto_alloc_array_clear(machine, UINT16, 0x0080/2);
+ chip->cram_mamecolours = auto_alloc_array_clear(machine, UINT32, 0x0080/2);
chip->gg_cram_latch = 0;
}
else
{
chip->cram = auto_alloc_array_clear(machine, UINT8, 0x0020);
- chip->cram_mamecolours = auto_alloc_array(machine, UINT16, 0x0040/2);
+ chip->cram_mamecolours = auto_alloc_array(machine, UINT32, 0x0040/2);
}
chip->tile_renderline = auto_alloc_array(machine, UINT8, 256+8);
@@ -436,7 +436,7 @@ static void *start_vdp(running_machine &machine, int type)
memset(chip->sprite_renderline,0x00,256+32);
chip->writemode = 0;
- chip->r_bitmap = auto_bitmap_alloc(machine, 256, 256, BITMAP_FORMAT_RGB15);
+ chip->r_bitmap = auto_bitmap_rgb32_alloc(machine, 256, 256);
chip->sms_scanline_timer = machine.scheduler().timer_alloc(FUNC(sms_scanline_timer_callback), chip);
@@ -521,8 +521,9 @@ static void vdp_data_w(address_space *space, UINT8 data, struct sms_vdp* chip)
r = (palword & 0x000f)>>0;
g = (palword & 0x00f0)>>4;
b = (palword & 0x0f00)>>8;
- palette_set_color_rgb(space->machine(),(chip->addr_reg&0x3e)/2, pal4bit(r), pal4bit(g), pal4bit(b));
- chip->cram_mamecolours[(chip->addr_reg&0x3e)/2]=(b<<1)|(g<<6)|(r<<11);
+ rgb_t rgb = MAKE_RGB(pal4bit(r), pal4bit(g), pal4bit(b));
+ palette_set_color(space->machine(),(chip->addr_reg&0x3e)/2, rgb);
+ chip->cram_mamecolours[(chip->addr_reg&0x3e)/2]=rgb;
}
}
}
@@ -536,8 +537,9 @@ static void vdp_data_w(address_space *space, UINT8 data, struct sms_vdp* chip)
r = (data & 0x03)>>0;
g = (data & 0x0c)>>2;
b = (data & 0x30)>>4;
- palette_set_color_rgb(space->machine(),chip->addr_reg&0x1f, pal2bit(r), pal2bit(g), pal2bit(b));
- chip->cram_mamecolours[chip->addr_reg&0x1f]=(b<<3)|(g<<8)|(r<<13);
+ rgb_t rgb = MAKE_RGB(pal2bit(r), pal2bit(g), pal2bit(b));
+ palette_set_color(space->machine(),chip->addr_reg&0x1f, rgb);
+ chip->cram_mamecolours[chip->addr_reg&0x1f]=rgb;
}
}
@@ -937,7 +939,7 @@ static void sms_render_tileline(int scanline, struct sms_vdp* chip)
static void sms_copy_to_renderbuffer(int scanline, struct sms_vdp* chip)
{
int x;
- UINT16* lineptr = &chip->r_bitmap->pix16(scanline);
+ UINT32* lineptr = &chip->r_bitmap->pix32(scanline);
for (x=0;x<256;x++)
{
@@ -956,7 +958,7 @@ static void sms_copy_to_renderbuffer(int scanline, struct sms_vdp* chip)
if (!(dat & 0x80))
{
lineptr[x] = chip->cram_mamecolours[dat&0x1f];
- if ((dat&0xf)==0x0) lineptr[x]|=0x8000;
+ if ((dat&0xf)==0x0) lineptr[x]|=0x80000000;
}
@@ -968,7 +970,7 @@ static void sms_copy_to_renderbuffer(int scanline, struct sms_vdp* chip)
if (dat & 0x80)
{
lineptr[x] = chip->cram_mamecolours[dat&0x1f];
- if ((dat&0xf)==0x0) lineptr[x]|=0x8000;
+ if ((dat&0xf)==0x0) lineptr[x]|=0x80000000;
}
}
@@ -1080,7 +1082,7 @@ static void show_tiles(struct sms_vdp* chip)
for (yy=0;yy<8;yy++)
{
int drawypos = y*8+yy;
- UINT16* lineptr = &chip->r_bitmap->pix16(drawypos);
+ UINT32* lineptr = &chip->r_bitmap->pix32(drawypos);
UINT32 gfxdata = (SMS_VDP_VRAM(count)<<24)|(SMS_VDP_VRAM(count+1)<<16)|(SMS_VDP_VRAM(count+2)<<8)|(SMS_VDP_VRAM(count+3)<<0);
@@ -1265,18 +1267,18 @@ SCREEN_EOF(megatech_bios)
end_of_frame(screen.machine(), vdp1);
}
-SCREEN_UPDATE(megatech_md_sms)
+SCREEN_UPDATE_RGB32(megatech_md_sms)
{
int x,y;
for (y=0;y<224;y++)
{
- UINT16* lineptr = &bitmap.pix16(y);
- UINT16* srcptr = &md_sms_vdp->r_bitmap->pix16(y);
+ UINT32* lineptr = &bitmap.pix32(y);
+ UINT32* srcptr = &md_sms_vdp->r_bitmap->pix32(y);
for (x=0;x<256;x++)
{
- lineptr[x]=srcptr[x]&0x7fff;
+ lineptr[x]=srcptr[x];
}
}
@@ -1284,70 +1286,71 @@ SCREEN_UPDATE(megatech_md_sms)
}
-SCREEN_UPDATE(megatech_bios)
+SCREEN_UPDATE_RGB32(megatech_bios)
{
int x,y;
for (y=0;y<224;y++)
{
- UINT16* lineptr = &bitmap.pix16(y);
- UINT16* srcptr = &vdp1->r_bitmap->pix16(y);
+ UINT32* lineptr = &bitmap.pix32(y);
+ UINT32* srcptr = &vdp1->r_bitmap->pix32(y);
for (x=0;x<256;x++)
{
- lineptr[x]=srcptr[x]&0x7fff;
+ lineptr[x]=srcptr[x];
}
}
return 0;
}
-SCREEN_UPDATE(megaplay_bios)
+SCREEN_UPDATE_RGB32(megaplay_bios)
{
int x,y;
for (y=0;y<224;y++)
{
- UINT16* lineptr = &bitmap.pix16(y+16, 32);
- UINT16* srcptr = &vdp1->r_bitmap->pix16(y);
+ UINT32* lineptr = &bitmap.pix32(y+16, 32);
+ UINT32* srcptr = &vdp1->r_bitmap->pix32(y);
for (x=0;x<256;x++)
{
- UINT16 src = srcptr[x]&0x7fff;
+ UINT32 src = srcptr[x]&0xffffff;
if (src)
- lineptr[x]=srcptr[x]&0x7fff;
+ lineptr[x]=src;
}
}
return 0;
}
-SCREEN_UPDATE(systeme)
+SCREEN_UPDATE_RGB32(systeme)
{
// show_tiles();
int x,y;
for (y=0;y<192;y++)
{
- UINT16* lineptr = &bitmap.pix16(y);
- UINT16* srcptr = &vdp1->r_bitmap->pix16(y);
+ UINT32* lineptr = &bitmap.pix32(y);
+ UINT32* srcptr = &vdp1->r_bitmap->pix32(y);
for (x=0;x<256;x++)
{
- lineptr[x]=srcptr[x]&0x7fff;
+ lineptr[x]=srcptr[x];
}
}
for (y=0;y<192;y++)
{
- UINT16* lineptr = &bitmap.pix16(y);
- UINT16* srcptr = &vdp2->r_bitmap->pix16(y);
+ UINT32* lineptr = &bitmap.pix32(y);
+ UINT32* srcptr = &vdp2->r_bitmap->pix32(y);
for (x=0;x<256;x++)
{
- if(!(srcptr[x]&0x8000)) lineptr[x]=srcptr[x]&0x7fff;
+ UINT16 src = srcptr[x];
+ if(!(src&0x80000000)) lineptr[x]=src;
}
}
@@ -1722,11 +1725,10 @@ MACHINE_CONFIG_START( sms, driver_device )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
// MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
- MCFG_SCREEN_UPDATE(megatech_md_sms) /* Copies a bitmap */
+ MCFG_SCREEN_UPDATE_STATIC(megatech_md_sms) /* Copies a bitmap */
MCFG_SCREEN_EOF(sms) /* Used to Sync the timing */
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/machine/slikshot.c b/src/mame/machine/slikshot.c
index 777ee3d9d08..e588aa76fb0 100644
--- a/src/mame/machine/slikshot.c
+++ b/src/mame/machine/slikshot.c
@@ -549,14 +549,14 @@ VIDEO_START( slikshot )
*
*************************************/
-SCREEN_UPDATE( slikshot )
+SCREEN_UPDATE_RGB32( slikshot )
{
itech8_state *state = screen.machine().driver_data<itech8_state>();
int totaldy, totaldx;
int temp, i;
/* draw the normal video first */
- SCREEN_UPDATE_CALL(itech8_2page);
+ SCREEN_UPDATE32_CALL(itech8_2page);
/* add the current X,Y positions to the list */
state->m_xbuffer[state->m_ybuffer_next % YBUFFER_COUNT] = input_port_read_safe(screen.machine(), "FAKEX", 0);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index c6054234bdf..4032a58639d 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -9884,9 +9884,9 @@ dlaira // (c) 1983 Cinematronics
dleuro // (c) 1983 Atari
dlital // (c) 1983 Sidam
spaceace // (c) 1983 Cinematronics
-spaceaa2 // (c) 1983 Cinematronics
-spaceaa // (c) 1983 Cinematronics
-saeuro // (c) 1983 Atari
+spaceacea2 // (c) 1983 Cinematronics
+spaceacea // (c) 1983 Cinematronics
+spaceaceeuro // (c) 1983 Atari
aztarac // (c) 1983 Centuri (vector game)
mole // (c) 1982 Yachiyo Electronics, Ltd.
thehand // (c) 1981 T.I.C.
diff --git a/src/mame/video/1942.c b/src/mame/video/1942.c
index 3f8e68def4e..f512a0bbfb1 100644
--- a/src/mame/video/1942.c
+++ b/src/mame/video/1942.c
@@ -198,7 +198,7 @@ WRITE8_HANDLER( c1942_c804_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
_1942_state *state = machine.driver_data<_1942_state>();
int offs;
@@ -240,7 +240,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( 1942 )
+SCREEN_UPDATE_IND16( 1942 )
{
_1942_state *state = screen.machine().driver_data<_1942_state>();
diff --git a/src/mame/video/1943.c b/src/mame/video/1943.c
index 55bc2c4a45e..3d75151a11b 100644
--- a/src/mame/video/1943.c
+++ b/src/mame/video/1943.c
@@ -221,7 +221,7 @@ VIDEO_START( 1943 )
state->save_item(NAME(state->m_bg2_on));
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
_1943_state *state = machine.driver_data<_1943_state>();
int offs;
@@ -254,7 +254,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( 1943 )
+SCREEN_UPDATE_IND16( 1943 )
{
_1943_state *state = screen.machine().driver_data<_1943_state>();
tilemap_set_scrollx(state->m_bg2_tilemap, 0, state->m_bgscrollx[0] + 256 * state->m_bgscrollx[1]);
diff --git a/src/mame/video/20pacgal.c b/src/mame/video/20pacgal.c
index 65e6179b77c..196c0e466ed 100644
--- a/src/mame/video/20pacgal.c
+++ b/src/mame/video/20pacgal.c
@@ -73,7 +73,7 @@ static void get_pens(running_machine &machine, const _20pacgal_state *state, pen
}
-static void do_pen_lookup(running_machine &machine, const _20pacgal_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void do_pen_lookup(running_machine &machine, const _20pacgal_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int y, x;
pen_t pens[NUM_PENS + NUM_STAR_PENS];
@@ -93,7 +93,7 @@ static void do_pen_lookup(running_machine &machine, const _20pacgal_state *state
*
*************************************/
-static void draw_sprite(running_machine& machine, const _20pacgal_state *state, bitmap_t &bitmap, int y, int x,
+static void draw_sprite(running_machine& machine, const _20pacgal_state *state, bitmap_rgb32 &bitmap, int y, int x,
UINT8 code, UINT8 color, int flip_y, int flip_x)
{
int sy;
@@ -163,7 +163,7 @@ static void draw_sprite(running_machine& machine, const _20pacgal_state *state,
}
-static void draw_sprites(running_machine& machine,const _20pacgal_state *state, bitmap_t &bitmap)
+static void draw_sprites(running_machine& machine,const _20pacgal_state *state, bitmap_rgb32 &bitmap)
{
int offs;
@@ -215,7 +215,7 @@ static void draw_sprites(running_machine& machine,const _20pacgal_state *state,
*
*************************************/
-static void draw_chars(const _20pacgal_state *state, bitmap_t &bitmap)
+static void draw_chars(const _20pacgal_state *state, bitmap_rgb32 &bitmap)
{
offs_t offs;
@@ -349,7 +349,7 @@ static void draw_chars(const _20pacgal_state *state, bitmap_t &bitmap)
*
*/
-static void draw_stars(_20pacgal_state *state, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_stars(_20pacgal_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
if ( (state->m_stars_ctrl[0] >> 5) & 1 )
{
@@ -406,7 +406,7 @@ static void draw_stars(_20pacgal_state *state, bitmap_t &bitmap, const rectangle
*
*************************************/
-static SCREEN_UPDATE( 20pacgal )
+static SCREEN_UPDATE_RGB32( 20pacgal )
{
_20pacgal_state *state = screen.machine().driver_data<_20pacgal_state>();
@@ -431,8 +431,7 @@ MACHINE_CONFIG_FRAGMENT( 20pacgal_video )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1)
- MCFG_SCREEN_UPDATE(20pacgal)
+ MCFG_SCREEN_UPDATE_STATIC(20pacgal)
MACHINE_CONFIG_END
diff --git a/src/mame/video/40love.c b/src/mame/video/40love.c
index 9885b8c3438..a6b9c822c77 100644
--- a/src/mame/video/40love.c
+++ b/src/mame/video/40love.c
@@ -106,8 +106,8 @@ VIDEO_START( fortyl )
state->m_pixram1 = auto_alloc_array_clear(machine, UINT8, 0x4000);
state->m_pixram2 = auto_alloc_array_clear(machine, UINT8, 0x4000);
- state->m_tmp_bitmap1 = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
- state->m_tmp_bitmap2 = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
+ state->m_tmp_bitmap1 = auto_bitmap_ind16_alloc(machine, 256, 256);
+ state->m_tmp_bitmap2 = auto_bitmap_ind16_alloc(machine, 256, 256);
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
@@ -274,7 +274,7 @@ spriteram format (4 bytes per sprite):
offset 3 xxxxxxxx x position
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
fortyl_state *state = machine.driver_data<fortyl_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -338,7 +338,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_pixram( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_pixram( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
fortyl_state *state = machine.driver_data<fortyl_state>();
int offs;
@@ -358,7 +358,7 @@ static void draw_pixram( running_machine &machine, bitmap_t &bitmap, const recta
copybitmap(bitmap, *state->m_tmp_bitmap2, f, f, state->m_xoffset, 0, cliprect);
}
-SCREEN_UPDATE( fortyl )
+SCREEN_UPDATE_IND16( fortyl )
{
fortyl_state *state = screen.machine().driver_data<fortyl_state>();
draw_pixram(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/4enraya.c b/src/mame/video/4enraya.c
index 208c1866234..d660f0a4d21 100644
--- a/src/mame/video/4enraya.c
+++ b/src/mame/video/4enraya.c
@@ -37,7 +37,7 @@ VIDEO_START( 4enraya )
state->m_bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-SCREEN_UPDATE( 4enraya )
+SCREEN_UPDATE_IND16( 4enraya )
{
_4enraya_state *state = screen.machine().driver_data<_4enraya_state>();
diff --git a/src/mame/video/8080bw.c b/src/mame/video/8080bw.c
index f01ecec2a31..c7fe35f92b6 100644
--- a/src/mame/video/8080bw.c
+++ b/src/mame/video/8080bw.c
@@ -63,7 +63,7 @@ static void cosmo_get_pens( pen_t *pens )
}
-INLINE void set_pixel( running_machine &machine, bitmap_t &bitmap, UINT8 y, UINT8 x, pen_t *pens, UINT8 color )
+INLINE void set_pixel( running_machine &machine, bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, pen_t *pens, UINT8 color )
{
_8080bw_state *state = machine.driver_data<_8080bw_state>();
@@ -77,7 +77,7 @@ INLINE void set_pixel( running_machine &machine, bitmap_t &bitmap, UINT8 y, UINT
}
-INLINE void set_8_pixels( running_machine &machine, bitmap_t &bitmap, UINT8 y, UINT8 x, UINT8 data, pen_t *pens, UINT8 fore_color, UINT8 back_color )
+INLINE void set_8_pixels( running_machine &machine, bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, UINT8 data, pen_t *pens, UINT8 fore_color, UINT8 back_color )
{
int i;
@@ -92,7 +92,7 @@ INLINE void set_8_pixels( running_machine &machine, bitmap_t &bitmap, UINT8 y, U
/* this is needed as this driver doesn't emulate the shift register like mw8080bw does */
-static void clear_extra_columns( running_machine &machine, bitmap_t &bitmap, pen_t *pens, UINT8 color )
+static void clear_extra_columns( running_machine &machine, bitmap_rgb32 &bitmap, pen_t *pens, UINT8 color )
{
_8080bw_state *state = machine.driver_data<_8080bw_state>();
UINT8 x;
@@ -112,7 +112,7 @@ static void clear_extra_columns( running_machine &machine, bitmap_t &bitmap, pen
}
-SCREEN_UPDATE( invadpt2 )
+SCREEN_UPDATE_RGB32( invadpt2 )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -144,7 +144,7 @@ SCREEN_UPDATE( invadpt2 )
}
-SCREEN_UPDATE( ballbomb )
+SCREEN_UPDATE_RGB32( ballbomb )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -177,7 +177,7 @@ SCREEN_UPDATE( ballbomb )
}
-SCREEN_UPDATE( schaser )
+SCREEN_UPDATE_RGB32( schaser )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -218,7 +218,7 @@ SCREEN_UPDATE( schaser )
}
-SCREEN_UPDATE( schasercv )
+SCREEN_UPDATE_RGB32( schasercv )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -244,7 +244,7 @@ SCREEN_UPDATE( schasercv )
}
-SCREEN_UPDATE( rollingc )
+SCREEN_UPDATE_RGB32( rollingc )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -269,7 +269,7 @@ SCREEN_UPDATE( rollingc )
}
-SCREEN_UPDATE( polaris )
+SCREEN_UPDATE_RGB32( polaris )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -341,7 +341,7 @@ SCREEN_UPDATE( polaris )
}
-SCREEN_UPDATE( lupin3 )
+SCREEN_UPDATE_RGB32( lupin3 )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -366,7 +366,7 @@ SCREEN_UPDATE( lupin3 )
}
-SCREEN_UPDATE( cosmo )
+SCREEN_UPDATE_RGB32( cosmo )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -393,7 +393,7 @@ SCREEN_UPDATE( cosmo )
}
-SCREEN_UPDATE( indianbt )
+SCREEN_UPDATE_RGB32( indianbt )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
@@ -425,7 +425,7 @@ SCREEN_UPDATE( indianbt )
}
-SCREEN_UPDATE( shuttlei )
+SCREEN_UPDATE_RGB32( shuttlei )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[2] = { RGB_BLACK, RGB_WHITE };
@@ -456,7 +456,7 @@ SCREEN_UPDATE( shuttlei )
}
-SCREEN_UPDATE( sflush )
+SCREEN_UPDATE_RGB32( sflush )
{
_8080bw_state *state = screen.machine().driver_data<_8080bw_state>();
pen_t pens[NUM_PENS];
diff --git a/src/mame/video/88games.c b/src/mame/video/88games.c
index 45973b80686..bf91f2d3207 100644
--- a/src/mame/video/88games.c
+++ b/src/mame/video/88games.c
@@ -54,7 +54,7 @@ void _88games_zoom_callback( running_machine &machine, int *code, int *color, in
***************************************************************************/
-SCREEN_UPDATE( 88games )
+SCREEN_UPDATE_IND16( 88games )
{
_88games_state *state = screen.machine().driver_data<_88games_state>();
diff --git a/src/mame/video/actfancr.c b/src/mame/video/actfancr.c
index f92d41f25e6..36778d9386f 100644
--- a/src/mame/video/actfancr.c
+++ b/src/mame/video/actfancr.c
@@ -24,7 +24,7 @@ VIDEO_START( actfancr )
/******************************************************************************/
-SCREEN_UPDATE( actfancr )
+SCREEN_UPDATE_IND16( actfancr )
{
actfancr_state *state = screen.machine().driver_data<actfancr_state>();
diff --git a/src/mame/video/aeroboto.c b/src/mame/video/aeroboto.c
index 2ebe6c0c222..9bbf144b7e1 100644
--- a/src/mame/video/aeroboto.c
+++ b/src/mame/video/aeroboto.c
@@ -129,7 +129,7 @@ WRITE8_HANDLER( aeroboto_tilecolor_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
aeroboto_state *state = machine.driver_data<aeroboto_state>();
int offs;
@@ -154,7 +154,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( aeroboto )
+SCREEN_UPDATE_IND16( aeroboto )
{
aeroboto_state *state = screen.machine().driver_data<aeroboto_state>();
diff --git a/src/mame/video/aerofgt.c b/src/mame/video/aerofgt.c
index 5b31530a47a..150d7296c31 100644
--- a/src/mame/video/aerofgt.c
+++ b/src/mame/video/aerofgt.c
@@ -333,7 +333,7 @@ WRITE16_HANDLER( wbbc97_bitmap_enable_w )
***************************************************************************/
-static void aerofgt_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void aerofgt_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int offs;
@@ -404,7 +404,8 @@ static void aerofgt_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
}
-static void turbofrc_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
+template<class _BitmapClass>
+static void turbofrc_draw_sprites( running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int attr_start, base, first;
@@ -489,7 +490,7 @@ static void turbofrc_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void spinlbrk_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
+static void spinlbrk_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int attr_start, base, first;
@@ -573,7 +574,7 @@ static void spinlbrk_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void aerfboo2_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
+static void aerfboo2_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int attr_start, base, first;
@@ -658,7 +659,7 @@ static void aerfboo2_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void pspikesb_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void pspikesb_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int i;
@@ -693,7 +694,7 @@ static void pspikesb_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void spikes91_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void spikes91_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int i;
@@ -735,7 +736,7 @@ static void spikes91_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void aerfboot_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void aerfboot_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int attr_start, last;
@@ -817,7 +818,7 @@ static void aerfboot_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void wbbc97_draw_bitmap( running_machine &machine, bitmap_t &bitmap )
+static void wbbc97_draw_bitmap( running_machine &machine, bitmap_rgb32 &bitmap )
{
aerofgt_state *state = machine.driver_data<aerofgt_state>();
int x, y, count;
@@ -838,7 +839,7 @@ static void wbbc97_draw_bitmap( running_machine &machine, bitmap_t &bitmap )
}
-SCREEN_UPDATE( pspikes )
+SCREEN_UPDATE_IND16( pspikes )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -857,7 +858,7 @@ SCREEN_UPDATE( pspikes )
return 0;
}
-SCREEN_UPDATE( pspikesb )
+SCREEN_UPDATE_IND16( pspikesb )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -873,7 +874,7 @@ SCREEN_UPDATE( pspikesb )
return 0;
}
-SCREEN_UPDATE( spikes91 )
+SCREEN_UPDATE_IND16( spikes91 )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -914,7 +915,7 @@ SCREEN_UPDATE( spikes91 )
return 0;
}
-SCREEN_UPDATE( karatblz )
+SCREEN_UPDATE_IND16( karatblz )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
tilemap_set_scrollx(state->m_bg1_tilemap, 0, state->m_bg1scrollx - 8);
@@ -935,7 +936,7 @@ SCREEN_UPDATE( karatblz )
return 0;
}
-SCREEN_UPDATE( spinlbrk )
+SCREEN_UPDATE_IND16( spinlbrk )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -961,7 +962,7 @@ SCREEN_UPDATE( spinlbrk )
return 0;
}
-SCREEN_UPDATE( turbofrc )
+SCREEN_UPDATE_IND16( turbofrc )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -988,7 +989,7 @@ SCREEN_UPDATE( turbofrc )
return 0;
}
-SCREEN_UPDATE( aerofgt )
+SCREEN_UPDATE_IND16( aerofgt )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
tilemap_set_scrollx(state->m_bg1_tilemap, 0, state->m_rasterram[0x0000] - 18);
@@ -1011,7 +1012,7 @@ SCREEN_UPDATE( aerofgt )
}
-SCREEN_UPDATE( aerfboot )
+SCREEN_UPDATE_IND16( aerfboot )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -1034,7 +1035,7 @@ SCREEN_UPDATE( aerfboot )
return 0;
}
-SCREEN_UPDATE( aerfboo2 )
+SCREEN_UPDATE_IND16( aerfboo2 )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
@@ -1061,7 +1062,7 @@ SCREEN_UPDATE( aerfboo2 )
return 0;
}
-SCREEN_UPDATE( wbbc97 )
+SCREEN_UPDATE_RGB32( wbbc97 )
{
aerofgt_state *state = screen.machine().driver_data<aerofgt_state>();
int i, scrolly;
diff --git a/src/mame/video/airbustr.c b/src/mame/video/airbustr.c
index f89feb985be..8fb38918549 100644
--- a/src/mame/video/airbustr.c
+++ b/src/mame/video/airbustr.c
@@ -121,7 +121,7 @@ VIDEO_START( airbustr )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
- state->m_sprites_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_sprites_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
tilemap_set_scrolldx(state->m_bg_tilemap, 0x094, 0x06a);
@@ -129,11 +129,11 @@ VIDEO_START( airbustr )
tilemap_set_scrolldx(state->m_fg_tilemap, 0x094, 0x06a);
tilemap_set_scrolldy(state->m_fg_tilemap, 0x100, 0x1ff);
- state->save_item(NAME(*state->m_sprites_bitmap));
+ state->save_item(NAME(state->m_sprites_bitmap));
}
-SCREEN_UPDATE( airbustr )
+SCREEN_UPDATE_IND16( airbustr )
{
airbustr_state *state = screen.machine().driver_data<airbustr_state>();
diff --git a/src/mame/video/ajax.c b/src/mame/video/ajax.c
index 2a0aad3a1b4..a10680ed56e 100644
--- a/src/mame/video/ajax.c
+++ b/src/mame/video/ajax.c
@@ -87,7 +87,7 @@ VIDEO_START( ajax )
***************************************************************************/
-SCREEN_UPDATE( ajax )
+SCREEN_UPDATE_IND16( ajax )
{
ajax_state *state = screen.machine().driver_data<ajax_state>();
diff --git a/src/mame/video/aliens.c b/src/mame/video/aliens.c
index 0b63e625d2b..c19ebe020a1 100644
--- a/src/mame/video/aliens.c
+++ b/src/mame/video/aliens.c
@@ -75,7 +75,7 @@ VIDEO_START( aliens )
***************************************************************************/
-SCREEN_UPDATE( aliens )
+SCREEN_UPDATE_IND16( aliens )
{
aliens_state *state = screen.machine().driver_data<aliens_state>();
diff --git a/src/mame/video/alpha68k.c b/src/mame/video/alpha68k.c
index 50cc9e0dc0d..40c0ef8040f 100644
--- a/src/mame/video/alpha68k.c
+++ b/src/mame/video/alpha68k.c
@@ -75,7 +75,7 @@ VIDEO_START( alpha68k )
/******************************************************************************/
//AT
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int j, int s, int e )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int j, int s, int e )
{
alpha68k_state *state = machine.driver_data<alpha68k_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -128,7 +128,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
/******************************************************************************/
-SCREEN_UPDATE( alpha68k_II )
+SCREEN_UPDATE_IND16( alpha68k_II )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
@@ -221,7 +221,7 @@ WRITE16_HANDLER( alpha68k_V_video_control_w )
}
}
-static void draw_sprites_V( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int j, int s, int e, int fx_mask, int fy_mask, int sprite_mask )
+static void draw_sprites_V( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int j, int s, int e, int fx_mask, int fy_mask, int sprite_mask )
{
alpha68k_state *state = machine.driver_data<alpha68k_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -275,7 +275,7 @@ static void draw_sprites_V( running_machine &machine, bitmap_t &bitmap, const re
}
}
-SCREEN_UPDATE( alpha68k_V )
+SCREEN_UPDATE_IND16( alpha68k_V )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -316,7 +316,7 @@ SCREEN_UPDATE( alpha68k_V )
return 0;
}
-SCREEN_UPDATE( alpha68k_V_sb )
+SCREEN_UPDATE_IND16( alpha68k_V_sb )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
@@ -340,7 +340,7 @@ SCREEN_UPDATE( alpha68k_V_sb )
/******************************************************************************/
//AT
-static void draw_sprites_I( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int c, int d, int yshift )
+static void draw_sprites_I( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int c, int d, int yshift )
{
alpha68k_state *state = machine.driver_data<alpha68k_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -368,7 +368,7 @@ static void draw_sprites_I( running_machine &machine, bitmap_t &bitmap, const re
}
}
-SCREEN_UPDATE( alpha68k_I )
+SCREEN_UPDATE_IND16( alpha68k_I )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
int yshift = (state->m_microcontroller_id == 0x890a) ? 1 : 0; // The Next Space is 1 pixel off
@@ -448,7 +448,7 @@ static void jongbou_video_banking(int *bank, int data)
*bank = (data >> 11 & 4) | (data >> 10 & 3);
}
-static void kyros_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int c, int d )
+static void kyros_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int c, int d )
{
alpha68k_state *state = machine.driver_data<alpha68k_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -501,7 +501,7 @@ static void kyros_draw_sprites( running_machine &machine, bitmap_t &bitmap, cons
}
}
-SCREEN_UPDATE( kyros )
+SCREEN_UPDATE_IND16( kyros )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
colortable_entry_set_value(screen.machine().colortable, 0x100, *state->m_videoram & 0xff);
@@ -515,7 +515,7 @@ SCREEN_UPDATE( kyros )
/******************************************************************************/
-static void sstingry_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int c, int d )
+static void sstingry_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int c, int d )
{
//AT
alpha68k_state *state = machine.driver_data<alpha68k_state>();
@@ -561,7 +561,7 @@ static void sstingry_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-SCREEN_UPDATE( sstingry )
+SCREEN_UPDATE_IND16( sstingry )
{
alpha68k_state *state = screen.machine().driver_data<alpha68k_state>();
colortable_entry_set_value(screen.machine().colortable, 0x100, *state->m_videoram & 0xff);
diff --git a/src/mame/video/ambush.c b/src/mame/video/ambush.c
index 79644b6e680..c3c9e6577e3 100644
--- a/src/mame/video/ambush.c
+++ b/src/mame/video/ambush.c
@@ -47,7 +47,7 @@ PALETTE_INIT( ambush )
}
-static void draw_chars( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_chars( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
ambush_state *state = machine.driver_data<ambush_state>();
int offs, transpen;
@@ -87,7 +87,7 @@ static void draw_chars( running_machine &machine, bitmap_t &bitmap, const rectan
}
-SCREEN_UPDATE( ambush )
+SCREEN_UPDATE_IND16( ambush )
{
ambush_state *state = screen.machine().driver_data<ambush_state>();
int offs;
diff --git a/src/mame/video/amiga.c b/src/mame/video/amiga.c
index 0e99466ab25..0dfad44fbb5 100644
--- a/src/mame/video/amiga.c
+++ b/src/mame/video/amiga.c
@@ -619,7 +619,7 @@ INLINE int update_ham(amiga_state *state, int newpix)
*
*************************************/
-void amiga_render_scanline(running_machine &machine, bitmap_t &bitmap, int scanline)
+void amiga_render_scanline(running_machine &machine, bitmap_ind16 &bitmap, int scanline)
{
amiga_state *state = machine.driver_data<amiga_state>();
UINT16 save_color0 = CUSTOM_REG(REG_COLOR00);
@@ -999,7 +999,7 @@ void amiga_render_scanline(running_machine &machine, bitmap_t &bitmap, int scanl
*
*************************************/
-SCREEN_UPDATE( amiga )
+SCREEN_UPDATE_IND16( amiga )
{
int y;
diff --git a/src/mame/video/amigaaga.c b/src/mame/video/amigaaga.c
index ab7052ff0f9..e37eaf65b5a 100644
--- a/src/mame/video/amigaaga.c
+++ b/src/mame/video/amigaaga.c
@@ -444,7 +444,7 @@ INLINE int update_ham(amiga_state *state, int newpix)
*
*************************************/
-void amiga_aga_render_scanline(running_machine &machine, bitmap_t &bitmap, int scanline)
+void amiga_aga_render_scanline(running_machine &machine, bitmap_rgb32 &bitmap, int scanline)
{
amiga_state *state = machine.driver_data<amiga_state>();
UINT16 save_color0 = CUSTOM_REG(REG_COLOR00);
@@ -860,7 +860,7 @@ void amiga_aga_render_scanline(running_machine &machine, bitmap_t &bitmap, int s
*
*************************************/
-SCREEN_UPDATE( amiga_aga )
+SCREEN_UPDATE_RGB32( amiga_aga )
{
int y;
diff --git a/src/mame/video/ampoker2.c b/src/mame/video/ampoker2.c
index ef17d8f442e..e1d9b711448 100644
--- a/src/mame/video/ampoker2.c
+++ b/src/mame/video/ampoker2.c
@@ -161,7 +161,7 @@ VIDEO_START(sigma2k)
8, 8, 64, 32);
}
-SCREEN_UPDATE(ampoker2)
+SCREEN_UPDATE_IND16(ampoker2)
{
ampoker2_state *state = screen.machine().driver_data<ampoker2_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/amspdwy.c b/src/mame/video/amspdwy.c
index 47e5db217fb..c10ed0174b5 100644
--- a/src/mame/video/amspdwy.c
+++ b/src/mame/video/amspdwy.c
@@ -103,7 +103,7 @@ Offset: Format: Value:
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
amspdwy_state *state = machine.driver_data<amspdwy_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -146,7 +146,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( amspdwy )
+SCREEN_UPDATE_IND16( amspdwy )
{
amspdwy_state *state = screen.machine().driver_data<amspdwy_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/angelkds.c b/src/mame/video/angelkds.c
index 1d6aeb606ee..9656436f639 100644
--- a/src/mame/video/angelkds.c
+++ b/src/mame/video/angelkds.c
@@ -140,7 +140,7 @@ a split down the middle of the screen
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int enable_n)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int enable_n)
{
angelkds_state *state = machine.driver_data<angelkds_state>();
const UINT8 *source = state->m_spriteram + 0x100 - 4;
@@ -272,7 +272,7 @@ VIDEO_START( angelkds )
/* enable bits are uncertain */
-SCREEN_UPDATE( angelkds )
+SCREEN_UPDATE_IND16( angelkds )
{
angelkds_state *state = screen.machine().driver_data<angelkds_state>();
const rectangle &visarea = screen.visible_area();
diff --git a/src/mame/video/appoooh.c b/src/mame/video/appoooh.c
index 49c24fd2f32..1286cebb423 100644
--- a/src/mame/video/appoooh.c
+++ b/src/mame/video/appoooh.c
@@ -207,7 +207,7 @@ WRITE8_HANDLER( appoooh_out_w )
/* bit 7 unknown (used) */
}
-static void appoooh_draw_sprites( bitmap_t &dest_bmp, const rectangle &cliprect, const gfx_element *gfx, UINT8 *sprite )
+static void appoooh_draw_sprites( bitmap_ind16 &dest_bmp, const rectangle &cliprect, const gfx_element *gfx, UINT8 *sprite )
{
int offs;
int flipy = flip_screen_get(gfx->machine());
@@ -238,7 +238,7 @@ static void appoooh_draw_sprites( bitmap_t &dest_bmp, const rectangle &cliprect,
}
}
-static void robowres_draw_sprites( bitmap_t &dest_bmp, const rectangle &cliprect, const gfx_element *gfx, UINT8 *sprite )
+static void robowres_draw_sprites( bitmap_ind16 &dest_bmp, const rectangle &cliprect, const gfx_element *gfx, UINT8 *sprite )
{
int offs;
int flipy = flip_screen_get(gfx->machine());
@@ -270,7 +270,7 @@ static void robowres_draw_sprites( bitmap_t &dest_bmp, const rectangle &cliprect
}
-SCREEN_UPDATE( appoooh )
+SCREEN_UPDATE_IND16( appoooh )
{
appoooh_state *state = screen.machine().driver_data<appoooh_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -300,7 +300,7 @@ SCREEN_UPDATE( appoooh )
return 0;
}
-SCREEN_UPDATE( robowres )
+SCREEN_UPDATE_IND16( robowres )
{
appoooh_state *state = screen.machine().driver_data<appoooh_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/aquarium.c b/src/mame/video/aquarium.c
index 7d8ce558c2b..b8b0afc0876 100644
--- a/src/mame/video/aquarium.c
+++ b/src/mame/video/aquarium.c
@@ -4,7 +4,7 @@
#include "includes/aquarium.h"
/* gcpinbal.c modified */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
aquarium_state *state = machine.driver_data<aquarium_state>();
int offs, chain_pos;
@@ -158,7 +158,7 @@ VIDEO_START(aquarium)
tilemap_set_transparent_pen(state->m_mid_tilemap, 0);
}
-SCREEN_UPDATE(aquarium)
+SCREEN_UPDATE_IND16(aquarium)
{
aquarium_state *state = screen.machine().driver_data<aquarium_state>();
tilemap_set_scrollx(state->m_mid_tilemap, 0, state->m_scroll[0]);
diff --git a/src/mame/video/arabian.c b/src/mame/video/arabian.c
index e9f3bade118..8b739b81860 100644
--- a/src/mame/video/arabian.c
+++ b/src/mame/video/arabian.c
@@ -368,7 +368,7 @@ WRITE8_HANDLER( arabian_videoram_w )
*
*************************************/
-SCREEN_UPDATE( arabian )
+SCREEN_UPDATE_IND16( arabian )
{
arabian_state *state = screen.machine().driver_data<arabian_state>();
const pen_t *pens = &screen.machine().pens[(state->m_video_control >> 3) << 8];
diff --git a/src/mame/video/arcadecl.c b/src/mame/video/arcadecl.c
index 32ca2da2bbe..eaa71faabc3 100644
--- a/src/mame/video/arcadecl.c
+++ b/src/mame/video/arcadecl.c
@@ -13,7 +13,7 @@
#include "includes/arcadecl.h"
-static void arcadecl_bitmap_render(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+static void arcadecl_bitmap_render(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
/*************************************
*
@@ -78,7 +78,7 @@ VIDEO_START( arcadecl )
*
*************************************/
-SCREEN_UPDATE( arcadecl )
+SCREEN_UPDATE_IND16( arcadecl )
{
arcadecl_state *state = screen.machine().driver_data<arcadecl_state>();
@@ -89,7 +89,7 @@ SCREEN_UPDATE( arcadecl )
if (state->m_has_mo)
{
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
mobitmap = atarimo_render(0, cliprect, &rectlist);
@@ -121,7 +121,7 @@ SCREEN_UPDATE( arcadecl )
*
*************************************/
-static void arcadecl_bitmap_render(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void arcadecl_bitmap_render(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
arcadecl_state *state = machine.driver_data<arcadecl_state>();
int x, y;
diff --git a/src/mame/video/archimds.c b/src/mame/video/archimds.c
index 0a80b23a5e7..1a5a4f976cd 100644
--- a/src/mame/video/archimds.c
+++ b/src/mame/video/archimds.c
@@ -11,7 +11,7 @@ VIDEO_START( archimds_vidc )
{
}
-SCREEN_UPDATE( archimds_vidc )
+SCREEN_UPDATE_RGB32( archimds_vidc )
{
int xstart,ystart,xend,yend;
int res_x,res_y;
diff --git a/src/mame/video/argus.c b/src/mame/video/argus.c
index 6966a91619c..cca08878b3f 100644
--- a/src/mame/video/argus.c
+++ b/src/mame/video/argus.c
@@ -312,7 +312,7 @@ VIDEO_START( valtric )
tilemap_set_transparent_pen(state->m_tx_tilemap, 15);
- state->m_mosaicbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_mosaicbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
jal_blend_init(machine, 1);
}
@@ -851,7 +851,7 @@ static void argus_bg0_scroll_handle(running_machine &machine)
}
}
-static void argus_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void argus_draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int priority)
{
argus_state *state = machine.driver_data<argus_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -894,7 +894,7 @@ static void argus_draw_sprites(running_machine &machine, bitmap_t &bitmap, const
}
#if 1
-static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+static void valtric_draw_mosaic(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
argus_state *state = screen.machine().driver_data<argus_state>();
@@ -909,7 +909,7 @@ static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const r
tilemap_draw(bitmap, cliprect, state->m_bg1_tilemap, 0, 0);
else
{
- tilemap_draw(*state->m_mosaicbitmap, cliprect, state->m_bg1_tilemap, 0, 0);
+ tilemap_draw(state->m_mosaicbitmap, cliprect, state->m_bg1_tilemap, 0, 0);
{
int step=state->m_mosaic;
UINT32 *dest;
@@ -923,11 +923,11 @@ static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const r
for (x=0;x<height+step;x+=step)
{
if (y < height && x < width)
- c=state->m_mosaicbitmap->pix32(y, x);
+ c=state->m_mosaicbitmap.pix32(y, x);
if (state->m_mosaic<0)
if (y+step-1<height && x+step-1< width)
- c = state->m_mosaicbitmap->pix32(y+step-1, x+step-1);
+ c = state->m_mosaicbitmap.pix32(y+step-1, x+step-1);
for (yy=0;yy<step;yy++)
for (xx=0;xx<step;xx++)
@@ -943,7 +943,7 @@ static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const r
}
}
#else
-static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+static void valtric_draw_mosaic(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
argus_state *state = screen.machine().driver_data<argus_state>();
int step = 0x10 - (state->m_valtric_mosaic & 0x0f);
@@ -963,11 +963,11 @@ static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const r
for (x = 0; x < height+step; x += step)
{
if (y < height && x < width)
- c = state->m_mosaicbitmap->pix32(y, x);
+ c = state->m_mosaicbitmap.pix32(y, x);
if (state->m_valtric_mosaic & 0x80)
if (y+step-1 < height && x+step-1 < width)
- c = state->m_mosaicbitmap->pix32(y+step-1, x+step-1);
+ c = state->m_mosaicbitmap.pix32(y+step-1, x+step-1);
for (yy = 0; yy < step; yy++)
for (xx = 0; xx < step; xx++)
@@ -984,7 +984,7 @@ static void valtric_draw_mosaic(screen_device &screen, bitmap_t &bitmap, const r
}
#endif
-static void valtric_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void valtric_draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
argus_state *state = machine.driver_data<argus_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -1024,7 +1024,7 @@ static void valtric_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
}
}
-static void butasan_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void butasan_draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
argus_state *state = machine.driver_data<argus_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -1189,7 +1189,7 @@ static void butasan_log_vram(running_machine &machine)
#endif
}
-SCREEN_UPDATE( argus )
+SCREEN_UPDATE_RGB32( argus )
{
argus_state *state = screen.machine().driver_data<argus_state>();
bg_setting(screen.machine());
@@ -1206,7 +1206,7 @@ SCREEN_UPDATE( argus )
return 0;
}
-SCREEN_UPDATE( valtric )
+SCREEN_UPDATE_RGB32( valtric )
{
argus_state *state = screen.machine().driver_data<argus_state>();
bg_setting(screen.machine());
@@ -1220,7 +1220,7 @@ SCREEN_UPDATE( valtric )
return 0;
}
-SCREEN_UPDATE( butasan )
+SCREEN_UPDATE_RGB32( butasan )
{
argus_state *state = screen.machine().driver_data<argus_state>();
bg_setting(screen.machine());
diff --git a/src/mame/video/arkanoid.c b/src/mame/video/arkanoid.c
index 0fc45b27397..1922773662d 100644
--- a/src/mame/video/arkanoid.c
+++ b/src/mame/video/arkanoid.c
@@ -170,7 +170,7 @@ VIDEO_START( arkanoid )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
arkanoid_state *state = machine.driver_data<arkanoid_state>();
int offs;
@@ -202,7 +202,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( arkanoid )
+SCREEN_UPDATE_IND16( arkanoid )
{
arkanoid_state *state = screen.machine().driver_data<arkanoid_state>();
@@ -211,7 +211,7 @@ SCREEN_UPDATE( arkanoid )
return 0;
}
-SCREEN_UPDATE( hexa )
+SCREEN_UPDATE_IND16( hexa )
{
arkanoid_state *state = screen.machine().driver_data<arkanoid_state>();
diff --git a/src/mame/video/armedf.c b/src/mame/video/armedf.c
index a1146ca7d4f..b83bd555828 100644
--- a/src/mame/video/armedf.c
+++ b/src/mame/video/armedf.c
@@ -277,7 +277,7 @@ WRITE16_HANDLER( armedf_bg_scrolly_w )
***************************************************************************/
/* custom code to handle color cycling effect, handled by m_spr_pal_clut */
-void armedf_drawgfx(running_machine &machine, bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+void armedf_drawgfx(running_machine &machine, bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color, UINT32 clut,int flipx,int flipy,int offsx,int offsy,
int transparent_color)
{
@@ -348,7 +348,7 @@ void armedf_drawgfx(running_machine &machine, bitmap_t &dest_bmp,const rectangle
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
armedf_state *state = machine.driver_data<armedf_state>();
@@ -383,7 +383,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( armedf )
+SCREEN_UPDATE_IND16( armedf )
{
armedf_state *state = screen.machine().driver_data<armedf_state>();
int sprite_enable = state->m_vreg & 0x200;
diff --git a/src/mame/video/artmagic.c b/src/mame/video/artmagic.c
index 28fe7a322ed..fe3ac9284be 100644
--- a/src/mame/video/artmagic.c
+++ b/src/mame/video/artmagic.c
@@ -339,7 +339,7 @@ WRITE16_HANDLER( artmagic_blitter_w )
*
*************************************/
-void artmagic_scanline(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void artmagic_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
artmagic_state *state = screen.machine().driver_data<artmagic_state>();
offs_t offset = (params->rowaddr << 12) & 0x7ff000;
diff --git a/src/mame/video/ashnojoe.c b/src/mame/video/ashnojoe.c
index 82721dbd863..ca3c5c50f9b 100644
--- a/src/mame/video/ashnojoe.c
+++ b/src/mame/video/ashnojoe.c
@@ -224,7 +224,7 @@ VIDEO_START( ashnojoe )
tilemap_set_transparent_pen(state->m_joetilemap5, 15);
}
-SCREEN_UPDATE( ashnojoe )
+SCREEN_UPDATE_IND16( ashnojoe )
{
ashnojoe_state *state = screen.machine().driver_data<ashnojoe_state>();
diff --git a/src/mame/video/asterix.c b/src/mame/video/asterix.c
index 74b5467bc3c..27f99e9846c 100644
--- a/src/mame/video/asterix.c
+++ b/src/mame/video/asterix.c
@@ -46,7 +46,7 @@ void asterix_tile_callback( running_machine &machine, int layer, int *code, int
*code = (*code & 0x03ff) | state->m_tilebanks[(*code >> 10) & 3];
}
-SCREEN_UPDATE( asterix )
+SCREEN_UPDATE_IND16( asterix )
{
asterix_state *state = screen.machine().driver_data<asterix_state>();
static const int K053251_CI[4] = { K053251_CI0, K053251_CI2, K053251_CI3, K053251_CI4 };
diff --git a/src/mame/video/astrocde.c b/src/mame/video/astrocde.c
index 4e74f1b54ac..a29cd36b8dd 100644
--- a/src/mame/video/astrocde.c
+++ b/src/mame/video/astrocde.c
@@ -244,7 +244,7 @@ static void init_savestate(running_machine &machine)
*
*************************************/
-SCREEN_UPDATE( astrocde )
+SCREEN_UPDATE_IND16( astrocde )
{
astrocde_state *state = screen.machine().driver_data<astrocde_state>();
UINT8 *videoram = state->m_videoram;
@@ -330,7 +330,7 @@ SCREEN_UPDATE( astrocde )
}
-SCREEN_UPDATE( profpac )
+SCREEN_UPDATE_IND16( profpac )
{
astrocde_state *state = screen.machine().driver_data<astrocde_state>();
int y;
diff --git a/src/mame/video/asuka.c b/src/mame/video/asuka.c
index 9bc81c8683b..ec20e4c8509 100644
--- a/src/mame/video/asuka.c
+++ b/src/mame/video/asuka.c
@@ -19,7 +19,7 @@ WRITE16_HANDLER( asuka_spritectrl_w )
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( asuka )
+SCREEN_UPDATE_IND16( asuka )
{
asuka_state *state = screen.machine().driver_data<asuka_state>();
UINT8 layer[3];
@@ -45,7 +45,7 @@ SCREEN_UPDATE( asuka )
}
-SCREEN_UPDATE( bonzeadv )
+SCREEN_UPDATE_IND16( bonzeadv )
{
asuka_state *state = screen.machine().driver_data<asuka_state>();
UINT8 layer[3];
diff --git a/src/mame/video/atari.c b/src/mame/video/atari.c
index 713188f01ac..b8e66c3c547 100644
--- a/src/mame/video/atari.c
+++ b/src/mame/video/atari.c
@@ -712,6 +712,8 @@ VIDEO_START( atari )
LOG(("atari antic_vh_start\n"));
memset(&antic, 0, sizeof(antic));
+
+ antic.bitmap = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
antic.renderer = antic_mode_0_xx;
antic.cclk_expand = auto_alloc_array(machine, UINT32, 21 * 256);
@@ -766,11 +768,11 @@ VIDEO_START( atari )
* Refresh screen bitmap.
* Note: Actual drawing is done scanline wise during atari_interrupt
************************************************************************/
-SCREEN_UPDATE( atari )
+SCREEN_UPDATE_IND16( atari )
{
UINT32 new_tv_artifacts;
- copybitmap(bitmap, screen.default_bitmap(), 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, *antic.bitmap, 0, 0, 0, 0, cliprect);
new_tv_artifacts = input_port_read_safe(screen.machine(), "artifacts", 0);
if( tv_artifacts != new_tv_artifacts )
@@ -1041,7 +1043,7 @@ static void antic_linerefresh(running_machine &machine)
dst[2] = antic.color_lookup[PBK] | antic.color_lookup[PBK] << 16;
dst[3] = antic.color_lookup[PBK] | antic.color_lookup[PBK] << 16;
- draw_scanline8(machine.primary_screen->default_bitmap(), 12, y, MIN(machine.primary_screen->default_bitmap().width() - 12, sizeof(scanline)), (const UINT8 *) scanline, NULL);
+ draw_scanline8(*antic.bitmap, 12, y, MIN(antic.bitmap->width() - 12, sizeof(scanline)), (const UINT8 *) scanline, NULL);
}
static int cycle(running_machine &machine)
diff --git a/src/mame/video/atarifb.c b/src/mame/video/atarifb.c
index 660d0886942..2fea95c9443 100644
--- a/src/mame/video/atarifb.c
+++ b/src/mame/video/atarifb.c
@@ -104,7 +104,7 @@ VIDEO_START( atarifb )
-static void draw_playfield_and_alpha( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int playfield_x_offset, int playfield_y_offset )
+static void draw_playfield_and_alpha( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int playfield_x_offset, int playfield_y_offset )
{
atarifb_state *state = machine.driver_data<atarifb_state>();
const rectangle bigfield_area(4 * 8, 34 * 8 - 1, 0 * 8, 32 * 8 - 1);
@@ -121,7 +121,7 @@ static void draw_playfield_and_alpha( running_machine &machine, bitmap_t &bitmap
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int gfx, int is_soccer )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int gfx, int is_soccer )
{
atarifb_state *state = machine.driver_data<atarifb_state>();
const rectangle bigfield_area(4 * 8, 34 * 8 - 1, 0 * 8, 32 * 8 - 1);
@@ -180,7 +180,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( atarifb )
+SCREEN_UPDATE_IND16( atarifb )
{
draw_playfield_and_alpha(screen.machine(), bitmap, cliprect, 0, 0);
@@ -190,7 +190,7 @@ SCREEN_UPDATE( atarifb )
}
-SCREEN_UPDATE( abaseb )
+SCREEN_UPDATE_IND16( abaseb )
{
draw_playfield_and_alpha(screen.machine(), bitmap, cliprect, -8, 0);
@@ -200,7 +200,7 @@ SCREEN_UPDATE( abaseb )
}
-SCREEN_UPDATE( soccer )
+SCREEN_UPDATE_IND16( soccer )
{
draw_playfield_and_alpha(screen.machine(), bitmap, cliprect, 0, 8);
diff --git a/src/mame/video/atarig1.c b/src/mame/video/atarig1.c
index d7d34335ad1..2d1c144a191 100644
--- a/src/mame/video/atarig1.c
+++ b/src/mame/video/atarig1.c
@@ -151,7 +151,7 @@ void atarig1_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( atarig1 )
+SCREEN_UPDATE_IND16( atarig1 )
{
atarig1_state *state = screen.machine().driver_data<atarig1_state>();
diff --git a/src/mame/video/atarig42.c b/src/mame/video/atarig42.c
index 997ad1169ea..abcd53be806 100644
--- a/src/mame/video/atarig42.c
+++ b/src/mame/video/atarig42.c
@@ -180,10 +180,10 @@ void atarig42_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( atarig42 )
+SCREEN_UPDATE_IND16( atarig42 )
{
atarig42_state *state = screen.machine().driver_data<atarig42_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
/* draw the playfield */
priority_bitmap.fill(0, cliprect);
@@ -198,7 +198,7 @@ SCREEN_UPDATE( atarig42 )
/* copy the motion objects on top */
{
- bitmap_t *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
+ bitmap_ind16 *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
int left = cliprect.min_x;
int top = cliprect.min_y;
int right = cliprect.max_x + 1;
diff --git a/src/mame/video/atarigt.c b/src/mame/video/atarigt.c
index 56110bb9b23..9a4c7842c49 100644
--- a/src/mame/video/atarigt.c
+++ b/src/mame/video/atarigt.c
@@ -98,8 +98,8 @@ VIDEO_START( atarigt )
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_pf_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_an_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_pf_bitmap = auto_bitmap_ind16_alloc(machine, width, height);
+ state->m_an_bitmap = auto_bitmap_ind16_alloc(machine, width, height);
/* map pens 1:1 */
substitute_pens = auto_alloc_array(machine, pen_t, 65536);
@@ -506,11 +506,11 @@ PrimRage GALs:
*/
-SCREEN_UPDATE( atarigt )
+SCREEN_UPDATE_RGB32( atarigt )
{
atarigt_state *state = screen.machine().driver_data<atarigt_state>();
- bitmap_t *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
- bitmap_t *tm_bitmap = atarirle_get_vram(state->m_rle, 1);
+ bitmap_ind16 *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
+ bitmap_ind16 *tm_bitmap = atarirle_get_vram(state->m_rle, 1);
UINT16 *cram, *tram;
int color_latch;
UINT32 *mram;
diff --git a/src/mame/video/atarigx2.c b/src/mame/video/atarigx2.c
index 7fa38cb31c1..7a41f2a4af6 100644
--- a/src/mame/video/atarigx2.c
+++ b/src/mame/video/atarigx2.c
@@ -178,10 +178,10 @@ void atarigx2_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( atarigx2 )
+SCREEN_UPDATE_IND16( atarigx2 )
{
atarigx2_state *state = screen.machine().driver_data<atarigx2_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
/* draw the playfield */
priority_bitmap.fill(0, cliprect);
@@ -196,7 +196,7 @@ SCREEN_UPDATE( atarigx2 )
/* copy the motion objects on top */
{
- bitmap_t *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
+ bitmap_ind16 *mo_bitmap = atarirle_get_vram(state->m_rle, 0);
int left = cliprect.min_x;
int top = cliprect.min_y;
int right = cliprect.max_x + 1;
diff --git a/src/mame/video/atarimo.c b/src/mame/video/atarimo.c
index 3da77ae79ca..87065b02f00 100644
--- a/src/mame/video/atarimo.c
+++ b/src/mame/video/atarimo.c
@@ -37,7 +37,7 @@ public:
gfx_element * gfxelement[MAX_GFX_ELEMENTS]; /* local copy of graphics elements */
int gfxgranularity[MAX_GFX_ELEMENTS];
- bitmap_t *bitmap; /* temporary bitmap to render to */
+ bitmap_ind16 *bitmap; /* temporary bitmap to render to */
int linked; /* are the entries linked? */
int split; /* are entries split or together? */
@@ -401,7 +401,7 @@ void atarimo_init(running_machine &machine, int map, const atarimo_desc *desc)
mo->slip_ram = auto_alloc_array_clear(machine, UINT16, 0x80);
/* allocate the temp bitmap */
- mo->bitmap = auto_bitmap_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height(), BITMAP_FORMAT_INDEXED16);
+ mo->bitmap = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
mo->bitmap->fill(desc->transpen);
/* allocate the spriteram */
@@ -636,7 +636,7 @@ static void convert_dirty_grid_to_rects(atarimo_data *mo, const rectangle &clipr
destination bitmap.
---------------------------------------------------------------*/
-bitmap_t *atarimo_render(int map, const rectangle &cliprect, atarimo_rect_list *rectlist)
+bitmap_ind16 *atarimo_render(int map, const rectangle &cliprect, atarimo_rect_list *rectlist)
{
atarimo_data *mo = atarimo[map];
int startband, stopband, band, i;
@@ -743,7 +743,7 @@ static int mo_render_object(atarimo_data *mo, const atarimo_entry *entry, const
{
int gfxindex = mo->gfxlookup[EXTRACT_DATA(entry, mo->gfxmask)];
const gfx_element *gfx = mo->gfxelement[gfxindex];
- bitmap_t &bitmap = *mo->bitmap;
+ bitmap_ind16 &bitmap = *mo->bitmap;
int x, y, sx, sy;
/* extract data from the various words */
@@ -1142,7 +1142,7 @@ WRITE16_HANDLER( atarimo_1_slipram_w )
or the end of line.
---------------------------------------------------------------*/
-void atarimo_mark_high_palette(bitmap_t &bitmap, UINT16 *pf, UINT16 *mo, int x, int y)
+void atarimo_mark_high_palette(bitmap_ind16 &bitmap, UINT16 *pf, UINT16 *mo, int x, int y)
{
#define START_MARKER ((4 << ATARIMO_PRIORITY_SHIFT) | 2)
#define END_MARKER ((4 << ATARIMO_PRIORITY_SHIFT) | 4)
diff --git a/src/mame/video/atarimo.h b/src/mame/video/atarimo.h
index 6a1b9cf4dc6..451b2e7c562 100644
--- a/src/mame/video/atarimo.h
+++ b/src/mame/video/atarimo.h
@@ -32,7 +32,7 @@
***************************************************************************/
/* callback for special processing */
-typedef int (*atarimo_special_func)(bitmap_t &bitmap, const rectangle &clip, int code, int color, int xpos, int ypos, rectangle *mobounds);
+typedef int (*atarimo_special_func)(bitmap_ind16 &bitmap, const rectangle &clip, int code, int color, int xpos, int ypos, rectangle *mobounds);
/* description for a four-word mask */
typedef struct _atarimo_entry atarimo_entry;
@@ -100,7 +100,7 @@ UINT8 *atarimo_get_color_lookup(int map, int *size);
UINT8 *atarimo_get_gfx_lookup(int map, int *size);
/* core processing */
-bitmap_t *atarimo_render(int map, const rectangle &cliprect, atarimo_rect_list *rectlist);
+bitmap_ind16 *atarimo_render(int map, const rectangle &cliprect, atarimo_rect_list *rectlist);
/* atrribute setters */
void atarimo_set_bank(int map, int bank);
@@ -127,7 +127,7 @@ WRITE16_HANDLER( atarimo_0_slipram_w );
WRITE16_HANDLER( atarimo_1_spriteram_w );
WRITE16_HANDLER( atarimo_1_slipram_w );
-void atarimo_mark_high_palette(bitmap_t &bitmap, UINT16 *pf, UINT16 *mo, int x, int y);
+void atarimo_mark_high_palette(bitmap_ind16 &bitmap, UINT16 *pf, UINT16 *mo, int x, int y);
#endif
diff --git a/src/mame/video/atarirle.c b/src/mame/video/atarirle.c
index 820297390a5..26c9c3eba38 100644
--- a/src/mame/video/atarirle.c
+++ b/src/mame/video/atarirle.c
@@ -89,7 +89,7 @@ struct atarirle_data
atarirle_info * info; /* list of info records */
atarirle_entry *spriteram; /* pointer to sprite RAM */
- bitmap_t * vram[2][2]; /* pointers to VRAM bitmaps and backbuffers */
+ bitmap_ind16 * vram[2][2]; /* pointers to VRAM bitmaps and backbuffers */
int partial_scanline; /* partial update scanline */
UINT8 control_bits; /* current control bits */
@@ -131,12 +131,12 @@ static int count_objects(const UINT16 *base, int length);
static void prescan_rle(const atarirle_data *mo, int which);
static void sort_and_render(running_machine &machine, atarirle_data *mo);
static void compute_checksum(atarirle_data *mo);
-static void draw_rle(atarirle_data *mo, bitmap_t &bitmap, int code, int color, int hflip, int vflip,
+static void draw_rle(atarirle_data *mo, bitmap_ind16 &bitmap, int code, int color, int hflip, int vflip,
int x, int y, int xscale, int yscale, const rectangle &clip);
-static void draw_rle_zoom(bitmap_t &bitmap, const atarirle_info *gfx,
+static void draw_rle_zoom(bitmap_ind16 &bitmap, const atarirle_info *gfx,
UINT32 palette, int sx, int sy, int scalex, int scaley,
const rectangle &clip);
-static void draw_rle_zoom_hflip(bitmap_t &bitmap, const atarirle_info *gfx,
+static void draw_rle_zoom_hflip(bitmap_ind16 &bitmap, const atarirle_info *gfx,
UINT32 palette, int sx, int sy, int scalex, int scaley,
const rectangle &clip);
@@ -338,16 +338,16 @@ static DEVICE_START( atarirle )
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- mo->vram[0][0] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- mo->vram[0][1] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ mo->vram[0][0] = auto_bitmap_ind16_alloc(machine, width, height);
+ mo->vram[0][1] = auto_bitmap_ind16_alloc(machine, width, height);
mo->vram[0][0]->fill(0);
mo->vram[0][1]->fill(0);
/* allocate alternate bitmaps if needed */
if (mo->vrammask.mask != 0)
{
- mo->vram[1][0] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- mo->vram[1][1] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ mo->vram[1][0] = auto_bitmap_ind16_alloc(machine, width, height);
+ mo->vram[1][1] = auto_bitmap_ind16_alloc(machine, width, height);
mo->vram[1][0]->fill(0);
mo->vram[1][1]->fill(0);
}
@@ -566,7 +566,7 @@ WRITE32_DEVICE_HANDLER( atarirle_spriteram32_w )
atarirle_get_vram: Return the VRAM bitmap.
---------------------------------------------------------------*/
-bitmap_t *atarirle_get_vram(device_t *device, int idx)
+bitmap_ind16 *atarirle_get_vram(device_t *device, int idx)
{
atarirle_data *mo = get_safe_token(device);
//logerror("atarirle_get_vram (frame %d)\n", (mo->control_bits & ATARIRLE_CONTROL_FRAME) >> 2);
@@ -775,8 +775,8 @@ static void compute_checksum(atarirle_data *mo)
static void sort_and_render(running_machine &machine, atarirle_data *mo)
{
- bitmap_t *bitmap1 = mo->vram[0][(~mo->control_bits & ATARIRLE_CONTROL_FRAME) >> 2];
- bitmap_t *bitmap2 = mo->vram[1][(~mo->control_bits & ATARIRLE_CONTROL_FRAME) >> 2];
+ bitmap_ind16 *bitmap1 = mo->vram[0][(~mo->control_bits & ATARIRLE_CONTROL_FRAME) >> 2];
+ bitmap_ind16 *bitmap2 = mo->vram[1][(~mo->control_bits & ATARIRLE_CONTROL_FRAME) >> 2];
atarirle_entry *obj = mo->spriteram;
mo_sort_entry sort_entry[256];
mo_sort_entry *list_head[256];
@@ -946,7 +946,7 @@ fprintf(stderr, " Sprite: c=%04X l=%04X h=%d X=%4d (o=%4d w=%3d) Y=%4d (o=%4d
object.
---------------------------------------------------------------*/
-void draw_rle(atarirle_data *mo, bitmap_t &bitmap, int code, int color, int hflip, int vflip,
+void draw_rle(atarirle_data *mo, bitmap_ind16 &bitmap, int code, int color, int hflip, int vflip,
int x, int y, int xscale, int yscale, const rectangle &clip)
{
UINT32 palettebase = mo->palettebase + color;
@@ -987,7 +987,7 @@ void draw_rle(atarirle_data *mo, bitmap_t &bitmap, int code, int color, int hfli
bitmap.
---------------------------------------------------------------*/
-void draw_rle_zoom(bitmap_t &bitmap, const atarirle_info *gfx,
+void draw_rle_zoom(bitmap_ind16 &bitmap, const atarirle_info *gfx,
UINT32 palette, int sx, int sy, int scalex, int scaley,
const rectangle &clip)
{
@@ -1177,7 +1177,7 @@ void draw_rle_zoom(bitmap_t &bitmap, const atarirle_info *gfx,
16-bit bitmap with horizontal flip.
---------------------------------------------------------------*/
-void draw_rle_zoom_hflip(bitmap_t &bitmap, const atarirle_info *gfx,
+void draw_rle_zoom_hflip(bitmap_ind16 &bitmap, const atarirle_info *gfx,
UINT32 palette, int sx, int sy, int scalex, int scaley,
const rectangle &clip)
{
diff --git a/src/mame/video/atarirle.h b/src/mame/video/atarirle.h
index 855d00e9327..cf3886641db 100644
--- a/src/mame/video/atarirle.h
+++ b/src/mame/video/atarirle.h
@@ -88,6 +88,6 @@ WRITE32_DEVICE_HANDLER( atarirle_spriteram32_w );
/* render helpers */
void atarirle_eof(device_t *device);
-bitmap_t *atarirle_get_vram(device_t *device, int idx);
+bitmap_ind16 *atarirle_get_vram(device_t *device, int idx);
#endif
diff --git a/src/mame/video/atarisy1.c b/src/mame/video/atarisy1.c
index 8a2b71fea2a..e118bd2bdac 100644
--- a/src/mame/video/atarisy1.c
+++ b/src/mame/video/atarisy1.c
@@ -500,11 +500,11 @@ static void update_timers(running_machine &machine, int scanline)
*
*************************************/
-SCREEN_UPDATE( atarisy1 )
+SCREEN_UPDATE_IND16( atarisy1 )
{
atarisy1_state *state = screen.machine().driver_data<atarisy1_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/atarisy2.c b/src/mame/video/atarisy2.c
index d6d29e93e29..4f8409d9cd7 100644
--- a/src/mame/video/atarisy2.c
+++ b/src/mame/video/atarisy2.c
@@ -318,12 +318,12 @@ WRITE16_HANDLER( atarisy2_videoram_w )
*
*************************************/
-SCREEN_UPDATE( atarisy2 )
+SCREEN_UPDATE_IND16( atarisy2 )
{
atarisy2_state *state = screen.machine().driver_data<atarisy2_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/atetris.c b/src/mame/video/atetris.c
index 1813755ee67..e26283f4e8c 100644
--- a/src/mame/video/atetris.c
+++ b/src/mame/video/atetris.c
@@ -64,7 +64,7 @@ VIDEO_START( atetris )
*
*************************************/
-SCREEN_UPDATE( atetris )
+SCREEN_UPDATE_IND16( atetris )
{
atetris_state *state = screen.machine().driver_data<atetris_state>();
diff --git a/src/mame/video/badlands.c b/src/mame/video/badlands.c
index 2a74bf530eb..e1488760608 100644
--- a/src/mame/video/badlands.c
+++ b/src/mame/video/badlands.c
@@ -111,11 +111,11 @@ WRITE16_HANDLER( badlands_pf_bank_w )
*
*************************************/
-SCREEN_UPDATE( badlands )
+SCREEN_UPDATE_IND16( badlands )
{
badlands_state *state = screen.machine().driver_data<badlands_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/bagman.c b/src/mame/video/bagman.c
index 329b3ff202f..4d45053d688 100644
--- a/src/mame/video/bagman.c
+++ b/src/mame/video/bagman.c
@@ -111,7 +111,7 @@ VIDEO_START( bagman )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bagman_state *state = machine.driver_data<bagman_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -146,7 +146,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( bagman )
+SCREEN_UPDATE_IND16( bagman )
{
bagman_state *state = screen.machine().driver_data<bagman_state>();
bitmap.fill(0, cliprect);
diff --git a/src/mame/video/balsente.c b/src/mame/video/balsente.c
index b05a1e864ad..8a512de0c8a 100644
--- a/src/mame/video/balsente.c
+++ b/src/mame/video/balsente.c
@@ -126,7 +126,7 @@ WRITE8_HANDLER( shrike_sprite_select_w )
*
*************************************/
-static void draw_one_sprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *sprite)
+static void draw_one_sprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *sprite)
{
balsente_state *state = machine.driver_data<balsente_state>();
int flags = sprite[0];
@@ -210,7 +210,7 @@ static void draw_one_sprite(running_machine &machine, bitmap_t &bitmap, const re
*
*************************************/
-SCREEN_UPDATE( balsente )
+SCREEN_UPDATE_IND16( balsente )
{
balsente_state *state = screen.machine().driver_data<balsente_state>();
const pen_t *pens = &screen.machine().pens[state->m_palettebank_vis * 256];
diff --git a/src/mame/video/bankp.c b/src/mame/video/bankp.c
index 926441298db..d15403996e1 100644
--- a/src/mame/video/bankp.c
+++ b/src/mame/video/bankp.c
@@ -173,7 +173,7 @@ VIDEO_START( bankp )
state->save_item(NAME(state->m_priority));
}
-SCREEN_UPDATE( bankp )
+SCREEN_UPDATE_IND16( bankp )
{
bankp_state *state = screen.machine().driver_data<bankp_state>();
diff --git a/src/mame/video/baraduke.c b/src/mame/video/baraduke.c
index b22b26e0603..9840da91e27 100644
--- a/src/mame/video/baraduke.c
+++ b/src/mame/video/baraduke.c
@@ -217,7 +217,7 @@ WRITE8_HANDLER( baraduke_spriteram_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int sprite_priority)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int sprite_priority)
{
baraduke_state *state = machine.driver_data<baraduke_state>();
UINT8 *spriteram = state->m_spriteram + 0x1800;
@@ -312,7 +312,7 @@ static void set_scroll(running_machine &machine, int layer)
}
-SCREEN_UPDATE( baraduke )
+SCREEN_UPDATE_IND16( baraduke )
{
baraduke_state *state = screen.machine().driver_data<baraduke_state>();
UINT8 *spriteram = state->m_spriteram + 0x1800;
diff --git a/src/mame/video/batman.c b/src/mame/video/batman.c
index 543312c2666..b96e4d35927 100644
--- a/src/mame/video/batman.c
+++ b/src/mame/video/batman.c
@@ -194,12 +194,12 @@ void batman_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( batman )
+SCREEN_UPDATE_IND16( batman )
{
batman_state *state = screen.machine().driver_data<batman_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/battlane.c b/src/mame/video/battlane.c
index 34597a14531..92b72f10680 100644
--- a/src/mame/video/battlane.c
+++ b/src/mame/video/battlane.c
@@ -84,11 +84,11 @@ WRITE8_HANDLER( battlane_bitmap_w )
{
if (data & 1 << i)
{
- state->m_screen_bitmap->pix8(offset % 0x100, (offset / 0x100) * 8 + i) |= orval;
+ state->m_screen_bitmap.pix8(offset % 0x100, (offset / 0x100) * 8 + i) |= orval;
}
else
{
- state->m_screen_bitmap->pix8(offset % 0x100, (offset / 0x100) * 8 + i) &= ~orval;
+ state->m_screen_bitmap.pix8(offset % 0x100, (offset / 0x100) * 8 + i) &= ~orval;
}
}
}
@@ -145,10 +145,10 @@ VIDEO_START( battlane )
{
battlane_state *state = machine.driver_data<battlane_state>();
state->m_bg_tilemap = tilemap_create(machine, get_tile_info_bg, battlane_tilemap_scan_rows_2x2, 16, 16, 32, 32);
- state->m_screen_bitmap = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
+ state->m_screen_bitmap.allocate(32 * 8, 32 * 8);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
battlane_state *state = machine.driver_data<battlane_state>();
int offs, attr, code, color, sx, sy, flipx, flipy, dy;
@@ -212,7 +212,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_fg_bitmap( running_machine &machine, bitmap_t &bitmap )
+static void draw_fg_bitmap( running_machine &machine, bitmap_ind16 &bitmap )
{
battlane_state *state = machine.driver_data<battlane_state>();
int x, y, data;
@@ -221,7 +221,7 @@ static void draw_fg_bitmap( running_machine &machine, bitmap_t &bitmap )
{
for (x = 0; x < 32 * 8; x++)
{
- data = state->m_screen_bitmap->pix8(y, x);
+ data = state->m_screen_bitmap.pix8(y, x);
if (data)
{
@@ -234,7 +234,7 @@ static void draw_fg_bitmap( running_machine &machine, bitmap_t &bitmap )
}
}
-SCREEN_UPDATE( battlane )
+SCREEN_UPDATE_IND16( battlane )
{
battlane_state *state = screen.machine().driver_data<battlane_state>();
diff --git a/src/mame/video/battlera.c b/src/mame/video/battlera.c
index 864919a1820..61881ace3fa 100644
--- a/src/mame/video/battlera.c
+++ b/src/mame/video/battlera.c
@@ -23,8 +23,8 @@ VIDEO_START( battlera )
memset(state->m_HuC6270_vram,0,0x20000);
memset(state->m_vram_dirty,1,0x1000);
- state->m_tile_bitmap=auto_bitmap_alloc(machine,512,512,machine.primary_screen->format());
- state->m_front_bitmap=auto_bitmap_alloc(machine,512,512,machine.primary_screen->format());
+ state->m_tile_bitmap=auto_bitmap_ind16_alloc(machine,512,512);
+ state->m_front_bitmap=auto_bitmap_ind16_alloc(machine,512,512);
state->m_vram_ptr=0;
state->m_inc_value=1;
@@ -241,7 +241,7 @@ WRITE8_HANDLER( HuC6270_data_w )
/******************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &clip,int pri)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &clip,int pri)
{
battlera_state *state = machine.driver_data<battlera_state>();
int offs,my,mx,code,code2,fx,fy,cgy=0,cgx,colour,i,yinc;
@@ -306,7 +306,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
/******************************************************************************/
-SCREEN_UPDATE( battlera )
+SCREEN_UPDATE_IND16( battlera )
{
battlera_state *state = screen.machine().driver_data<battlera_state>();
int offs,code,scrollx,scrolly,mx,my;
diff --git a/src/mame/video/battlex.c b/src/mame/video/battlex.c
index b7cb7cf7720..a23c362586d 100644
--- a/src/mame/video/battlex.c
+++ b/src/mame/video/battlex.c
@@ -64,7 +64,7 @@ VIDEO_START( battlex )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
battlex_state *state = machine.driver_data<battlex_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -95,7 +95,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE(battlex)
+SCREEN_UPDATE_IND16(battlex)
{
battlex_state *state = screen.machine().driver_data<battlex_state>();
diff --git a/src/mame/video/battlnts.c b/src/mame/video/battlnts.c
index a934b28e057..b4ce2cd0504 100644
--- a/src/mame/video/battlnts.c
+++ b/src/mame/video/battlnts.c
@@ -43,7 +43,7 @@ WRITE8_HANDLER( battlnts_spritebank_w )
***************************************************************************/
-SCREEN_UPDATE( battlnts )
+SCREEN_UPDATE_IND16( battlnts )
{
battlnts_state *state = screen.machine().driver_data<battlnts_state>();
diff --git a/src/mame/video/bbusters.c b/src/mame/video/bbusters.c
index d16a9a1a714..105477022d3 100644
--- a/src/mame/video/bbusters.c
+++ b/src/mame/video/bbusters.c
@@ -156,7 +156,7 @@ INLINE const UINT8 *get_source_ptr(gfx_element *gfx, UINT32 sprite, int dx, int
return gfx_element_get_data(gfx, (sprite+code) % gfx->total_elements) + ((dy%16) * gfx->line_modulo);
}
-static void bbusters_draw_block(running_machine &machine, bitmap_t &dest,int x,int y,int size,int flipx,int flipy,UINT32 sprite,int color,int bank,int block)
+static void bbusters_draw_block(running_machine &machine, bitmap_ind16 &dest,int x,int y,int size,int flipx,int flipy,UINT32 sprite,int color,int bank,int block)
{
bbusters_state *state = machine.driver_data<bbusters_state>();
gfx_element *gfx = machine.gfx[bank];
@@ -203,7 +203,7 @@ static void bbusters_draw_block(running_machine &machine, bitmap_t &dest,int x,i
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const UINT16 *source, int bank, int colval, int colmask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const UINT16 *source, int bank, int colval, int colmask)
{
bbusters_state *state = machine.driver_data<bbusters_state>();
const UINT8 *scale_table=machine.region("user1")->base();
@@ -279,7 +279,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const UINT1
/******************************************************************************/
-SCREEN_UPDATE( bbuster )
+SCREEN_UPDATE_IND16( bbuster )
{
bbusters_state *state = screen.machine().driver_data<bbusters_state>();
@@ -297,7 +297,7 @@ SCREEN_UPDATE( bbuster )
return 0;
}
-SCREEN_UPDATE( mechatt )
+SCREEN_UPDATE_IND16( mechatt )
{
bbusters_state *state = screen.machine().driver_data<bbusters_state>();
diff --git a/src/mame/video/beathead.c b/src/mame/video/beathead.c
index 515618ac07a..35b4b3e389b 100644
--- a/src/mame/video/beathead.c
+++ b/src/mame/video/beathead.c
@@ -154,7 +154,7 @@ WRITE32_MEMBER( beathead_state::hsync_ram_w )
*
*************************************/
-bool beathead_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 beathead_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 *videoram = reinterpret_cast<UINT8 *>(m_videoram);
int x, y;
diff --git a/src/mame/video/beezer.c b/src/mame/video/beezer.c
index 00c8e06732a..7767ddabe8a 100644
--- a/src/mame/video/beezer.c
+++ b/src/mame/video/beezer.c
@@ -19,7 +19,7 @@ TIMER_DEVICE_CALLBACK( beezer_interrupt )
#endif
}
-SCREEN_UPDATE( beezer )
+SCREEN_UPDATE_IND16( beezer )
{
beezer_state *state = screen.machine().driver_data<beezer_state>();
UINT8 *videoram = state->m_videoram;
diff --git a/src/mame/video/bfm_adr2.c b/src/mame/video/bfm_adr2.c
index 04a285e9ee6..f8a78419dc2 100644
--- a/src/mame/video/bfm_adr2.c
+++ b/src/mame/video/bfm_adr2.c
@@ -214,7 +214,7 @@ VIDEO_START( adder2 )
}
// video update ///////////////////////////////////////////////////////////
-SCREEN_UPDATE( adder2 )
+SCREEN_UPDATE_IND16( adder2 )
{
const rectangle visible1(0, 400-1, 0, 280-1); //minx,maxx, miny,maxy
diff --git a/src/mame/video/bfm_adr2.h b/src/mame/video/bfm_adr2.h
index 03eefc36122..f00f100dac4 100644
--- a/src/mame/video/bfm_adr2.h
+++ b/src/mame/video/bfm_adr2.h
@@ -15,7 +15,7 @@ ADDRESS_MAP_EXTERN( adder2_memmap, 8 );
VIDEO_START( adder2 );
VIDEO_RESET( adder2 );
-SCREEN_UPDATE( adder2 );
+SCREEN_UPDATE_IND16( adder2 );
PALETTE_INIT( adder2 );
#endif
diff --git a/src/mame/video/bigevglf.c b/src/mame/video/bigevglf.c
index 54dcf750618..88fe7ad4885 100644
--- a/src/mame/video/bigevglf.c
+++ b/src/mame/video/bigevglf.c
@@ -45,7 +45,7 @@ WRITE8_HANDLER( bigevglf_vidram_w )
state->m_vidram[o + 0x10000 * state->m_plane_selected] = data;
y = o >>8;
x = (o & 255);
- state->m_tmp_bitmap[state->m_plane_selected]->pix16(y, x) = data;
+ state->m_tmp_bitmap[state->m_plane_selected].pix16(y, x) = data;
}
READ8_HANDLER( bigevglf_vidram_r )
@@ -58,21 +58,21 @@ VIDEO_START( bigevglf )
{
bigevglf_state *state = machine.driver_data<bigevglf_state>();
- state->m_tmp_bitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmp_bitmap[1] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmp_bitmap[2] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmp_bitmap[3] = machine.primary_screen->alloc_compatible_bitmap();
- state->save_item(NAME(*state->m_tmp_bitmap[0]));
- state->save_item(NAME(*state->m_tmp_bitmap[1]));
- state->save_item(NAME(*state->m_tmp_bitmap[2]));
- state->save_item(NAME(*state->m_tmp_bitmap[3]));
+ state->m_tmp_bitmap[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmp_bitmap[1].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmp_bitmap[2].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmp_bitmap[3].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->save_item(NAME(state->m_tmp_bitmap[0]));
+ state->save_item(NAME(state->m_tmp_bitmap[1]));
+ state->save_item(NAME(state->m_tmp_bitmap[2]));
+ state->save_item(NAME(state->m_tmp_bitmap[3]));
state->m_vidram = auto_alloc_array(machine, UINT8, 0x100 * 0x100 * 4);
state->save_pointer(NAME(state->m_vidram), 0x100 * 0x100 * 4);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
bigevglf_state *state = machine.driver_data<bigevglf_state>();
int i, j;
@@ -91,11 +91,11 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( bigevglf )
+SCREEN_UPDATE_IND16( bigevglf )
{
bigevglf_state *state = screen.machine().driver_data<bigevglf_state>();
- copybitmap(bitmap, *state->m_tmp_bitmap[state->m_plane_visible], 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_tmp_bitmap[state->m_plane_visible], 0, 0, 0, 0, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/bigstrkb.c b/src/mame/video/bigstrkb.c
index c6dfb6a1e06..66d6d763b5f 100644
--- a/src/mame/video/bigstrkb.c
+++ b/src/mame/video/bigstrkb.c
@@ -6,7 +6,7 @@
/* Sprites */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*- SPR RAM Format -**
@@ -128,7 +128,7 @@ VIDEO_START(bigstrkb)
tilemap_set_transparent_pen(state->m_tilemap3,15);
}
-SCREEN_UPDATE(bigstrkb)
+SCREEN_UPDATE_IND16(bigstrkb)
{
bigstrkb_state *state = screen.machine().driver_data<bigstrkb_state>();
diff --git a/src/mame/video/bionicc.c b/src/mame/video/bionicc.c
index 62f524bc597..2f66d01995e 100644
--- a/src/mame/video/bionicc.c
+++ b/src/mame/video/bionicc.c
@@ -207,7 +207,7 @@ WRITE16_HANDLER( bionicc_gfxctrl_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
// bionicc_state *state = machine.driver_data<bionicc_state>();
@@ -246,7 +246,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( bionicc )
+SCREEN_UPDATE_IND16( bionicc )
{
bionicc_state *state = screen.machine().driver_data<bionicc_state>();
diff --git a/src/mame/video/bishi.c b/src/mame/video/bishi.c
index b3467ae78f2..d194fb19375 100644
--- a/src/mame/video/bishi.c
+++ b/src/mame/video/bishi.c
@@ -44,7 +44,7 @@ VIDEO_START( bishi )
state->m_layer_colorbase[3] = 0xc0;
}
-SCREEN_UPDATE(bishi)
+SCREEN_UPDATE_RGB32(bishi)
{
bishi_state *state = screen.machine().driver_data<bishi_state>();
int layers[4], layerpri[4], i;/*, old;*/
diff --git a/src/mame/video/bking.c b/src/mame/video/bking.c
index 63246383409..8d52839527f 100644
--- a/src/mame/video/bking.c
+++ b/src/mame/video/bking.c
@@ -241,15 +241,15 @@ VIDEO_START( bking )
{
bking_state *state = machine.driver_data<bking_state>();
state->m_bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
- state->m_tmp_bitmap1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmp_bitmap2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmp_bitmap1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmp_bitmap2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_tmp_bitmap1));
- state->save_item(NAME(*state->m_tmp_bitmap2));
+ state->save_item(NAME(state->m_tmp_bitmap1));
+ state->save_item(NAME(state->m_tmp_bitmap2));
}
-SCREEN_UPDATE( bking )
+SCREEN_UPDATE_IND16( bking )
{
bking_state *state = screen.machine().driver_data<bking_state>();
@@ -293,7 +293,7 @@ SCREEN_EOF( bking )
xld = state->m_xld1;
yld = state->m_yld1;
- drawgfx_opaque(*state->m_tmp_bitmap2, rect, screen.machine().gfx[2],
+ drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[2],
state->m_ball1_pic,
0,
0, 0,
@@ -307,7 +307,7 @@ SCREEN_EOF( bking )
xld = state->m_xld2;
yld = state->m_yld2;
- drawgfx_opaque(*state->m_tmp_bitmap2, rect, screen.machine().gfx[3],
+ drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[3],
state->m_ball2_pic,
0,
0, 0,
@@ -319,7 +319,7 @@ SCREEN_EOF( bking )
tilemap_set_scrollx(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -xld : xld);
tilemap_set_scrolly(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -yld : yld);
- tilemap_draw(*state->m_tmp_bitmap1, rect, state->m_bg_tilemap, 0, 0);
+ tilemap_draw(state->m_tmp_bitmap1, rect, state->m_bg_tilemap, 0, 0);
tilemap_set_scrollx(state->m_bg_tilemap, 0, 0);
tilemap_set_scrolly(state->m_bg_tilemap, 0, 0);
@@ -333,8 +333,8 @@ SCREEN_EOF( bking )
for (y = rect.min_y; y <= rect.max_y; y++)
{
- const UINT16* p0 = &state->m_tmp_bitmap1->pix16(y);
- const UINT16* p1 = &state->m_tmp_bitmap2->pix16(y);
+ const UINT16* p0 = &state->m_tmp_bitmap1.pix16(y);
+ const UINT16* p1 = &state->m_tmp_bitmap2.pix16(y);
for (x = rect.min_x; x <= rect.max_x; x++)
{
diff --git a/src/mame/video/bladestl.c b/src/mame/video/bladestl.c
index b77206e271f..96d87737ae0 100644
--- a/src/mame/video/bladestl.c
+++ b/src/mame/video/bladestl.c
@@ -76,7 +76,7 @@ void bladestl_sprite_callback( running_machine &machine, int *code,int *color )
***************************************************************************/
-SCREEN_UPDATE( bladestl )
+SCREEN_UPDATE_IND16( bladestl )
{
bladestl_state *state = screen.machine().driver_data<bladestl_state>();
set_pens(screen.machine());
diff --git a/src/mame/video/blktiger.c b/src/mame/video/blktiger.c
index 78fadf1c60b..c2d44cd0dc2 100644
--- a/src/mame/video/blktiger.c
+++ b/src/mame/video/blktiger.c
@@ -199,7 +199,7 @@ WRITE8_HANDLER( blktiger_screen_layout_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
// blktiger_state *state = machine.driver_data<blktiger_state>();
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
@@ -230,7 +230,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( blktiger )
+SCREEN_UPDATE_IND16( blktiger )
{
blktiger_state *state = screen.machine().driver_data<blktiger_state>();
diff --git a/src/mame/video/blmbycar.c b/src/mame/video/blmbycar.c
index 9ded3af0cfd..8b85eef38de 100644
--- a/src/mame/video/blmbycar.c
+++ b/src/mame/video/blmbycar.c
@@ -165,7 +165,7 @@ VIDEO_START( blmbycar )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
blmbycar_state *state = machine.driver_data<blmbycar_state>();
UINT16 *source, *finish;
@@ -219,7 +219,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( blmbycar )
+SCREEN_UPDATE_IND16( blmbycar )
{
blmbycar_state *state = screen.machine().driver_data<blmbycar_state>();
int i, layers_ctrl = -1;
diff --git a/src/mame/video/blockade.c b/src/mame/video/blockade.c
index 3cfd6d73558..aa967d61960 100644
--- a/src/mame/video/blockade.c
+++ b/src/mame/video/blockade.c
@@ -28,7 +28,7 @@ VIDEO_START( blockade )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-SCREEN_UPDATE( blockade )
+SCREEN_UPDATE_IND16( blockade )
{
blockade_state *state = screen.machine().driver_data<blockade_state>();
diff --git a/src/mame/video/blockhl.c b/src/mame/video/blockhl.c
index 986ad74a62f..adbe6e50076 100644
--- a/src/mame/video/blockhl.c
+++ b/src/mame/video/blockhl.c
@@ -55,7 +55,7 @@ VIDEO_START( blockhl )
state_save_register_global_pointer(machine, machine.generic.paletteram.u8, 0x800);
}
-SCREEN_UPDATE( blockhl )
+SCREEN_UPDATE_IND16( blockhl )
{
blockhl_state *state = screen.machine().driver_data<blockhl_state>();
diff --git a/src/mame/video/blockout.c b/src/mame/video/blockout.c
index dd0d41f9cfa..07170d7548a 100644
--- a/src/mame/video/blockout.c
+++ b/src/mame/video/blockout.c
@@ -66,8 +66,8 @@ VIDEO_START( blockout )
blockout_state *state = machine.driver_data<blockout_state>();
/* Allocate temporary bitmaps */
- state->m_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->save_item(NAME(*state->m_tmpbitmap));
+ state->m_tmpbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->save_item(NAME(state->m_tmpbitmap));
}
static void update_pixels( running_machine &machine, int x, int y )
@@ -88,14 +88,14 @@ static void update_pixels( running_machine &machine, int x, int y )
else
color = (back >> 8) + 256;
- state->m_tmpbitmap->pix16(y, x) = color;
+ state->m_tmpbitmap.pix16(y, x) = color;
if (front & 0xff)
color = front & 0xff;
else
color = (back & 0xff) + 256;
- state->m_tmpbitmap->pix16(y, x + 1) = color;
+ state->m_tmpbitmap.pix16(y, x + 1) = color;
}
@@ -110,13 +110,13 @@ WRITE16_HANDLER( blockout_videoram_w )
-SCREEN_UPDATE( blockout )
+SCREEN_UPDATE_IND16( blockout )
{
blockout_state *state = screen.machine().driver_data<blockout_state>();
int x, y;
pen_t color = 512;
- copybitmap(bitmap, *state->m_tmpbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_tmpbitmap, 0, 0, 0, 0, cliprect);
for (y = 0; y < 256; y++)
{
diff --git a/src/mame/video/bloodbro.c b/src/mame/video/bloodbro.c
index 695f26c0d9a..04dbf331307 100644
--- a/src/mame/video/bloodbro.c
+++ b/src/mame/video/bloodbro.c
@@ -145,7 +145,7 @@ WRITE16_HANDLER( bloodbro_txvideoram_w )
-------X XXXXXXXX
-------- YYYYYYYY */
-static void bloodbro_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void bloodbro_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bloodbro_state *state = machine.driver_data<bloodbro_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -194,7 +194,7 @@ static void bloodbro_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
-------X XXXXXXXX
*/
-static void weststry_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void weststry_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bloodbro_state *state = machine.driver_data<bloodbro_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -232,7 +232,7 @@ static void weststry_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
-SCREEN_UPDATE( bloodbro )
+SCREEN_UPDATE_IND16( bloodbro )
{
bloodbro_state *state = screen.machine().driver_data<bloodbro_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_scroll[0x10]); /* ? */
@@ -249,7 +249,7 @@ SCREEN_UPDATE( bloodbro )
return 0;
}
-SCREEN_UPDATE( weststry )
+SCREEN_UPDATE_IND16( weststry )
{
bloodbro_state *state = screen.machine().driver_data<bloodbro_state>();
// tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_scroll[0x10]); /* ? */
@@ -267,7 +267,7 @@ SCREEN_UPDATE( weststry )
}
-SCREEN_UPDATE( skysmash )
+SCREEN_UPDATE_IND16( skysmash )
{
bloodbro_state *state = screen.machine().driver_data<bloodbro_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_scroll[0x08]);
diff --git a/src/mame/video/blstroid.c b/src/mame/video/blstroid.c
index 1e052ef23e2..9dc488476a5 100644
--- a/src/mame/video/blstroid.c
+++ b/src/mame/video/blstroid.c
@@ -144,11 +144,11 @@ void blstroid_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( blstroid )
+SCREEN_UPDATE_IND16( blstroid )
{
blstroid_state *state = screen.machine().driver_data<blstroid_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/blueprnt.c b/src/mame/video/blueprnt.c
index e11ab89354c..769dab4c5ee 100644
--- a/src/mame/video/blueprnt.c
+++ b/src/mame/video/blueprnt.c
@@ -98,7 +98,7 @@ VIDEO_START( blueprnt )
state->save_item(NAME(state->m_gfx_bank));
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
blueprnt_state *state = machine.driver_data<blueprnt_state>();
int offs;
@@ -124,7 +124,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( blueprnt )
+SCREEN_UPDATE_IND16( blueprnt )
{
blueprnt_state *state = screen.machine().driver_data<blueprnt_state>();
int i;
diff --git a/src/mame/video/bogeyman.c b/src/mame/video/bogeyman.c
index 2600e31d6be..461df52400f 100644
--- a/src/mame/video/bogeyman.c
+++ b/src/mame/video/bogeyman.c
@@ -104,7 +104,7 @@ VIDEO_START( bogeyman )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
bogeyman_state *state = machine.driver_data<bogeyman_state>();
int offs;
@@ -151,7 +151,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( bogeyman )
+SCREEN_UPDATE_IND16( bogeyman )
{
bogeyman_state *state = screen.machine().driver_data<bogeyman_state>();
diff --git a/src/mame/video/bombjack.c b/src/mame/video/bombjack.c
index c481f7b444d..8f144618c60 100644
--- a/src/mame/video/bombjack.c
+++ b/src/mame/video/bombjack.c
@@ -75,7 +75,7 @@ VIDEO_START( bombjack )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
bombjack_state *state = machine.driver_data<bombjack_state>();
int offs;
@@ -133,7 +133,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( bombjack )
+SCREEN_UPDATE_IND16( bombjack )
{
bombjack_state *state = screen.machine().driver_data<bombjack_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/boogwing.c b/src/mame/video/boogwing.c
index e27a82de9b6..3632368e00e 100644
--- a/src/mame/video/boogwing.c
+++ b/src/mame/video/boogwing.c
@@ -3,7 +3,7 @@
#include "video/deco16ic.h"
#include "video/decocomn.h"
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram_base, int gfx_region )
+static void draw_sprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16* spriteram_base, int gfx_region )
{
boogwing_state *state = machine.driver_data<boogwing_state>();
int offs;
@@ -138,7 +138,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( boogwing )
+SCREEN_UPDATE_RGB32( boogwing )
{
boogwing_state *state = screen.machine().driver_data<boogwing_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
diff --git a/src/mame/video/bosco.c b/src/mame/video/bosco.c
index 2913a8993c9..619a8ccf301 100644
--- a/src/mame/video/bosco.c
+++ b/src/mame/video/bosco.c
@@ -189,7 +189,7 @@ WRITE8_HANDLER( bosco_starclr_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 *spriteram = machine.generic.spriteram.u8;
UINT8 *spriteram_2 = machine.generic.spriteram2.u8;
@@ -219,7 +219,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
bosco_state *state = machine.driver_data<bosco_state>();
int offs;
@@ -244,7 +244,7 @@ static void draw_bullets(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int flip)
+static void draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip)
{
bosco_state *state = machine.driver_data<bosco_state>();
@@ -280,7 +280,7 @@ static void draw_stars(running_machine &machine, bitmap_t &bitmap, const rectang
}
-SCREEN_UPDATE( bosco )
+SCREEN_UPDATE_IND16( bosco )
{
bosco_state *state = screen.machine().driver_data<bosco_state>();
diff --git a/src/mame/video/bottom9.c b/src/mame/video/bottom9.c
index 7c7a5b85848..e14ea5f9bcb 100644
--- a/src/mame/video/bottom9.c
+++ b/src/mame/video/bottom9.c
@@ -73,7 +73,7 @@ VIDEO_START( bottom9 )
***************************************************************************/
-SCREEN_UPDATE( bottom9 )
+SCREEN_UPDATE_IND16( bottom9 )
{
bottom9_state *state = screen.machine().driver_data<bottom9_state>();
diff --git a/src/mame/video/brkthru.c b/src/mame/video/brkthru.c
index 6c2ad0ac6c8..02db2be83d3 100644
--- a/src/mame/video/brkthru.c
+++ b/src/mame/video/brkthru.c
@@ -156,7 +156,7 @@ WRITE8_HANDLER( brkthru_1800_w )
#if 0
-static void show_register( bitmap_t &bitmap, int x, int y, UINT32 data )
+static void show_register( bitmap_ind16 &bitmap, int x, int y, UINT32 data )
{
char buf[5];
@@ -166,7 +166,7 @@ static void show_register( bitmap_t &bitmap, int x, int y, UINT32 data )
#endif
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int prio )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int prio )
{
brkthru_state *state = machine.driver_data<brkthru_state>();
int offs;
@@ -250,7 +250,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( brkthru )
+SCREEN_UPDATE_IND16( brkthru )
{
brkthru_state *state = screen.machine().driver_data<brkthru_state>();
diff --git a/src/mame/video/bsktball.c b/src/mame/video/bsktball.c
index 9e8e76d6143..3e418c1ebea 100644
--- a/src/mame/video/bsktball.c
+++ b/src/mame/video/bsktball.c
@@ -33,7 +33,7 @@ VIDEO_START( bsktball )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
bsktball_state *state = machine.driver_data<bsktball_state>();
int mot;
@@ -53,7 +53,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rec
}
}
-SCREEN_UPDATE( bsktball )
+SCREEN_UPDATE_IND16( bsktball )
{
bsktball_state *state = screen.machine().driver_data<bsktball_state>();
diff --git a/src/mame/video/btime.c b/src/mame/video/btime.c
index 29ddf0dbb72..468858ed732 100644
--- a/src/mame/video/btime.c
+++ b/src/mame/video/btime.c
@@ -129,8 +129,7 @@ VIDEO_START( bnj )
/* the background area is twice as wide as the screen */
int width = 256;
int height = 256;
- bitmap_format format = machine.primary_screen->format();
- state->m_background_bitmap = auto_bitmap_alloc(machine, 2 * width, height, format);
+ state->m_background_bitmap = auto_bitmap_ind16_alloc(machine, 2 * width, height);
state->save_item(NAME(*state->m_background_bitmap));
@@ -301,7 +300,7 @@ WRITE8_HANDLER( disco_video_control_w )
}
-static void draw_chars( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 transparency, UINT8 color, int priority )
+static void draw_chars( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 transparency, UINT8 color, int priority )
{
btime_state *state = machine.driver_data<btime_state>();
offs_t offs;
@@ -332,7 +331,7 @@ static void draw_chars( running_machine &machine, bitmap_t &bitmap, const rectan
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 color,
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 color,
UINT8 sprite_y_adjust, UINT8 sprite_y_adjust_flip_screen,
UINT8 *sprite_ram, offs_t interleave )
{
@@ -382,7 +381,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8* tmap, UINT8 color )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* tmap, UINT8 color )
{
btime_state *state = machine.driver_data<btime_state>();
int i;
@@ -422,7 +421,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
}
-SCREEN_UPDATE( btime )
+SCREEN_UPDATE_IND16( btime )
{
btime_state *state = screen.machine().driver_data<btime_state>();
if (state->m_bnj_scroll1 & 0x10)
@@ -453,7 +452,7 @@ SCREEN_UPDATE( btime )
}
-SCREEN_UPDATE( eggs )
+SCREEN_UPDATE_IND16( eggs )
{
btime_state *state = screen.machine().driver_data<btime_state>();
draw_chars(screen.machine(), bitmap, cliprect, FALSE, 0, -1);
@@ -463,7 +462,7 @@ SCREEN_UPDATE( eggs )
}
-SCREEN_UPDATE( lnc )
+SCREEN_UPDATE_IND16( lnc )
{
btime_state *state = screen.machine().driver_data<btime_state>();
draw_chars(screen.machine(), bitmap, cliprect, FALSE, 0, -1);
@@ -473,7 +472,7 @@ SCREEN_UPDATE( lnc )
}
-SCREEN_UPDATE( zoar )
+SCREEN_UPDATE_IND16( zoar )
{
btime_state *state = screen.machine().driver_data<btime_state>();
if (state->m_bnj_scroll1 & 0x04)
@@ -492,7 +491,7 @@ SCREEN_UPDATE( zoar )
}
-SCREEN_UPDATE( bnj )
+SCREEN_UPDATE_IND16( bnj )
{
btime_state *state = screen.machine().driver_data<btime_state>();
if (state->m_bnj_scroll1)
@@ -542,7 +541,7 @@ SCREEN_UPDATE( bnj )
}
-SCREEN_UPDATE( cookrace )
+SCREEN_UPDATE_IND16( cookrace )
{
btime_state *state = screen.machine().driver_data<btime_state>();
int offs;
@@ -574,7 +573,7 @@ SCREEN_UPDATE( cookrace )
}
-SCREEN_UPDATE( disco )
+SCREEN_UPDATE_IND16( disco )
{
btime_state *state = screen.machine().driver_data<btime_state>();
draw_chars(screen.machine(), bitmap, cliprect, FALSE, state->m_btime_palette, -1);
diff --git a/src/mame/video/btoads.c b/src/mame/video/btoads.c
index 0b7694ea613..5484f35d085 100644
--- a/src/mame/video/btoads.c
+++ b/src/mame/video/btoads.c
@@ -316,7 +316,7 @@ void btoads_state::from_shiftreg(address_space *space, UINT32 address, UINT16 *s
*
*************************************/
-void btoads_state::scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void btoads_state::scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
UINT32 fulladdr = ((params->rowaddr << 16) | params->coladdr) >> 4;
UINT16 *bg0_base = &m_vram_bg0[(fulladdr + (m_yscroll0 << 10)) & 0x3fc00];
diff --git a/src/mame/video/bublbobl.c b/src/mame/video/bublbobl.c
index 35a8bccb7af..c22f3541f14 100644
--- a/src/mame/video/bublbobl.c
+++ b/src/mame/video/bublbobl.c
@@ -10,7 +10,7 @@
#include "includes/bublbobl.h"
-SCREEN_UPDATE( bublbobl )
+SCREEN_UPDATE_IND16( bublbobl )
{
bublbobl_state *state = screen.machine().driver_data<bublbobl_state>();
int offs;
diff --git a/src/mame/video/buggychl.c b/src/mame/video/buggychl.c
index 43f5f1becf4..87daff7ed27 100644
--- a/src/mame/video/buggychl.c
+++ b/src/mame/video/buggychl.c
@@ -15,11 +15,11 @@ PALETTE_INIT( buggychl )
VIDEO_START( buggychl )
{
buggychl_state *state = machine.driver_data<buggychl_state>();
- state->m_tmp_bitmap1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmp_bitmap2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmp_bitmap1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmp_bitmap2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_tmp_bitmap1));
- state->save_item(NAME(*state->m_tmp_bitmap2));
+ state->save_item(NAME(state->m_tmp_bitmap1));
+ state->save_item(NAME(state->m_tmp_bitmap2));
gfx_element_set_source(machine.gfx[0], state->m_charram);
}
@@ -80,7 +80,7 @@ WRITE8_HANDLER( buggychl_bg_scrollx_w )
}
-static void draw_sky( bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sky( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int x, y;
@@ -90,7 +90,7 @@ static void draw_sky( bitmap_t &bitmap, const rectangle &cliprect )
}
-static void draw_bg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
buggychl_state *state = machine.driver_data<buggychl_state>();
int offs;
@@ -113,7 +113,7 @@ static void draw_bg( running_machine &machine, bitmap_t &bitmap, const rectangle
if (flip_screen_y_get(machine))
sy = 31 - sy;
- drawgfx_opaque(*state->m_tmp_bitmap1, state->m_tmp_bitmap1->cliprect(), machine.gfx[0],
+ drawgfx_opaque(state->m_tmp_bitmap1, state->m_tmp_bitmap1.cliprect(), machine.gfx[0],
code,
2,
flip_screen_x_get(machine),flip_screen_y_get(machine),
@@ -124,17 +124,17 @@ static void draw_bg( running_machine &machine, bitmap_t &bitmap, const rectangle
for (offs = 0; offs < 256; offs++)
scroll[offs] = -state->m_scrollv[offs / 8];
- copyscrollbitmap(*state->m_tmp_bitmap2, *state->m_tmp_bitmap1, 1, &state->m_bg_scrollx, 256, scroll, state->m_tmp_bitmap2->cliprect());
+ copyscrollbitmap(state->m_tmp_bitmap2, state->m_tmp_bitmap1, 1, &state->m_bg_scrollx, 256, scroll, state->m_tmp_bitmap2.cliprect());
/* then copy to the screen doing row scroll */
for (offs = 0; offs < 256; offs++)
scroll[offs] = -state->m_scrollh[offs];
- copyscrollbitmap_trans(bitmap, *state->m_tmp_bitmap2, 256, scroll, 0, 0, clip, 32);
+ copyscrollbitmap_trans(bitmap, state->m_tmp_bitmap2, 256, scroll, 0, 0, clip, 32);
}
-static void draw_fg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_fg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
buggychl_state *state = machine.driver_data<buggychl_state>();
int offs;
@@ -163,7 +163,7 @@ static void draw_fg( running_machine &machine, bitmap_t &bitmap, const rectangle
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
buggychl_state *state = machine.driver_data<buggychl_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -236,7 +236,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( buggychl )
+SCREEN_UPDATE_IND16( buggychl )
{
buggychl_state *state = screen.machine().driver_data<buggychl_state>();
diff --git a/src/mame/video/bwing.c b/src/mame/video/bwing.c
index d91e478520e..9c0753bf50f 100644
--- a/src/mame/video/bwing.c
+++ b/src/mame/video/bwing.c
@@ -247,7 +247,7 @@ VIDEO_START( bwing )
//****************************************************************************
// Realtime
-static void draw_sprites( running_machine &machine, bitmap_t &bmp, const rectangle &clip, UINT8 *ram, int pri )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bmp, const rectangle &clip, UINT8 *ram, int pri )
{
bwing_state *state = machine.driver_data<bwing_state>();
int attrib, fx, fy, code, x, y, color, i;
@@ -289,7 +289,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bmp, const rectang
}
-SCREEN_UPDATE( bwing )
+SCREEN_UPDATE_IND16( bwing )
{
bwing_state *state = screen.machine().driver_data<bwing_state>();
unsigned x, y, shiftx;
diff --git a/src/mame/video/cabal.c b/src/mame/video/cabal.c
index f3050ae0dab..ca12e432e09 100644
--- a/src/mame/video/cabal.c
+++ b/src/mame/video/cabal.c
@@ -105,7 +105,7 @@ WRITE16_HANDLER( cabal_text_videoram16_w )
********************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cabal_state *state = machine.driver_data<cabal_state>();
int offs,data0,data1,data2;
@@ -146,7 +146,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( cabal )
+SCREEN_UPDATE_IND16( cabal )
{
cabal_state *state = screen.machine().driver_data<cabal_state>();
tilemap_draw(bitmap,cliprect,state->m_background_layer,TILEMAP_DRAW_OPAQUE,0);
diff --git a/src/mame/video/calomega.c b/src/mame/video/calomega.c
index e9792ba6196..32d8b74c702 100644
--- a/src/mame/video/calomega.c
+++ b/src/mame/video/calomega.c
@@ -63,7 +63,7 @@ VIDEO_START( calomega )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 31);
}
-SCREEN_UPDATE( calomega )
+SCREEN_UPDATE_IND16( calomega )
{
calomega_state *state = screen.machine().driver_data<calomega_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/canyon.c b/src/mame/video/canyon.c
index d333a968a57..e9eb21d14e1 100644
--- a/src/mame/video/canyon.c
+++ b/src/mame/video/canyon.c
@@ -33,7 +33,7 @@ VIDEO_START( canyon )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
canyon_state *state = machine.driver_data<canyon_state>();
int i;
@@ -55,7 +55,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_bombs( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bombs( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
canyon_state *state = machine.driver_data<canyon_state>();
int i;
@@ -82,7 +82,7 @@ static void draw_bombs( running_machine &machine, bitmap_t &bitmap, const rectan
}
-SCREEN_UPDATE( canyon )
+SCREEN_UPDATE_IND16( canyon )
{
canyon_state *state = screen.machine().driver_data<canyon_state>();
diff --git a/src/mame/video/capbowl.c b/src/mame/video/capbowl.c
index fd08e8de65f..1e733c05fe5 100644
--- a/src/mame/video/capbowl.c
+++ b/src/mame/video/capbowl.c
@@ -165,7 +165,7 @@ INLINE rgb_t pen_for_pixel( UINT8 *src, UINT8 pix )
}
-SCREEN_UPDATE( capbowl )
+SCREEN_UPDATE_RGB32( capbowl )
{
struct tms34061_display state;
int x, y;
diff --git a/src/mame/video/carjmbre.c b/src/mame/video/carjmbre.c
index 9174138396f..1f07ef80111 100644
--- a/src/mame/video/carjmbre.c
+++ b/src/mame/video/carjmbre.c
@@ -108,7 +108,7 @@ VIDEO_START( carjmbre )
state->save_item(NAME(state->m_bgcolor));
}
-SCREEN_UPDATE( carjmbre )
+SCREEN_UPDATE_IND16( carjmbre )
{
carjmbre_state *state = screen.machine().driver_data<carjmbre_state>();
int offs, troffs, sx, sy, flipx, flipy;
diff --git a/src/mame/video/carpolo.c b/src/mame/video/carpolo.c
index 3cde1cefa73..be7abffe459 100644
--- a/src/mame/video/carpolo.c
+++ b/src/mame/video/carpolo.c
@@ -143,15 +143,14 @@ PALETTE_INIT( carpolo )
VIDEO_START( carpolo )
{
carpolo_state *state = machine.driver_data<carpolo_state>();
- bitmap_format format = machine.primary_screen->format();
- state->m_sprite_sprite_collision_bitmap1 = auto_bitmap_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
- state->m_sprite_sprite_collision_bitmap2 = auto_bitmap_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
+ state->m_sprite_sprite_collision_bitmap1 = auto_bitmap_ind16_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
+ state->m_sprite_sprite_collision_bitmap2 = auto_bitmap_ind16_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
- state->m_sprite_goal_collision_bitmap1 = auto_bitmap_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
- state->m_sprite_goal_collision_bitmap2 = auto_bitmap_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
+ state->m_sprite_goal_collision_bitmap1 = auto_bitmap_ind16_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
+ state->m_sprite_goal_collision_bitmap2 = auto_bitmap_ind16_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
- state->m_sprite_border_collision_bitmap = auto_bitmap_alloc(machine, SPRITE_WIDTH, SPRITE_HEIGHT, format);
+ state->m_sprite_border_collision_bitmap = auto_bitmap_ind16_alloc(machine, SPRITE_WIDTH, SPRITE_HEIGHT);
state_save_register_global_bitmap(machine, state->m_sprite_sprite_collision_bitmap1);
state_save_register_global_bitmap(machine, state->m_sprite_sprite_collision_bitmap2);
@@ -167,7 +166,7 @@ VIDEO_START( carpolo )
*
*************************************/
-static void draw_alpha_line(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void draw_alpha_line(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
int alpha_line, int video_line)
{
carpolo_state *state = machine.driver_data<carpolo_state>();
@@ -198,7 +197,7 @@ static void remap_sprite_code(running_machine &machine, int bank, int code, int
}
-static void draw_sprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void draw_sprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
UINT8 x, UINT8 y, int bank, int code, int col)
{
int remapped_code, flipy;
@@ -221,7 +220,7 @@ static void draw_sprite(running_machine &machine, bitmap_t &bitmap, const rectan
}
-SCREEN_UPDATE( carpolo )
+SCREEN_UPDATE_IND16( carpolo )
{
carpolo_state *state = screen.machine().driver_data<carpolo_state>();
/* draw the playfield elements in the correct priority order */
diff --git a/src/mame/video/cave.c b/src/mame/video/cave.c
index 8de70f06357..bee22ba5c4a 100644
--- a/src/mame/video/cave.c
+++ b/src/mame/video/cave.c
@@ -745,9 +745,9 @@ static void sprite_init_cave( running_machine &machine )
}
state->m_sprite_zbuf_baseval = 0x10000 - MAX_SPRITE_NUM;
- state->m_sprite_zbuf = auto_bitmap_alloc(machine, screen_width, screen_height, BITMAP_FORMAT_INDEXED16);
- state->m_blit.baseaddr_zbuf = &state->m_sprite_zbuf->pix8(0);
- state->m_blit.line_offset_zbuf = state->m_sprite_zbuf->rowpixels() * state->m_sprite_zbuf->bpp() / 8;
+ state->m_sprite_zbuf.allocate(screen_width, screen_height);
+ state->m_blit.baseaddr_zbuf = &state->m_sprite_zbuf.pix8(0);
+ state->m_blit.line_offset_zbuf = state->m_sprite_zbuf.rowpixels() * state->m_sprite_zbuf.bpp() / 8;
state->m_num_sprites = state->m_spriteram_size / 0x10 / 2;
state->m_sprite = auto_alloc_array_clear(machine, struct sprite_cave, state->m_num_sprites);
@@ -755,7 +755,7 @@ static void sprite_init_cave( running_machine &machine )
memset(state->m_sprite_table, 0, sizeof(state->m_sprite_table));
state->m_sprite_draw = sprite_draw_donpachi;
- state->save_item(NAME(*state->m_sprite_zbuf));
+ state->save_item(NAME(state->m_sprite_zbuf));
state->save_item(NAME(state->m_sprite_zbuf_baseval));
state->save_item(NAME(state->m_num_sprites));
state->save_item(NAME(state->m_spriteram_bank));
@@ -827,7 +827,7 @@ static void cave_sprite_check( screen_device &screen, const rectangle &clip )
if (clip.min_y == visarea.min_y)
{
if(!(state->m_sprite_zbuf_baseval += MAX_SPRITE_NUM))
- state->m_sprite_zbuf->fill(0, visarea);
+ state->m_sprite_zbuf.fill(0, visarea);
}
break;
@@ -836,7 +836,7 @@ static void cave_sprite_check( screen_device &screen, const rectangle &clip )
if (clip.min_y == visarea.min_y)
{
if(!(state->m_sprite_zbuf_baseval += MAX_SPRITE_NUM))
- state->m_sprite_zbuf->fill(0, visarea);
+ state->m_sprite_zbuf.fill(0, visarea);
}
break;
@@ -1418,7 +1418,7 @@ static void sprite_draw_donpachi_zbuf( running_machine &machine, int priority )
***************************************************************************/
INLINE void cave_tilemap_draw(
- running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+ running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
UINT32 flags, UINT32 priority, UINT32 priority2, int GFX )
{
cave_state *state = machine.driver_data<cave_state>();
@@ -1540,7 +1540,7 @@ INLINE void cave_tilemap_draw(
}
-SCREEN_UPDATE( cave )
+SCREEN_UPDATE_IND16( cave )
{
cave_state *state = screen.machine().driver_data<cave_state>();
int pri, pri2, GFX;
@@ -1548,7 +1548,7 @@ SCREEN_UPDATE( cave )
set_pens(screen.machine());
- state->m_blit.baseaddr = &bitmap.pix8(0);
+ state->m_blit.baseaddr = reinterpret_cast<UINT8 *>(bitmap.raw_pixptr(0));
state->m_blit.line_offset = bitmap.rowpixels() * bitmap.bpp() / 8;
/* Choose the tilemap to display (8x8 tiles or 16x16 tiles) */
diff --git a/src/mame/video/cbasebal.c b/src/mame/video/cbasebal.c
index 6e85097af3e..c6a0252e8d0 100644
--- a/src/mame/video/cbasebal.c
+++ b/src/mame/video/cbasebal.c
@@ -144,7 +144,7 @@ WRITE8_HANDLER( cbasebal_scrolly_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cbasebal_state *state = machine.driver_data<cbasebal_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -178,7 +178,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( cbasebal )
+SCREEN_UPDATE_IND16( cbasebal )
{
cbasebal_state *state = screen.machine().driver_data<cbasebal_state>();
diff --git a/src/mame/video/cbuster.c b/src/mame/video/cbuster.c
index 0cf4cea85b5..7f6fda7cff9 100644
--- a/src/mame/video/cbuster.c
+++ b/src/mame/video/cbuster.c
@@ -44,17 +44,17 @@ WRITE16_HANDLER( twocrude_palette_24bit_b_w )
VIDEO_START( twocrude )
{
- machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap(machine);
+ machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap();
}
-SCREEN_UPDATE( twocrude )
+SCREEN_UPDATE_RGB32( twocrude )
{
cbuster_state *state = screen.machine().driver_data<cbuster_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
flip_screen_set(screen.machine(), !BIT(flip, 7));
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram16_buffer, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram16_buffer, 0x400);
deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll);
@@ -62,8 +62,8 @@ SCREEN_UPDATE( twocrude )
/* Draw playfields & sprites */
deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0800, 0x0900, 0x100, 0x0ff);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0900, 0x0900, 0x500, 0x0ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0900, 0x100, 0x0ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0900, 0x0900, 0x500, 0x0ff);
if (state->m_pri)
{
@@ -76,8 +76,8 @@ SCREEN_UPDATE( twocrude )
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
}
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0900, 0x100, 0x0ff);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0100, 0x0900, 0x500, 0x0ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0900, 0x100, 0x0ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0100, 0x0900, 0x500, 0x0ff);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
diff --git a/src/mame/video/ccastles.c b/src/mame/video/ccastles.c
index 5c47eec88d5..50b439c88ee 100644
--- a/src/mame/video/ccastles.c
+++ b/src/mame/video/ccastles.c
@@ -32,7 +32,7 @@ VIDEO_START( ccastles )
3, resistances, state->m_bweights, 1000, 0);
/* allocate a bitmap for drawing sprites */
- state->m_spritebitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_spritebitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
/* register for savestates */
state->save_item(NAME(state->m_video_control));
@@ -265,7 +265,7 @@ WRITE8_HANDLER( ccastles_bitmode_addr_w )
*
*************************************/
-SCREEN_UPDATE( ccastles )
+SCREEN_UPDATE_IND16( ccastles )
{
ccastles_state *state = screen.machine().driver_data<ccastles_state>();
UINT8 *spriteaddr = &state->m_spriteram[state->m_video_control[7] * 0x100]; /* BUF1/BUF2 */
@@ -274,7 +274,7 @@ SCREEN_UPDATE( ccastles )
int x, y, offs;
/* draw the sprites */
- state->m_spritebitmap->fill(0x0f, cliprect);
+ state->m_spritebitmap.fill(0x0f, cliprect);
for (offs = 0; offs < 320/2; offs += 4)
{
int x = spriteaddr[offs + 3];
@@ -282,7 +282,7 @@ SCREEN_UPDATE( ccastles )
int which = spriteaddr[offs];
int color = spriteaddr[offs + 2] >> 7;
- drawgfx_transpen(*state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, flip, flip, x, y, 7);
+ drawgfx_transpen(state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, flip, flip, x, y, 7);
}
/* draw the bitmap to the screen, looping over Y */
@@ -300,7 +300,7 @@ SCREEN_UPDATE( ccastles )
/* non-VBLANK region: merge the sprites and the bitmap */
else
{
- UINT16 *mosrc = &state->m_spritebitmap->pix16(y);
+ UINT16 *mosrc = &state->m_spritebitmap.pix16(y);
int effy = (((y - state->m_vblank_end) + (flip ? 0 : state->m_vscroll)) ^ flip) & 0xff;
UINT8 *src;
diff --git a/src/mame/video/cclimber.c b/src/mame/video/cclimber.c
index f84ac7eeef6..97d12fd3211 100644
--- a/src/mame/video/cclimber.c
+++ b/src/mame/video/cclimber.c
@@ -487,7 +487,7 @@ VIDEO_START( toprollr )
}
-static void draw_playfield(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_playfield(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cclimber_state *state = machine.driver_data<cclimber_state>();
int i;
@@ -502,7 +502,7 @@ static void draw_playfield(running_machine &machine, bitmap_t &bitmap, const rec
}
-static void cclimber_draw_bigsprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void cclimber_draw_bigsprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cclimber_state *state = machine.driver_data<cclimber_state>();
UINT8 x = state->m_bigsprite_control[3] - 8;
@@ -528,7 +528,7 @@ static void cclimber_draw_bigsprite(running_machine &machine, bitmap_t &bitmap,
}
-static void toprollr_draw_bigsprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void toprollr_draw_bigsprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cclimber_state *state = machine.driver_data<cclimber_state>();
UINT8 x = state->m_bigsprite_control[3] - 8;
@@ -545,7 +545,7 @@ static void toprollr_draw_bigsprite(running_machine &machine, bitmap_t &bitmap,
}
-static void cclimber_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx)
+static void cclimber_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx)
{
cclimber_state *state = gfx->machine().driver_data<cclimber_state>();
int offs;
@@ -586,7 +586,7 @@ static void cclimber_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, c
}
-static void toprollr_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx)
+static void toprollr_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx)
{
cclimber_state *state = gfx->machine().driver_data<cclimber_state>();
int offs;
@@ -624,7 +624,7 @@ static void toprollr_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, c
}
-static void swimmer_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx)
+static void swimmer_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx)
{
cclimber_state *state = gfx->machine().driver_data<cclimber_state>();
int offs;
@@ -662,7 +662,7 @@ static void swimmer_draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, co
}
-SCREEN_UPDATE( cclimber )
+SCREEN_UPDATE_IND16( cclimber )
{
cclimber_state *state = screen.machine().driver_data<cclimber_state>();
bitmap.fill(CCLIMBER_BG_PEN, cliprect);
@@ -686,7 +686,7 @@ SCREEN_UPDATE( cclimber )
}
-SCREEN_UPDATE( yamato )
+SCREEN_UPDATE_IND16( yamato )
{
cclimber_state *state = screen.machine().driver_data<cclimber_state>();
int i;
@@ -721,7 +721,7 @@ SCREEN_UPDATE( yamato )
}
-SCREEN_UPDATE( swimmer )
+SCREEN_UPDATE_IND16( swimmer )
{
cclimber_state *state = screen.machine().driver_data<cclimber_state>();
swimmer_set_background_pen(screen.machine());
@@ -774,7 +774,7 @@ SCREEN_UPDATE( swimmer )
}
-SCREEN_UPDATE( toprollr )
+SCREEN_UPDATE_IND16( toprollr )
{
cclimber_state *state = screen.machine().driver_data<cclimber_state>();
rectangle scroll_area_clip = cliprect;
diff --git a/src/mame/video/centiped.c b/src/mame/video/centiped.c
index 670f6314f8a..c80d2dd50fc 100644
--- a/src/mame/video/centiped.c
+++ b/src/mame/video/centiped.c
@@ -429,7 +429,7 @@ WRITE8_HANDLER( mazeinv_paletteram_w )
*
*************************************/
-SCREEN_UPDATE( centiped )
+SCREEN_UPDATE_IND16( centiped )
{
centiped_state *state = screen.machine().driver_data<centiped_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -461,7 +461,7 @@ SCREEN_UPDATE( centiped )
}
-SCREEN_UPDATE( warlords )
+SCREEN_UPDATE_IND16( warlords )
{
centiped_state *state = screen.machine().driver_data<centiped_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -507,7 +507,7 @@ SCREEN_UPDATE( warlords )
}
-SCREEN_UPDATE( bullsdrt )
+SCREEN_UPDATE_IND16( bullsdrt )
{
centiped_state *state = screen.machine().driver_data<centiped_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -542,7 +542,7 @@ SCREEN_UPDATE( bullsdrt )
* This varies from Centipede, in that flipx is not in
* the data, but is determined by VIDROT value at 0x2506.
*/
-SCREEN_UPDATE( milliped )
+SCREEN_UPDATE_IND16( milliped )
{
centiped_state *state = screen.machine().driver_data<centiped_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/chaknpop.c b/src/mame/video/chaknpop.c
index 304f74139ab..f6cac111b50 100644
--- a/src/mame/video/chaknpop.c
+++ b/src/mame/video/chaknpop.c
@@ -183,7 +183,7 @@ VIDEO_START( chaknpop )
Screen refresh
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
chaknpop_state *state = machine.driver_data<chaknpop_state>();
int offs;
@@ -218,7 +218,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
chaknpop_state *state = machine.driver_data<chaknpop_state>();
int dx = state->m_flip_x ? -1 : 1;
@@ -258,7 +258,7 @@ static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( chaknpop )
+SCREEN_UPDATE_IND16( chaknpop )
{
chaknpop_state *state = screen.machine().driver_data<chaknpop_state>();
diff --git a/src/mame/video/champbas.c b/src/mame/video/champbas.c
index 576d9ace6fb..55ea7fecc06 100644
--- a/src/mame/video/champbas.c
+++ b/src/mame/video/champbas.c
@@ -193,7 +193,7 @@ WRITE8_HANDLER( champbas_flipscreen_w )
-static void champbas_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void champbas_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
champbas_state *state = machine.driver_data<champbas_state>();
int offs;
@@ -225,7 +225,7 @@ static void champbas_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void exctsccr_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void exctsccr_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
champbas_state *state = machine.driver_data<champbas_state>();
int offs;
@@ -282,7 +282,7 @@ static void exctsccr_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
-SCREEN_UPDATE( champbas )
+SCREEN_UPDATE_IND16( champbas )
{
champbas_state *state = screen.machine().driver_data<champbas_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -290,7 +290,7 @@ SCREEN_UPDATE( champbas )
return 0;
}
-SCREEN_UPDATE( exctsccr )
+SCREEN_UPDATE_IND16( exctsccr )
{
champbas_state *state = screen.machine().driver_data<champbas_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/changela.c b/src/mame/video/changela.c
index bad6e6de1ad..42a3590509c 100644
--- a/src/mame/video/changela.c
+++ b/src/mame/video/changela.c
@@ -24,10 +24,10 @@ VIDEO_START( changela )
state->m_memory_devices = auto_alloc_array(machine, UINT8, 4 * 0x800); /* 0 - not connected, 1,2,3 - RAMs*/
state->m_tree_ram = auto_alloc_array(machine, UINT8, 2 * 0x20);
- state->m_obj0_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_river_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tree0_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tree1_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_obj0_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_river_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tree0_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tree1_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_scanline_timer = machine.scheduler().timer_alloc(FUNC(changela_scanline_callback));
state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(30), 30);
@@ -42,7 +42,7 @@ VIDEO_START( changela )
***************************************************************************/
-static void draw_obj0( running_machine &machine, bitmap_t &bitmap, int sy )
+static void draw_obj0( running_machine &machine, bitmap_ind16 &bitmap, int sy )
{
changela_state *state = machine.driver_data<changela_state>();
int sx, i;
@@ -105,7 +105,7 @@ static void draw_obj0( running_machine &machine, bitmap_t &bitmap, int sy )
***************************************************************************/
-static void draw_obj1( running_machine &machine, bitmap_t &bitmap )
+static void draw_obj1( running_machine &machine, bitmap_ind16 &bitmap )
{
changela_state *state = machine.driver_data<changela_state>();
int sx, sy;
@@ -170,7 +170,7 @@ static void draw_obj1( running_machine &machine, bitmap_t &bitmap )
***************************************************************************/
-static void draw_river( running_machine &machine, bitmap_t &bitmap, int sy )
+static void draw_river( running_machine &machine, bitmap_ind16 &bitmap, int sy )
{
changela_state *state = machine.driver_data<changela_state>();
int sx, i, j;
@@ -349,7 +349,7 @@ static void draw_river( running_machine &machine, bitmap_t &bitmap, int sy )
***************************************************************************/
-static void draw_tree( running_machine &machine, bitmap_t &bitmap, int sy, int tree_num )
+static void draw_tree( running_machine &machine, bitmap_ind16 &bitmap, int sy, int tree_num )
{
changela_state *state = machine.driver_data<changela_state>();
int sx, i, j;
@@ -653,43 +653,43 @@ static TIMER_CALLBACK( changela_scanline_callback )
/* clear the current scanline first */
const rectangle rect(0, 255, sy, sy);
- state->m_river_bitmap->fill(0x00, rect);
- state->m_obj0_bitmap->fill(0x00, rect);
- state->m_tree0_bitmap->fill(0x00, rect);
- state->m_tree1_bitmap->fill(0x00, rect);
+ state->m_river_bitmap.fill(0x00, rect);
+ state->m_obj0_bitmap.fill(0x00, rect);
+ state->m_tree0_bitmap.fill(0x00, rect);
+ state->m_tree1_bitmap.fill(0x00, rect);
- draw_river(machine, *state->m_river_bitmap, sy);
- draw_obj0(machine, *state->m_obj0_bitmap, sy);
- draw_tree(machine, *state->m_tree0_bitmap, sy, 0);
- draw_tree(machine, *state->m_tree1_bitmap, sy, 1);
+ draw_river(machine, state->m_river_bitmap, sy);
+ draw_obj0(machine, state->m_obj0_bitmap, sy);
+ draw_tree(machine, state->m_tree0_bitmap, sy, 0);
+ draw_tree(machine, state->m_tree1_bitmap, sy, 1);
/* Collision Detection */
for (sx = 1; sx < 256; sx++)
{
int riv_col, prev_col;
- if ((state->m_river_bitmap->pix16(sy, sx) == 0x08)
- || (state->m_river_bitmap->pix16(sy, sx) == 0x09)
- || (state->m_river_bitmap->pix16(sy, sx) == 0x0a))
+ if ((state->m_river_bitmap.pix16(sy, sx) == 0x08)
+ || (state->m_river_bitmap.pix16(sy, sx) == 0x09)
+ || (state->m_river_bitmap.pix16(sy, sx) == 0x0a))
riv_col = 1;
else
riv_col = 0;
- if ((state->m_river_bitmap->pix16(sy, sx-1) == 0x08)
- || (state->m_river_bitmap->pix16(sy, sx-1) == 0x09)
- || (state->m_river_bitmap->pix16(sy, sx-1) == 0x0a))
+ if ((state->m_river_bitmap.pix16(sy, sx-1) == 0x08)
+ || (state->m_river_bitmap.pix16(sy, sx-1) == 0x09)
+ || (state->m_river_bitmap.pix16(sy, sx-1) == 0x0a))
prev_col = 1;
else
prev_col = 0;
- if (state->m_obj0_bitmap->pix16(sy, sx) == 0x14) /* Car Outline Color */
+ if (state->m_obj0_bitmap.pix16(sy, sx) == 0x14) /* Car Outline Color */
{
/* Tree 0 Collision */
- if (state->m_tree0_bitmap->pix16(sy, sx) != 0)
+ if (state->m_tree0_bitmap.pix16(sy, sx) != 0)
state->m_tree0_col = 1;
/* Tree 1 Collision */
- if (state->m_tree1_bitmap->pix16(sy, sx) != 0)
+ if (state->m_tree1_bitmap.pix16(sy, sx) != 0)
state->m_tree1_col = 1;
/* Hit Right Bank */
@@ -722,13 +722,13 @@ static TIMER_CALLBACK( changela_scanline_callback )
state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(sy), sy);
}
-SCREEN_UPDATE( changela )
+SCREEN_UPDATE_IND16( changela )
{
changela_state *state = screen.machine().driver_data<changela_state>();
- copybitmap(bitmap, *state->m_river_bitmap, 0, 0, 0, 0, cliprect);
- copybitmap_trans(bitmap, *state->m_obj0_bitmap, 0, 0, 0, 0, cliprect, 0);
- copybitmap_trans(bitmap, *state->m_tree0_bitmap, 0, 0, 0, 0, cliprect, 0);
- copybitmap_trans(bitmap, *state->m_tree1_bitmap, 0, 0, 0, 0, cliprect, 0);
+ copybitmap(bitmap, state->m_river_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap_trans(bitmap, state->m_obj0_bitmap, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, state->m_tree0_bitmap, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, state->m_tree1_bitmap, 0, 0, 0, 0, cliprect, 0);
draw_obj1(screen.machine(), bitmap);
return 0;
diff --git a/src/mame/video/cheekyms.c b/src/mame/video/cheekyms.c
index 18335abad33..c5a49923abc 100644
--- a/src/mame/video/cheekyms.c
+++ b/src/mame/video/cheekyms.c
@@ -101,14 +101,14 @@ VIDEO_START( cheekyms )
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_bitmap_buffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_bitmap_buffer = auto_bitmap_ind16_alloc(machine, width, height);
state->m_cm_tilemap = tilemap_create(machine, cheekyms_get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
tilemap_set_transparent_pen(state->m_cm_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx, int flip )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx, int flip )
{
cheekyms_state *state = machine.driver_data<cheekyms_state>();
offs_t offs;
@@ -148,7 +148,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( cheekyms )
+SCREEN_UPDATE_IND16( cheekyms )
{
cheekyms_state *state = screen.machine().driver_data<cheekyms_state>();
int y, x;
diff --git a/src/mame/video/chqflag.c b/src/mame/video/chqflag.c
index 5b560290ce2..445aa15925b 100644
--- a/src/mame/video/chqflag.c
+++ b/src/mame/video/chqflag.c
@@ -71,7 +71,7 @@ VIDEO_START( chqflag )
***************************************************************************/
-SCREEN_UPDATE( chqflag )
+SCREEN_UPDATE_IND16( chqflag )
{
chqflag_state *state = screen.machine().driver_data<chqflag_state>();
diff --git a/src/mame/video/cidelsa.c b/src/mame/video/cidelsa.c
index 419806e97e7..db1bae8acd1 100644
--- a/src/mame/video/cidelsa.c
+++ b/src/mame/video/cidelsa.c
@@ -205,7 +205,7 @@ static const ay8910_interface psg_intf =
/* Machine Drivers */
MACHINE_CONFIG_FRAGMENT( destryer_video )
- MCFG_CDP1869_SCREEN_PAL_ADD(SCREEN_TAG, DESTRYER_CHR2)
+ MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DESTRYER_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -214,7 +214,7 @@ MACHINE_CONFIG_FRAGMENT( destryer_video )
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( altair_video )
- MCFG_CDP1869_SCREEN_PAL_ADD(SCREEN_TAG, ALTAIR_CHR2)
+ MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, ALTAIR_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -223,7 +223,7 @@ MACHINE_CONFIG_FRAGMENT( altair_video )
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( draco_video )
- MCFG_CDP1869_SCREEN_PAL_ADD(SCREEN_TAG, DRACO_CHR2)
+ MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DRACO_CHR2)
MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.360, 0.024)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/video/cinemat.c b/src/mame/video/cinemat.c
index 87b965e9395..b4020bcc70c 100644
--- a/src/mame/video/cinemat.c
+++ b/src/mame/video/cinemat.c
@@ -213,9 +213,9 @@ VIDEO_START( cinemat_qb3color )
*
*************************************/
-SCREEN_UPDATE( cinemat )
+SCREEN_UPDATE_RGB32( cinemat )
{
- SCREEN_UPDATE_CALL(vector);
+ SCREEN_UPDATE32_CALL(vector);
vector_clear_list();
ccpu_wdt_timer_trigger(screen.machine().device("maincpu"));
@@ -231,11 +231,11 @@ SCREEN_UPDATE( cinemat )
*
*************************************/
-SCREEN_UPDATE( spacewar )
+SCREEN_UPDATE_RGB32( spacewar )
{
int sw_option = input_port_read(screen.machine(), "INPUTS");
- SCREEN_UPDATE_CALL(cinemat);
+ SCREEN_UPDATE32_CALL(cinemat);
/* set the state of the artwork */
output_set_value("pressed3", (~sw_option >> 0) & 1);
diff --git a/src/mame/video/circus.c b/src/mame/video/circus.c
index 145e3182d89..2f11d6a6ced 100644
--- a/src/mame/video/circus.c
+++ b/src/mame/video/circus.c
@@ -44,7 +44,7 @@ VIDEO_START( circus )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_line( bitmap_t &bitmap, const rectangle &cliprect, int x1, int y1, int x2, int y2, int dotted )
+static void draw_line( bitmap_ind16 &bitmap, const rectangle &cliprect, int x1, int y1, int x2, int y2, int dotted )
{
/* Draws horizontal and Vertical lines only! */
int count, skip;
@@ -63,7 +63,7 @@ static void draw_line( bitmap_t &bitmap, const rectangle &cliprect, int x1, int
bitmap.pix16(y1, count) = 1;
}
-static void draw_sprite_collision( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprite_collision( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
circus_state *state = machine.driver_data<circus_state>();
const gfx_element *sprite_gfx = machine.gfx[1];
@@ -97,7 +97,7 @@ static void draw_sprite_collision( running_machine &machine, bitmap_t &bitmap, c
device_set_input_line(state->m_maincpu, 0, ASSERT_LINE);
}
-static void circus_draw_fg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void circus_draw_fg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* The sync generator hardware is used to */
/* draw the border and diving boards */
@@ -113,7 +113,7 @@ static void circus_draw_fg( running_machine &machine, bitmap_t &bitmap, const re
draw_line(bitmap, cliprect, 231, 192, 248, 192, 0);
}
-SCREEN_UPDATE( circus )
+SCREEN_UPDATE_IND16( circus )
{
circus_state *state = screen.machine().driver_data<circus_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -122,7 +122,7 @@ SCREEN_UPDATE( circus )
return 0;
}
-static void robotbwl_draw_box( bitmap_t &bitmap, const rectangle &cliprect, int x, int y )
+static void robotbwl_draw_box( bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y )
{
/* Box */
int ex = x + 24;
@@ -140,7 +140,7 @@ static void robotbwl_draw_box( bitmap_t &bitmap, const rectangle &cliprect, int
draw_line(bitmap, cliprect, x + 16, y, x + 16, ey, 0);
}
-static void robotbwl_draw_scoreboard( bitmap_t &bitmap, const rectangle &cliprect )
+static void robotbwl_draw_scoreboard( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int offs;
@@ -165,7 +165,7 @@ static void robotbwl_draw_scoreboard( bitmap_t &bitmap, const rectangle &cliprec
draw_line(bitmap, cliprect, 39 + 152, 137, 47 + 152, 137, 0);
}
-static void robotbwl_draw_bowling_alley( bitmap_t &bitmap, const rectangle &cliprect )
+static void robotbwl_draw_bowling_alley( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
draw_line(bitmap, cliprect, 103, 17, 103, 205, 0);
draw_line(bitmap, cliprect, 111, 17, 111, 203, 1);
@@ -173,7 +173,7 @@ static void robotbwl_draw_bowling_alley( bitmap_t &bitmap, const rectangle &clip
draw_line(bitmap, cliprect, 144, 17, 144, 203, 1);
}
-static void robotbwl_draw_ball( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void robotbwl_draw_ball( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
circus_state *state = machine.driver_data<circus_state>();
drawgfx_transpen(bitmap,/* Y is horizontal position */
@@ -184,7 +184,7 @@ static void robotbwl_draw_ball( running_machine &machine, bitmap_t &bitmap, cons
state->m_clown_y + 8, state->m_clown_x + 8, 0);
}
-SCREEN_UPDATE( robotbwl )
+SCREEN_UPDATE_IND16( robotbwl )
{
circus_state *state = screen.machine().driver_data<circus_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -194,7 +194,7 @@ SCREEN_UPDATE( robotbwl )
return 0;
}
-static void crash_draw_car( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void crash_draw_car( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
circus_state *state = machine.driver_data<circus_state>();
drawgfx_transpen(bitmap,/* Y is horizontal position */
@@ -205,7 +205,7 @@ static void crash_draw_car( running_machine &machine, bitmap_t &bitmap, const re
state->m_clown_y, state->m_clown_x - 1, 0);
}
-SCREEN_UPDATE( crash )
+SCREEN_UPDATE_IND16( crash )
{
circus_state *state = screen.machine().driver_data<circus_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -213,7 +213,7 @@ SCREEN_UPDATE( crash )
return 0;
}
-SCREEN_UPDATE( ripcord )
+SCREEN_UPDATE_IND16( ripcord )
{
circus_state *state = screen.machine().driver_data<circus_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/circusc.c b/src/mame/video/circusc.c
index 45e3b6356de..848de4704fc 100644
--- a/src/mame/video/circusc.c
+++ b/src/mame/video/circusc.c
@@ -161,7 +161,7 @@ WRITE8_HANDLER( circusc_flipscreen_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
circusc_state *state = machine.driver_data<circusc_state>();
int offs;
@@ -198,7 +198,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( circusc )
+SCREEN_UPDATE_IND16( circusc )
{
circusc_state *state = screen.machine().driver_data<circusc_state>();
int i;
diff --git a/src/mame/video/cischeat.c b/src/mame/video/cischeat.c
index 4061cb1a2c7..2006ca4b21c 100644
--- a/src/mame/video/cischeat.c
+++ b/src/mame/video/cischeat.c
@@ -715,7 +715,7 @@ WRITE16_HANDLER( scudhamm_vregs_w )
/* Draw the road in the given bitmap. The priority1 and priority2 parameters
specify the range of lines to draw */
-static void cischeat_draw_road(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int road_num, int priority1, int priority2, int transparency)
+static void cischeat_draw_road(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int road_num, int priority1, int priority2, int transparency)
{
cischeat_state *state = machine.driver_data<cischeat_state>();
int curr_code,sx,sy;
@@ -805,7 +805,7 @@ static void cischeat_draw_road(running_machine &machine, bitmap_t &bitmap, const
/* Draw the road in the given bitmap. The priority1 and priority2 parameters
specify the range of lines to draw */
-static void f1gpstar_draw_road(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int road_num, int priority1, int priority2, int transparency)
+static void f1gpstar_draw_road(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int road_num, int priority1, int priority2, int transparency)
{
cischeat_state *state = machine.driver_data<cischeat_state>();
int sx,sy;
@@ -921,7 +921,7 @@ static void f1gpstar_draw_road(running_machine &machine, bitmap_t &bitmap, const
sprites whose priority nibble is between 0 and 15 and whose
colour code's high bit is set. */
-static void cischeat_draw_sprites(running_machine &machine, bitmap_t &bitmap , const rectangle &cliprect, int priority1, int priority2)
+static void cischeat_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap , const rectangle &cliprect, int priority1, int priority2)
{
cischeat_state *state = machine.driver_data<cischeat_state>();
int x, sx, flipx, xzoom, xscale, xdim, xnum, xstart, xend, xinc;
@@ -1077,7 +1077,7 @@ if (machine.input().code_pressed(KEYCODE_X))
***************************************************************************/
-static void bigrun_draw_sprites(running_machine &machine, bitmap_t &bitmap , const rectangle &cliprect, int priority1, int priority2)
+static void bigrun_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap , const rectangle &cliprect, int priority1, int priority2)
{
cischeat_state *state = machine.driver_data<cischeat_state>();
int x, sx, flipx, xzoom, xscale, xdim, xnum, xstart, xend, xinc;
@@ -1241,7 +1241,7 @@ if ( screen.machine().input().code_pressed(KEYCODE_Z) || screen.machine().input(
Big Run
**************************************************************************/
-SCREEN_UPDATE( bigrun )
+SCREEN_UPDATE_IND16( bigrun )
{
cischeat_state *state = screen.machine().driver_data<cischeat_state>();
int i;
@@ -1296,7 +1296,7 @@ SCREEN_UPDATE( bigrun )
Cisco Heat
**************************************************************************/
-SCREEN_UPDATE( cischeat )
+SCREEN_UPDATE_IND16( cischeat )
{
cischeat_state *state = screen.machine().driver_data<cischeat_state>();
int active_layers1, flag;
@@ -1353,7 +1353,7 @@ SCREEN_UPDATE( cischeat )
F1 GrandPrix Star
**************************************************************************/
-SCREEN_UPDATE( f1gpstar )
+SCREEN_UPDATE_IND16( f1gpstar )
{
cischeat_state *state = screen.machine().driver_data<cischeat_state>();
int active_layers1, flag;
@@ -1414,7 +1414,7 @@ SCREEN_UPDATE( f1gpstar )
Scud Hammer
**************************************************************************/
-SCREEN_UPDATE( scudhamm )
+SCREEN_UPDATE_IND16( scudhamm )
{
cischeat_state *state = screen.machine().driver_data<cischeat_state>();
int active_layers1, flag;
diff --git a/src/mame/video/citycon.c b/src/mame/video/citycon.c
index 6ac57c630f0..d83384e041b 100644
--- a/src/mame/video/citycon.c
+++ b/src/mame/video/citycon.c
@@ -106,7 +106,7 @@ WRITE8_HANDLER( citycon_background_w )
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
citycon_state *state = machine.driver_data<citycon_state>();
int offs;
@@ -140,7 +140,7 @@ INLINE void changecolor_RRRRGGGGBBBBxxxx( running_machine &machine, int color, i
palette_set_color_rgb(machine, color, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
}
-SCREEN_UPDATE( citycon )
+SCREEN_UPDATE_IND16( citycon )
{
citycon_state *state = screen.machine().driver_data<citycon_state>();
int offs, scroll;
diff --git a/src/mame/video/cloak.c b/src/mame/video/cloak.c
index 6c9e60f7903..82a6fc1345f 100644
--- a/src/mame/video/cloak.c
+++ b/src/mame/video/cloak.c
@@ -188,7 +188,7 @@ VIDEO_START( cloak )
machine.save().register_postload(save_prepost_delegate(FUNC(set_current_bitmap_videoram_pointer), state));
}
-static void draw_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cloak_state *state = machine.driver_data<cloak_state>();
int x, y;
@@ -203,7 +203,7 @@ static void draw_bitmap(running_machine &machine, bitmap_t &bitmap, const rectan
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
cloak_state *state = machine.driver_data<cloak_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -229,7 +229,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( cloak )
+SCREEN_UPDATE_IND16( cloak )
{
cloak_state *state = screen.machine().driver_data<cloak_state>();
set_pens(screen.machine());
diff --git a/src/mame/video/cloud9.c b/src/mame/video/cloud9.c
index 07ba6e0567e..9b64ce5df16 100644
--- a/src/mame/video/cloud9.c
+++ b/src/mame/video/cloud9.c
@@ -36,7 +36,7 @@ VIDEO_START( cloud9 )
3, resistances, state->m_bweights, 1000, 0);
/* allocate a bitmap for drawing sprites */
- state->m_spritebitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_spritebitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
/* register for savestates */
state->save_pointer(NAME(state->m_videoram), 0x8000);
@@ -247,7 +247,7 @@ WRITE8_HANDLER( cloud9_bitmode_addr_w )
*
*************************************/
-SCREEN_UPDATE( cloud9 )
+SCREEN_UPDATE_IND16( cloud9 )
{
cloud9_state *state = screen.machine().driver_data<cloud9_state>();
UINT8 *spriteaddr = state->m_spriteram;
@@ -256,7 +256,7 @@ SCREEN_UPDATE( cloud9 )
int x, y, offs;
/* draw the sprites */
- state->m_spritebitmap->fill(0x00, cliprect);
+ state->m_spritebitmap.fill(0x00, cliprect);
for (offs = 0; offs < 0x20; offs++)
if (spriteaddr[offs + 0x00] != 0)
{
@@ -267,9 +267,9 @@ SCREEN_UPDATE( cloud9 )
int which = spriteaddr[offs + 0x20];
int color = 0;
- drawgfx_transpen(*state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, xflip, yflip, x, y, 0);
+ drawgfx_transpen(state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, xflip, yflip, x, y, 0);
if (x >= 256 - 16)
- drawgfx_transpen(*state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, xflip, yflip, x - 256, y, 0);
+ drawgfx_transpen(state->m_spritebitmap, cliprect, screen.machine().gfx[0], which, color, xflip, yflip, x - 256, y, 0);
}
/* draw the bitmap to the screen, looping over Y */
@@ -287,7 +287,7 @@ SCREEN_UPDATE( cloud9 )
/* non-VBLANK region: merge the sprites and the bitmap */
else
{
- UINT16 *mosrc = &state->m_spritebitmap->pix16(y);
+ UINT16 *mosrc = &state->m_spritebitmap.pix16(y);
int effy = y ^ flip;
UINT8 *src[2];
diff --git a/src/mame/video/clshroad.c b/src/mame/video/clshroad.c
index f609eb68364..9990c7e66f0 100644
--- a/src/mame/video/clshroad.c
+++ b/src/mame/video/clshroad.c
@@ -286,7 +286,7 @@ Offset: Format: Value:
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
clshroad_state *state = machine.driver_data<clshroad_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -327,7 +327,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( clshroad )
+SCREEN_UPDATE_IND16( clshroad )
{
clshroad_state *state = screen.machine().driver_data<clshroad_state>();
int scrollx = state->m_vregs[ 0 ] + (state->m_vregs[ 1 ] << 8);
diff --git a/src/mame/video/cninja.c b/src/mame/video/cninja.c
index 1c33f1d7855..60bf79a8ba7 100644
--- a/src/mame/video/cninja.c
+++ b/src/mame/video/cninja.c
@@ -26,7 +26,7 @@ VIDEO_START( stoneage )
/* The bootleg sprites are in a different format! */
-static void cninjabl_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void cninjabl_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
int offs;
@@ -124,7 +124,7 @@ static void cninjabl_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
/******************************************************************************/
-SCREEN_UPDATE( cninja )
+SCREEN_UPDATE_IND16( cninja )
{
cninja_state *state = screen.machine().driver_data<cninja_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -140,12 +140,12 @@ SCREEN_UPDATE( cninja )
deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 2);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
-SCREEN_UPDATE( cninjabl )
+SCREEN_UPDATE_IND16( cninjabl )
{
cninja_state *state = screen.machine().driver_data<cninja_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -170,7 +170,7 @@ SCREEN_UPDATE( cninjabl )
return 0;
}
-SCREEN_UPDATE( edrandy )
+SCREEN_UPDATE_IND16( edrandy )
{
cninja_state *state = screen.machine().driver_data<cninja_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -184,12 +184,12 @@ SCREEN_UPDATE( edrandy )
deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 2);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
-SCREEN_UPDATE( robocop2 )
+SCREEN_UPDATE_IND16( robocop2 )
{
cninja_state *state = screen.machine().driver_data<cninja_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -235,18 +235,18 @@ SCREEN_UPDATE( robocop2 )
break;
}
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
VIDEO_START( mutantf )
{
- machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap(machine);
- machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap(machine);
+ machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap();
+ machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap();
}
-SCREEN_UPDATE( mutantf )
+SCREEN_UPDATE_RGB32( mutantf )
{
cninja_state *state = screen.machine().driver_data<cninja_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -262,8 +262,8 @@ SCREEN_UPDATE( mutantf )
screen.machine().device<decospr_device>("spritegen1")->set_alt_format(true);
screen.machine().device<decospr_device>("spritegen2")->set_alt_format(true);
- screen.machine().device<decospr_device>("spritegen2")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, true);
- screen.machine().device<decospr_device>("spritegen1")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, true);
+ screen.machine().device<decospr_device>("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true);
/* There is no priority prom on this board, but there is a
@@ -284,13 +284,13 @@ SCREEN_UPDATE( mutantf )
if (priority & 1)
{
- screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0000, 0x100, 0x1ff);
- screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0000, 1024+768, 0x0ff, 0x80); // fixed alpha of 0x80 for this layer?
+ screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0000, 0x100, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0000, 1024+768, 0x0ff, 0x80); // fixed alpha of 0x80 for this layer?
}
else
{
- screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0000, 1024+768, 0x0ff, 0x80); // fixed alpha of 0x80 for this layer?
- screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0000, 0x100, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0000, 1024+768, 0x0ff, 0x80); // fixed alpha of 0x80 for this layer?
+ screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0000, 0x100, 0x1ff);
}
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
diff --git a/src/mame/video/combatsc.c b/src/mame/video/combatsc.c
index 2b90bd8194c..d38d1fc55d5 100644
--- a/src/mame/video/combatsc.c
+++ b/src/mame/video/combatsc.c
@@ -393,7 +393,7 @@ WRITE8_HANDLER( combatsc_scrollram_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *source, int circuit, UINT32 pri_mask )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *source, int circuit, UINT32 pri_mask )
{
combatsc_state *state = machine.driver_data<combatsc_state>();
device_t *k007121 = circuit ? state->m_k007121_2 : state->m_k007121_1;
@@ -403,7 +403,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( combatsc )
+SCREEN_UPDATE_IND16( combatsc )
{
combatsc_state *state = screen.machine().driver_data<combatsc_state>();
int i;
@@ -515,7 +515,7 @@ byte #4:
***************************************************************************/
-static void bootleg_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *source, int circuit )
+static void bootleg_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *source, int circuit )
{
address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM);
const gfx_element *gfx = machine.gfx[circuit + 2];
@@ -561,7 +561,7 @@ static void bootleg_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( combatscb )
+SCREEN_UPDATE_IND16( combatscb )
{
combatsc_state *state = screen.machine().driver_data<combatsc_state>();
int i;
diff --git a/src/mame/video/commando.c b/src/mame/video/commando.c
index c645f04d5cf..240119671c2 100644
--- a/src/mame/video/commando.c
+++ b/src/mame/video/commando.c
@@ -105,7 +105,7 @@ VIDEO_START( commando )
tilemap_set_transparent_pen(state->m_fg_tilemap, 3);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
int offs;
@@ -135,7 +135,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( commando )
+SCREEN_UPDATE_IND16( commando )
{
commando_state *state = screen.machine().driver_data<commando_state>();
diff --git a/src/mame/video/compgolf.c b/src/mame/video/compgolf.c
index 9f8d20c60ae..e746bd263ae 100644
--- a/src/mame/video/compgolf.c
+++ b/src/mame/video/compgolf.c
@@ -90,7 +90,7 @@ xx------ xxxxxxxx -------- -------- sprite code
-----x-- -------- -------- -------- Flip X
-------- -------- -------- -------- Flip Y(used?)
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
compgolf_state *state = machine.driver_data<compgolf_state>();
int offs, fx, fy, x, y, color, sprite;
@@ -118,7 +118,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( compgolf )
+SCREEN_UPDATE_IND16( compgolf )
{
compgolf_state *state = screen.machine().driver_data<compgolf_state>();
int scrollx = state->m_scrollx_hi + state->m_scrollx_lo;
diff --git a/src/mame/video/contra.c b/src/mame/video/contra.c
index 671485b7a30..fffd5bb7878 100644
--- a/src/mame/video/contra.c
+++ b/src/mame/video/contra.c
@@ -301,7 +301,7 @@ WRITE8_HANDLER( contra_K007121_ctrl_1_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank )
{
contra_state *state = machine.driver_data<contra_state>();
device_t *k007121 = bank ? state->m_k007121_2 : state->m_k007121_1;
@@ -316,7 +316,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
k007121_sprites_draw(k007121, bitmap, cliprect, machine.gfx[bank], machine.colortable, source, base_color, 40, 0, (UINT32)-1);
}
-SCREEN_UPDATE( contra )
+SCREEN_UPDATE_IND16( contra )
{
contra_state *state = screen.machine().driver_data<contra_state>();
UINT8 ctrl_1_0 = k007121_ctrlram_r(state->m_k007121_1, 0);
diff --git a/src/mame/video/cop01.c b/src/mame/video/cop01.c
index 6598c1399c0..acb3ad30e78 100644
--- a/src/mame/video/cop01.c
+++ b/src/mame/video/cop01.c
@@ -166,7 +166,7 @@ WRITE8_HANDLER( cop01_vreg_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cop01_state *state = machine.driver_data<cop01_state>();
int offs, code, attr, sx, sy, flipx, flipy, color;
@@ -206,7 +206,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( cop01 )
+SCREEN_UPDATE_IND16( cop01 )
{
cop01_state *state = screen.machine().driver_data<cop01_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_vreg[1] + 256 * (state->m_vreg[2] & 1));
diff --git a/src/mame/video/copsnrob.c b/src/mame/video/copsnrob.c
index 35c36b2fb91..6c09c8a6913 100644
--- a/src/mame/video/copsnrob.c
+++ b/src/mame/video/copsnrob.c
@@ -8,7 +8,7 @@
#include "includes/copsnrob.h"
-SCREEN_UPDATE( copsnrob )
+SCREEN_UPDATE_IND16( copsnrob )
{
copsnrob_state *state = screen.machine().driver_data<copsnrob_state>();
int offs, x, y;
diff --git a/src/mame/video/cosmic.c b/src/mame/video/cosmic.c
index 9e92490498d..ae94d7bc03d 100644
--- a/src/mame/video/cosmic.c
+++ b/src/mame/video/cosmic.c
@@ -251,7 +251,7 @@ WRITE8_HANDLER( cosmic_background_enable_w )
}
-static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cosmic_state *state = machine.driver_data<cosmic_state>();
offs_t offs;
@@ -283,7 +283,7 @@ static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int color_mask, int extra_sprites )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int color_mask, int extra_sprites )
{
cosmic_state *state = machine.driver_data<cosmic_state>();
int offs;
@@ -317,7 +317,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void cosmica_draw_starfield( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+static void cosmica_draw_starfield( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 y = 0;
UINT8 map = 0;
@@ -366,7 +366,7 @@ static void cosmica_draw_starfield( screen_device &screen, bitmap_t &bitmap, con
}
-static void devzone_draw_grid( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void devzone_draw_grid( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 y;
UINT8 *horz_PROM = machine.region("user2")->base();
@@ -424,7 +424,7 @@ static void devzone_draw_grid( running_machine &machine, bitmap_t &bitmap, const
}
-static void nomnlnd_draw_background( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+static void nomnlnd_draw_background( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 y = 0;
UINT8 water = screen.frame_number();
@@ -546,7 +546,7 @@ static void nomnlnd_draw_background( screen_device &screen, bitmap_t &bitmap, co
}
-SCREEN_UPDATE( cosmicg )
+SCREEN_UPDATE_IND16( cosmicg )
{
bitmap.fill(0, cliprect);
draw_bitmap(screen.machine(), bitmap, cliprect);
@@ -554,7 +554,7 @@ SCREEN_UPDATE( cosmicg )
}
-SCREEN_UPDATE( panic )
+SCREEN_UPDATE_IND16( panic )
{
bitmap.fill(0, cliprect);
draw_bitmap(screen.machine(), bitmap, cliprect);
@@ -563,7 +563,7 @@ SCREEN_UPDATE( panic )
}
-SCREEN_UPDATE( cosmica )
+SCREEN_UPDATE_IND16( cosmica )
{
bitmap.fill(0, cliprect);
cosmica_draw_starfield(screen, bitmap, cliprect);
@@ -573,7 +573,7 @@ SCREEN_UPDATE( cosmica )
}
-SCREEN_UPDATE( magspot )
+SCREEN_UPDATE_IND16( magspot )
{
bitmap.fill(0, cliprect);
draw_bitmap(screen.machine(), bitmap, cliprect);
@@ -582,7 +582,7 @@ SCREEN_UPDATE( magspot )
}
-SCREEN_UPDATE( devzone )
+SCREEN_UPDATE_IND16( devzone )
{
cosmic_state *state = screen.machine().driver_data<cosmic_state>();
@@ -597,7 +597,7 @@ SCREEN_UPDATE( devzone )
}
-SCREEN_UPDATE( nomnlnd )
+SCREEN_UPDATE_IND16( nomnlnd )
{
cosmic_state *state = screen.machine().driver_data<cosmic_state>();
diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c
index eed9ff2de0a..e8290a7eb8e 100644
--- a/src/mame/video/cps1.c
+++ b/src/mame/video/cps1.c
@@ -2298,7 +2298,7 @@ static void cps1_find_last_sprite( running_machine &machine ) /* Find the off
}
-static void cps1_render_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void cps1_render_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cps_state *state = machine.driver_data<cps_state>();
@@ -2541,7 +2541,7 @@ static void cps2_find_last_sprite( running_machine &machine ) /* Find the off
state->m_cps2_last_sprite_offset = state->m_cps2_obj_size / 2 - 4;
}
-static void cps2_render_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int *primasks )
+static void cps2_render_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks )
{
cps_state *state = machine.driver_data<cps_state>();
@@ -2690,7 +2690,7 @@ static void cps2_render_sprites( running_machine &machine, bitmap_t &bitmap, con
-static void cps1_render_stars( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+static void cps1_render_stars( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
cps_state *state = screen.machine().driver_data<cps_state>();
int offs;
@@ -2758,7 +2758,7 @@ static void cps1_render_stars( screen_device &screen, bitmap_t &bitmap, const re
}
-static void cps1_render_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer, int primask )
+static void cps1_render_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask )
{
cps_state *state = machine.driver_data<cps_state>();
switch (layer)
@@ -2774,10 +2774,10 @@ static void cps1_render_layer( running_machine &machine, bitmap_t &bitmap, const
}
}
-static void cps1_render_high_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer )
+static void cps1_render_high_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
{
cps_state *state = machine.driver_data<cps_state>();
- bitmap_t dummy_bitmap;
+ bitmap_ind16 dummy_bitmap;
switch (layer)
{
case 0:
@@ -2798,7 +2798,7 @@ static void cps1_render_high_layer( running_machine &machine, bitmap_t &bitmap,
***************************************************************************/
-SCREEN_UPDATE( cps1 )
+SCREEN_UPDATE_IND16( cps1 )
{
cps_state *state = screen.machine().driver_data<cps_state>();
int layercontrol, l0, l1, l2, l3;
diff --git a/src/mame/video/crbaloon.c b/src/mame/video/crbaloon.c
index 1b27d9db381..136a9bd956e 100644
--- a/src/mame/video/crbaloon.c
+++ b/src/mame/video/crbaloon.c
@@ -95,7 +95,7 @@ void crbaloon_set_clear_collision_address(running_machine &machine, int _crbaloo
-static void draw_sprite_and_check_collision(running_machine &machine, bitmap_t &bitmap)
+static void draw_sprite_and_check_collision(running_machine &machine, bitmap_ind16 &bitmap)
{
crbaloon_state *state = machine.driver_data<crbaloon_state>();
int y;
@@ -148,7 +148,7 @@ static void draw_sprite_and_check_collision(running_machine &machine, bitmap_t &
}
-SCREEN_UPDATE( crbaloon )
+SCREEN_UPDATE_IND16( crbaloon )
{
crbaloon_state *state = screen.machine().driver_data<crbaloon_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/crgolf.c b/src/mame/video/crgolf.c
index 5a22108ceeb..89a0eccae05 100644
--- a/src/mame/video/crgolf.c
+++ b/src/mame/video/crgolf.c
@@ -111,7 +111,7 @@ static VIDEO_START( crgolf )
*
*************************************/
-static SCREEN_UPDATE( crgolf )
+static SCREEN_UPDATE_RGB32( crgolf )
{
crgolf_state *state = screen.machine().driver_data<crgolf_state>();
int flip = *state->m_screen_flip & 1;
@@ -196,10 +196,9 @@ MACHINE_CONFIG_FRAGMENT( crgolf_video )
MCFG_VIDEO_START(crgolf)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 247)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_UPDATE(crgolf)
+ MCFG_SCREEN_UPDATE_STATIC(crgolf)
MACHINE_CONFIG_END
diff --git a/src/mame/video/crimfght.c b/src/mame/video/crimfght.c
index 1aedd4a7847..44ffc04f111 100644
--- a/src/mame/video/crimfght.c
+++ b/src/mame/video/crimfght.c
@@ -77,7 +77,7 @@ VIDEO_START( crimfght )
***************************************************************************/
-SCREEN_UPDATE( crimfght )
+SCREEN_UPDATE_IND16( crimfght )
{
crimfght_state *state = screen.machine().driver_data<crimfght_state>();
diff --git a/src/mame/video/crospang.c b/src/mame/video/crospang.c
index c18b252f9fb..4f97eea4d33 100644
--- a/src/mame/video/crospang.c
+++ b/src/mame/video/crospang.c
@@ -140,7 +140,7 @@ static TILE_GET_INFO( get_fg_tile_info )
*/
/* jumpkids / tumbleb.c! */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
crospang_state *state = machine.driver_data<crospang_state>();
int offs;
@@ -215,7 +215,7 @@ VIDEO_START( crospang )
tilemap_set_transparent_pen(state->m_fg_layer, 0);
}
-SCREEN_UPDATE( crospang )
+SCREEN_UPDATE_IND16( crospang )
{
crospang_state *state = screen.machine().driver_data<crospang_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_layer, 0, 0);
diff --git a/src/mame/video/crshrace.c b/src/mame/video/crshrace.c
index 25c35de3ad5..2d2f82103d3 100644
--- a/src/mame/video/crshrace.c
+++ b/src/mame/video/crshrace.c
@@ -99,7 +99,7 @@ WRITE16_HANDLER( crshrace_gfxctrl_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
crshrace_state *state = machine.driver_data<crshrace_state>();
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
@@ -171,21 +171,21 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-static void draw_bg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
crshrace_state *state = machine.driver_data<crshrace_state>();
tilemap_draw(bitmap, cliprect, state->m_tilemap2, 0, 0);
}
-static void draw_fg(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_fg(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
crshrace_state *state = machine.driver_data<crshrace_state>();
k053936_zoom_draw(state->m_k053936, bitmap, cliprect, state->m_tilemap1, 0, 0, 1);
}
-SCREEN_UPDATE( crshrace )
+SCREEN_UPDATE_IND16( crshrace )
{
crshrace_state *state = screen.machine().driver_data<crshrace_state>();
diff --git a/src/mame/video/cvs.c b/src/mame/video/cvs.c
index 9f32c7746a5..8d05929a231 100644
--- a/src/mame/video/cvs.c
+++ b/src/mame/video/cvs.c
@@ -169,14 +169,14 @@ VIDEO_START( cvs )
}
/* create helper bitmaps */
- state->m_background_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_collision_background = machine.primary_screen->alloc_compatible_bitmap();
- state->m_scrolled_collision_background = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_background_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_collision_background.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_scrolled_collision_background.allocate(machine.primary_screen->width(), machine.primary_screen->height());
/* register save */
- state->save_item(NAME(*state->m_background_bitmap));
- state->save_item(NAME(*state->m_collision_background));
- state->save_item(NAME(*state->m_scrolled_collision_background));
+ state->save_item(NAME(state->m_background_bitmap));
+ state->save_item(NAME(state->m_collision_background));
+ state->save_item(NAME(state->m_scrolled_collision_background));
}
@@ -187,7 +187,7 @@ void cvs_scroll_stars( running_machine &machine )
}
-SCREEN_UPDATE( cvs )
+SCREEN_UPDATE_IND16( cvs )
{
cvs_state *state = screen.machine().driver_data<cvs_state>();
static const int ram_based_char_start_indices[] = { 0xe0, 0xc0, 0x100, 0x80 };
@@ -208,7 +208,7 @@ SCREEN_UPDATE( cvs )
int gfxnum = (code < ram_based_char_start_indices[state->m_character_banking_mode]) ? 0 : 1;
- drawgfx_opaque(*state->m_background_bitmap, state->m_background_bitmap->cliprect(), screen.machine().gfx[gfxnum],
+ drawgfx_opaque(state->m_background_bitmap, state->m_background_bitmap.cliprect(), screen.machine().gfx[gfxnum],
code, color,
0, 0,
x, y);
@@ -224,7 +224,7 @@ SCREEN_UPDATE( cvs )
collision_color = 0x102;
}
- drawgfx_opaque(*state->m_collision_background, state->m_collision_background->cliprect(), screen.machine().gfx[gfxnum],
+ drawgfx_opaque(state->m_collision_background, state->m_collision_background.cliprect(), screen.machine().gfx[gfxnum],
code, collision_color,
0, 0,
x, y);
@@ -241,13 +241,13 @@ SCREEN_UPDATE( cvs )
scroll[6] = 0;
scroll[7] = 0;
- copyscrollbitmap(bitmap, *state->m_background_bitmap, 0, 0, 8, scroll, cliprect);
- copyscrollbitmap(*state->m_scrolled_collision_background, *state->m_collision_background, 0, 0, 8, scroll, cliprect);
+ copyscrollbitmap(bitmap, state->m_background_bitmap, 0, 0, 8, scroll, cliprect);
+ copyscrollbitmap(state->m_scrolled_collision_background, state->m_collision_background, 0, 0, 8, scroll, cliprect);
/* update the S2636 chips */
- bitmap_t &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
- bitmap_t &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
- bitmap_t &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
+ bitmap_ind16 &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
/* Bullet Hardware */
for (offs = 8; offs < 256; offs++ )
@@ -266,7 +266,7 @@ SCREEN_UPDATE( cvs )
state->m_collision_register |= 0x08;
/* Bullet/Background Collision */
- if (colortable_entry_get_value(screen.machine().colortable, state->m_scrolled_collision_background->pix16(offs, bx)))
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_scrolled_collision_background.pix16(offs, bx)))
state->m_collision_register |= 0x80;
bitmap.pix16(offs, bx) = BULLET_STAR_PEN;
@@ -301,7 +301,7 @@ SCREEN_UPDATE( cvs )
if (S2636_IS_PIXEL_DRAWN(pixel0) && S2636_IS_PIXEL_DRAWN(pixel2)) state->m_collision_register |= 0x04;
/* S2636 vs. background collision detection */
- if (colortable_entry_get_value(screen.machine().colortable, state->m_scrolled_collision_background->pix16(y, x)))
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_scrolled_collision_background.pix16(y, x)))
{
if (S2636_IS_PIXEL_DRAWN(pixel0)) state->m_collision_register |= 0x10;
if (S2636_IS_PIXEL_DRAWN(pixel1)) state->m_collision_register |= 0x20;
diff --git a/src/mame/video/cyberbal.c b/src/mame/video/cyberbal.c
index 96e7092dca8..780c3b0aaf0 100644
--- a/src/mame/video/cyberbal.c
+++ b/src/mame/video/cyberbal.c
@@ -332,12 +332,12 @@ void cyberbal_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-static UINT32 update_one_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int index)
+static UINT32 update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int index)
{
cyberbal_state *state = screen.machine().driver_data<cyberbal_state>();
atarimo_rect_list rectlist;
rectangle tempclip = cliprect;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r, mooffset, temp;
rectangle visarea = screen.visible_area();
@@ -380,17 +380,17 @@ static UINT32 update_one_screen(screen_device &screen, bitmap_t &bitmap, const r
}
-SCREEN_UPDATE( cyberbal_left )
+SCREEN_UPDATE_IND16( cyberbal_left )
{
return update_one_screen(screen, bitmap, cliprect, 0);
}
-SCREEN_UPDATE( cyberbal_right )
+SCREEN_UPDATE_IND16( cyberbal_right )
{
return update_one_screen(screen, bitmap, cliprect, 1);
}
-SCREEN_UPDATE( cyberbal2p )
+SCREEN_UPDATE_IND16( cyberbal2p )
{
return update_one_screen(screen, bitmap, cliprect, 0);
}
diff --git a/src/mame/video/darius.c b/src/mame/video/darius.c
index 0002677dc6e..4a06d2a20a5 100644
--- a/src/mame/video/darius.c
+++ b/src/mame/video/darius.c
@@ -46,7 +46,7 @@ WRITE16_HANDLER( darius_fg_layer_w )
/***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs )
{
darius_state *state = machine.driver_data<darius_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -92,7 +92,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int xoffs)
+static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs)
{
darius_state *state = screen.machine().driver_data<darius_state>();
@@ -116,7 +116,7 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-SCREEN_UPDATE( darius_left ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 0); }
-SCREEN_UPDATE( darius_middle ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 1); }
-SCREEN_UPDATE( darius_right ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 2); }
+SCREEN_UPDATE_IND16( darius_left ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 0); }
+SCREEN_UPDATE_IND16( darius_middle ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 1); }
+SCREEN_UPDATE_IND16( darius_right ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 2); }
diff --git a/src/mame/video/darkmist.c b/src/mame/video/darkmist.c
index 3a2a450f794..81954f451ca 100644
--- a/src/mame/video/darkmist.c
+++ b/src/mame/video/darkmist.c
@@ -127,7 +127,7 @@ VIDEO_START(darkmist)
tilemap_set_transparent_pen(state->m_txtilemap, 0);
}
-SCREEN_UPDATE( darkmist)
+SCREEN_UPDATE_IND16( darkmist)
{
darkmist_state *state = screen.machine().driver_data<darkmist_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/darkseal.c b/src/mame/video/darkseal.c
index c72b25e1f39..3e7366c07de 100644
--- a/src/mame/video/darkseal.c
+++ b/src/mame/video/darkseal.c
@@ -59,7 +59,7 @@ VIDEO_START( darkseal )
/******************************************************************************/
-SCREEN_UPDATE( darkseal )
+SCREEN_UPDATE_IND16( darkseal )
{
darkseal_state *state = screen.machine().driver_data<darkseal_state>();
tilemap_set_flip_all(screen.machine(),state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
@@ -73,7 +73,7 @@ SCREEN_UPDATE( darkseal )
deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
diff --git a/src/mame/video/dassault.c b/src/mame/video/dassault.c
index a1896e7c1b7..df0b4449835 100644
--- a/src/mame/video/dassault.c
+++ b/src/mame/video/dassault.c
@@ -11,7 +11,7 @@
/******************************************************************************/
-static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, int pf_priority )
+static void draw_sprites( running_machine& machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pf_priority )
{
dassault_state *state = machine.driver_data<dassault_state>();
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
@@ -173,7 +173,7 @@ static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rect
/******************************************************************************/
-SCREEN_UPDATE( dassault )
+SCREEN_UPDATE_RGB32( dassault )
{
dassault_state *state = screen.machine().driver_data<dassault_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
diff --git a/src/mame/video/dbz.c b/src/mame/video/dbz.c
index 2ef48137e9b..8d8683bf919 100644
--- a/src/mame/video/dbz.c
+++ b/src/mame/video/dbz.c
@@ -97,7 +97,7 @@ VIDEO_START( dbz )
k053247_set_sprite_offs(state->m_k053246, -87, 32);
}
-SCREEN_UPDATE( dbz )
+SCREEN_UPDATE_IND16( dbz )
{
dbz_state *state = screen.machine().driver_data<dbz_state>();
static const int K053251_CI[6] = { K053251_CI3, K053251_CI4, K053251_CI4, K053251_CI4, K053251_CI2, K053251_CI1 };
diff --git a/src/mame/video/dc.c b/src/mame/video/dc.c
index 1b28fb23232..577453a4b7c 100644
--- a/src/mame/video/dc.c
+++ b/src/mame/video/dc.c
@@ -131,8 +131,8 @@ static void pvr_accumulationbuffer_to_framebuffer(address_space *space, int x,in
// the real accumulation buffer is a 32x32x8bpp buffer into which tiles get rendered before they get copied to the framebuffer
// our implementation is not currently tile based, and thus the accumulation buffer is screen sized
-static bitmap_t *fake_accumulationbuffer_bitmap;
-static void render_to_accumulation_buffer(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect);
+static bitmap_rgb32 *fake_accumulationbuffer_bitmap;
+static void render_to_accumulation_buffer(running_machine &machine,bitmap_rgb32 &bitmap,const rectangle &cliprect);
typedef struct texinfo {
UINT32 address, vqbase;
@@ -1716,7 +1716,7 @@ static void computedilated(void)
dilatechose[(b << 3) + a]=3+(a < b ? a : b);
}
-static void render_hline(running_machine &machine,bitmap_t &bitmap, texinfo *ti, int y, float xl, float xr, float ul, float ur, float vl, float vr, float wl, float wr)
+static void render_hline(running_machine &machine,bitmap_rgb32 &bitmap, texinfo *ti, int y, float xl, float xr, float ul, float ur, float vl, float vr, float wl, float wr)
{
dc_state *state = machine.driver_data<dc_state>();
int xxl, xxr;
@@ -1802,7 +1802,7 @@ static void render_hline(running_machine &machine,bitmap_t &bitmap, texinfo *ti,
}
}
-static void render_span(running_machine &machine, bitmap_t &bitmap, texinfo *ti,
+static void render_span(running_machine &machine, bitmap_rgb32 &bitmap, texinfo *ti,
float y0, float y1,
float xl, float xr,
float ul, float ur,
@@ -1901,7 +1901,7 @@ static void sort_vertices(const vert *v, int *i0, int *i1, int *i2)
}
-static void render_tri_sorted(running_machine &machine, bitmap_t &bitmap, texinfo *ti, const vert *v0, const vert *v1, const vert *v2)
+static void render_tri_sorted(running_machine &machine, bitmap_rgb32 &bitmap, texinfo *ti, const vert *v0, const vert *v1, const vert *v2)
{
float dy01, dy02, dy12;
// float dy; // unused, compiler complains about this
@@ -1967,7 +1967,7 @@ static void render_tri_sorted(running_machine &machine, bitmap_t &bitmap, texinf
}
}
-static void render_tri(running_machine &machine, bitmap_t &bitmap, texinfo *ti, const vert *v)
+static void render_tri(running_machine &machine, bitmap_rgb32 &bitmap, texinfo *ti, const vert *v)
{
int i0, i1, i2;
@@ -1975,7 +1975,7 @@ static void render_tri(running_machine &machine, bitmap_t &bitmap, texinfo *ti,
render_tri_sorted(machine, bitmap, ti, v+i0, v+i1, v+i2);
}
-static void render_to_accumulation_buffer(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect)
+static void render_to_accumulation_buffer(running_machine &machine,bitmap_rgb32 &bitmap,const rectangle &cliprect)
{
dc_state *state = machine.driver_data<dc_state>();
address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM);
@@ -2204,7 +2204,7 @@ static void pvr_accumulationbuffer_to_framebuffer(address_space *space, int x,in
}
-static void pvr_drawframebuffer(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect)
+static void pvr_drawframebuffer(running_machine &machine,bitmap_rgb32 &bitmap,const rectangle &cliprect)
{
dc_state *state = machine.driver_data<dc_state>();
@@ -2637,11 +2637,11 @@ VIDEO_START(dc)
state->endofrender_timer_tsp->adjust(attotime::never);
state->endofrender_timer_video->adjust(attotime::never);
- fake_accumulationbuffer_bitmap = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_RGB32);
+ fake_accumulationbuffer_bitmap = auto_bitmap_rgb32_alloc(machine,1024,1024);
}
-SCREEN_UPDATE(dc)
+SCREEN_UPDATE_RGB32(dc)
{
dc_state *state = screen.machine().driver_data<dc_state>();
diff --git a/src/mame/video/dcheese.c b/src/mame/video/dcheese.c
index db110a0b262..7561a2c0876 100644
--- a/src/mame/video/dcheese.c
+++ b/src/mame/video/dcheese.c
@@ -95,7 +95,7 @@ VIDEO_START( dcheese )
dcheese_state *state = machine.driver_data<dcheese_state>();
/* the destination bitmap is not directly accessible to the CPU */
- state->m_dstbitmap = auto_bitmap_alloc(machine, DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT, machine.primary_screen->format());
+ state->m_dstbitmap = auto_bitmap_ind16_alloc(machine, DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT);
/* create a timer */
state->m_blitter_timer = machine.scheduler().timer_alloc(FUNC(blitter_scanline_callback));
@@ -116,7 +116,7 @@ VIDEO_START( dcheese )
*
*************************************/
-SCREEN_UPDATE( dcheese )
+SCREEN_UPDATE_IND16( dcheese )
{
dcheese_state *state = screen.machine().driver_data<dcheese_state>();
int x, y;
diff --git a/src/mame/video/dcon.c b/src/mame/video/dcon.c
index f3deb21529c..13934d05ae8 100644
--- a/src/mame/video/dcon.c
+++ b/src/mame/video/dcon.c
@@ -151,7 +151,7 @@ VIDEO_START( dcon )
state->m_gfx_bank_select = 0;
}
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine& machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
dcon_state *state = machine.driver_data<dcon_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -277,7 +277,7 @@ static void draw_sprites(running_machine& machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( dcon )
+SCREEN_UPDATE_IND16( dcon )
{
dcon_state *state = screen.machine().driver_data<dcon_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
@@ -303,7 +303,7 @@ SCREEN_UPDATE( dcon )
return 0;
}
-SCREEN_UPDATE( sdgndmps )
+SCREEN_UPDATE_IND16( sdgndmps )
{
dcon_state *state = screen.machine().driver_data<dcon_state>();
diff --git a/src/mame/video/dday.c b/src/mame/video/dday.c
index 6692264d9df..6f5fbf89578 100644
--- a/src/mame/video/dday.c
+++ b/src/mame/video/dday.c
@@ -219,7 +219,7 @@ VIDEO_START( dday )
state->m_text_tilemap = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
state->m_sl_tilemap = tilemap_create(machine, get_sl_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
- state->m_main_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_main_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
tilemap_set_transmask(state->m_bg_tilemap, 0, 0x00f0, 0xff0f); /* pens 0-3 have priority over the foreground layer */
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
@@ -315,26 +315,26 @@ WRITE8_HANDLER( dday_control_w )
***************************************************************************/
-SCREEN_UPDATE( dday )
+SCREEN_UPDATE_IND16( dday )
{
dday_state *state = screen.machine().driver_data<dday_state>();
- tilemap_draw(*state->m_main_bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
- tilemap_draw(*state->m_main_bitmap, cliprect, state->m_fg_tilemap, 0, 0);
- tilemap_draw(*state->m_main_bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
- tilemap_draw(*state->m_main_bitmap, cliprect, state->m_text_tilemap, 0, 0);
+ tilemap_draw(state->m_main_bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
+ tilemap_draw(state->m_main_bitmap, cliprect, state->m_fg_tilemap, 0, 0);
+ tilemap_draw(state->m_main_bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
+ tilemap_draw(state->m_main_bitmap, cliprect, state->m_text_tilemap, 0, 0);
if (state->m_sl_enable)
{
/* apply shadow */
int x, y;
- bitmap_t &sl_bitmap = tilemap_get_pixmap(state->m_sl_tilemap);
+ bitmap_ind16 &sl_bitmap = tilemap_get_pixmap(state->m_sl_tilemap);
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- UINT16 src_pixel = state->m_main_bitmap->pix16(y, x);
+ UINT16 src_pixel = state->m_main_bitmap.pix16(y, x);
if (sl_bitmap.pix16(y, x) == 0xff)
src_pixel += screen.machine().total_colors();
@@ -343,7 +343,7 @@ SCREEN_UPDATE( dday )
}
}
else
- copybitmap(bitmap, *state->m_main_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_main_bitmap, 0, 0, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/ddragon.c b/src/mame/video/ddragon.c
index c1f5696b9d3..7278b86ff24 100644
--- a/src/mame/video/ddragon.c
+++ b/src/mame/video/ddragon.c
@@ -154,7 +154,7 @@ WRITE8_HANDLER( ddragon_fgvideoram_w )
cliprect,gfx, \
(which + order),color,flipx,flipy,sx,sy,0);
-static void draw_sprites( running_machine& machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine& machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
ddragon_state *state = machine.driver_data<ddragon_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -240,7 +240,7 @@ static void draw_sprites( running_machine& machine, bitmap_t &bitmap,const recta
#undef DRAW_SPRITE
-SCREEN_UPDATE( ddragon )
+SCREEN_UPDATE_IND16( ddragon )
{
ddragon_state *state = screen.machine().driver_data<ddragon_state>();
diff --git a/src/mame/video/ddragon3.c b/src/mame/video/ddragon3.c
index d0277a6dd4f..6bb960bcac3 100644
--- a/src/mame/video/ddragon3.c
+++ b/src/mame/video/ddragon3.c
@@ -116,7 +116,7 @@ VIDEO_START( ddragon3 )
* 6,7| unused
*/
-static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ddragon3_state *state = machine.driver_data<ddragon3_state>();
UINT16 *source = state->m_spriteram;
@@ -162,7 +162,7 @@ static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( ddragon3 )
+SCREEN_UPDATE_IND16( ddragon3 )
{
ddragon3_state *state = screen.machine().driver_data<ddragon3_state>();
@@ -192,7 +192,7 @@ SCREEN_UPDATE( ddragon3 )
return 0;
}
-SCREEN_UPDATE( ctribe )
+SCREEN_UPDATE_IND16( ctribe )
{
ddragon3_state *state = screen.machine().driver_data<ddragon3_state>();
diff --git a/src/mame/video/ddribble.c b/src/mame/video/ddribble.c
index a18a6af8bd8..b9170038a3d 100644
--- a/src/mame/video/ddribble.c
+++ b/src/mame/video/ddribble.c
@@ -176,7 +176,7 @@ byte #4: attributes
***************************************************************************/
-static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8* source, int lenght, int gfxset, int flipscreen )
+static void draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* source, int lenght, int gfxset, int flipscreen )
{
gfx_element *gfx = machine.gfx[gfxset];
const UINT8 *finish = source + lenght;
@@ -250,7 +250,7 @@ static void draw_sprites( running_machine& machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( ddribble )
+SCREEN_UPDATE_IND16( ddribble )
{
ddribble_state *state = screen.machine().driver_data<ddribble_state>();
set_pens(screen.machine());
diff --git a/src/mame/video/deadang.c b/src/mame/video/deadang.c
index dfdfb2ae16d..91328233d9a 100644
--- a/src/mame/video/deadang.c
+++ b/src/mame/video/deadang.c
@@ -87,7 +87,7 @@ VIDEO_START( deadang )
tilemap_set_transparent_pen(state->m_text_layer, 15);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
deadang_state *state = machine.driver_data<deadang_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -130,7 +130,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( deadang )
+SCREEN_UPDATE_IND16( deadang )
{
deadang_state *state = screen.machine().driver_data<deadang_state>();
/* Setup the tilemaps */
diff --git a/src/mame/video/dec0.c b/src/mame/video/dec0.c
index c8f48bee4d5..de01872c8f9 100644
--- a/src/mame/video/dec0.c
+++ b/src/mame/video/dec0.c
@@ -45,7 +45,7 @@ WRITE16_HANDLER( dec0_paletteram_b_w )
/******************************************************************************/
-SCREEN_UPDATE( hbarrel )
+SCREEN_UPDATE_IND16( hbarrel )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
@@ -64,7 +64,7 @@ SCREEN_UPDATE( hbarrel )
/******************************************************************************/
-SCREEN_UPDATE( baddudes )
+SCREEN_UPDATE_IND16( baddudes )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
flip_screen_set(screen.machine(), screen.machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
@@ -103,7 +103,7 @@ SCREEN_UPDATE( baddudes )
/******************************************************************************/
-SCREEN_UPDATE( robocop )
+SCREEN_UPDATE_IND16( robocop )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
int trans;
@@ -149,7 +149,7 @@ SCREEN_UPDATE( robocop )
/******************************************************************************/
-SCREEN_UPDATE( birdtry )
+SCREEN_UPDATE_IND16( birdtry )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
@@ -166,7 +166,7 @@ SCREEN_UPDATE( birdtry )
/******************************************************************************/
-SCREEN_UPDATE( hippodrm )
+SCREEN_UPDATE_IND16( hippodrm )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
flip_screen_set(screen.machine(), screen.machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
@@ -189,7 +189,7 @@ SCREEN_UPDATE( hippodrm )
/******************************************************************************/
-SCREEN_UPDATE( slyspy )
+SCREEN_UPDATE_IND16( slyspy )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
flip_screen_set(screen.machine(), screen.machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
@@ -209,7 +209,7 @@ SCREEN_UPDATE( slyspy )
/******************************************************************************/
-SCREEN_UPDATE( midres )
+SCREEN_UPDATE_IND16( midres )
{
dec0_state *state = screen.machine().driver_data<dec0_state>();
int trans;
diff --git a/src/mame/video/dec8.c b/src/mame/video/dec8.c
index fe19c3b1121..8fa38fb90cd 100644
--- a/src/mame/video/dec8.c
+++ b/src/mame/video/dec8.c
@@ -222,7 +222,7 @@ WRITE8_HANDLER( gondo_scroll_w )
/******************************************************************************/
-static void srdarwin_draw_sprites( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void srdarwin_draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
int offs;
@@ -272,7 +272,7 @@ static void srdarwin_draw_sprites( running_machine& machine, bitmap_t &bitmap, c
/******************************************************************************/
-SCREEN_UPDATE( cobracom )
+SCREEN_UPDATE_IND16( cobracom )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
@@ -318,7 +318,7 @@ VIDEO_START( cobracom )
/******************************************************************************/
-SCREEN_UPDATE( ghostb )
+SCREEN_UPDATE_IND16( ghostb )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
screen.machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(screen.machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
@@ -353,7 +353,7 @@ VIDEO_START( ghostb )
/******************************************************************************/
-SCREEN_UPDATE( oscar )
+SCREEN_UPDATE_IND16( oscar )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
flip_screen_set(screen.machine(), state->m_bg_control[1] >> 7);
@@ -394,7 +394,7 @@ VIDEO_START( oscar )
/******************************************************************************/
-SCREEN_UPDATE( lastmisn )
+SCREEN_UPDATE_IND16( lastmisn )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, ((state->m_scroll2[0] << 8)+ state->m_scroll2[1]));
@@ -406,7 +406,7 @@ SCREEN_UPDATE( lastmisn )
return 0;
}
-SCREEN_UPDATE( shackled )
+SCREEN_UPDATE_IND16( shackled )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, ((state->m_scroll2[0] << 8) + state->m_scroll2[1]));
@@ -483,7 +483,7 @@ VIDEO_START( shackled )
/******************************************************************************/
-SCREEN_UPDATE( srdarwin )
+SCREEN_UPDATE_IND16( srdarwin )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, (state->m_scroll2[0] << 8) + state->m_scroll2[1]);
@@ -548,7 +548,7 @@ VIDEO_START( srdarwin )
/******************************************************************************/
-SCREEN_UPDATE( gondo )
+SCREEN_UPDATE_IND16( gondo )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, ((state->m_scroll2[0] << 8) + state->m_scroll2[1]));
@@ -562,7 +562,7 @@ SCREEN_UPDATE( gondo )
return 0;
}
-SCREEN_UPDATE( garyoret )
+SCREEN_UPDATE_IND16( garyoret )
{
dec8_state *state = screen.machine().driver_data<dec8_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, ((state->m_scroll2[0] << 8) + state->m_scroll2[1]));
diff --git a/src/mame/video/decbac06.c b/src/mame/video/decbac06.c
index 39a6497de08..34c66625095 100644
--- a/src/mame/video/decbac06.c
+++ b/src/mame/video/decbac06.c
@@ -191,7 +191,7 @@ void deco_bac06_device::device_reset()
void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
const rectangle &cliprect,
tilemap_t *tilemap_ptr,
const UINT16 *rowscroll_ptr,
@@ -205,8 +205,8 @@ void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
UINT16 colpricondition
)
{
- const bitmap_t &src_bitmap = tilemap_get_pixmap(tilemap_ptr);
- const bitmap_t &flags_bitmap = tilemap_get_flagsmap(tilemap_ptr);
+ const bitmap_ind16 &src_bitmap = tilemap_get_pixmap(tilemap_ptr);
+ const bitmap_ind8 &flags_bitmap = tilemap_get_flagsmap(tilemap_ptr);
int x, y, p, colpri;
int column_offset=0, src_x=0, src_y=0;
UINT32 scrollx = 0;
@@ -285,7 +285,7 @@ void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
}
}
-void deco_bac06_device::deco_bac06_pf_draw(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition)
+void deco_bac06_device::deco_bac06_pf_draw(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition)
{
tilemap_t* tm = 0;
@@ -319,7 +319,7 @@ void deco_bac06_device::deco_bac06_pf_draw(running_machine &machine,bitmap_t &bi
}
// used for pocket gal bootleg, which doesn't set registers properly and simply expects a fixed size tilemap.
-void deco_bac06_device::deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect,int flags, int mode, int type)
+void deco_bac06_device::deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type)
{
tilemap_t* tm = 0;
if (!mode) tm = pf8x8_tilemap[type];
diff --git a/src/mame/video/decbac06.h b/src/mame/video/decbac06.h
index 13ec1075f1c..618ce929722 100644
--- a/src/mame/video/decbac06.h
+++ b/src/mame/video/decbac06.h
@@ -21,8 +21,8 @@ public:
UINT16 pf_control_0[8];
UINT16 pf_control_1[8];
- void deco_bac06_pf_draw(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition);
- void deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect,int flags, int mode, int type);
+ void deco_bac06_pf_draw(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition);
+ void deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type);
UINT8 get_flip_state(void) { return pf_control_0[0]&0x80; };
void set_colmask(int data) { m_gfxcolmask = data; }
@@ -42,7 +42,7 @@ protected:
UINT8 m_bppmask;
void custom_tilemap_draw(running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
const rectangle &cliprect,
tilemap_t *tilemap_ptr,
const UINT16 *rowscroll_ptr,
diff --git a/src/mame/video/deckarn.c b/src/mame/video/deckarn.c
index cb3b5aac4aa..8e3af759bb6 100644
--- a/src/mame/video/deckarn.c
+++ b/src/mame/video/deckarn.c
@@ -28,7 +28,7 @@ void deco_karnovsprites_device::device_reset()
}
-void deco_karnovsprites_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram, int size, int priority )
+void deco_karnovsprites_device::draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram, int size, int priority )
{
int offs;
diff --git a/src/mame/video/deckarn.h b/src/mame/video/deckarn.h
index 60bc9b38a70..617b890a94d 100644
--- a/src/mame/video/deckarn.h
+++ b/src/mame/video/deckarn.h
@@ -5,7 +5,7 @@ class deco_karnovsprites_device : public device_t
public:
deco_karnovsprites_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
void set_gfxregion(int region) { m_gfxregion = region; };
- void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram, int size, int priority );
+ void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram, int size, int priority );
static void set_gfx_region(device_t &device, int region);
protected:
diff --git a/src/mame/video/decmxc06.c b/src/mame/video/decmxc06.c
index 7d3c2b7026f..6facb6a72ca 100644
--- a/src/mame/video/decmxc06.c
+++ b/src/mame/video/decmxc06.c
@@ -55,7 +55,7 @@ deco_mxc06_device::deco_mxc06_device(const machine_config &mconfig, const char *
/* this implementation was originally from Mad Motor */
-void deco_mxc06_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram, int pri_mask, int pri_val, int col_mask )
+void deco_mxc06_device::draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram, int pri_mask, int pri_val, int col_mask )
{
int offs;
diff --git a/src/mame/video/decmxc06.h b/src/mame/video/decmxc06.h
index 6bb82ce558d..038208ec809 100644
--- a/src/mame/video/decmxc06.h
+++ b/src/mame/video/decmxc06.h
@@ -7,7 +7,7 @@ public:
deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
static void set_gfx_region(device_t &device, int region);
void set_gfxregion(int region) { m_gfxregion = region; };
- void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram16, int pri_mask, int pri_val, int col_mask );
+ void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram16, int pri_mask, int pri_val, int col_mask );
void set_pri_type( int type ) { m_priority_type = type; }
protected:
virtual void device_start();
diff --git a/src/mame/video/deco16ic.c b/src/mame/video/deco16ic.c
index 25f197a0f44..bcd11f59db8 100644
--- a/src/mame/video/deco16ic.c
+++ b/src/mame/video/deco16ic.c
@@ -355,9 +355,10 @@ static TILE_GET_INFO_DEVICE( get_pf1_tile_info_b )
by the Mame core.
*/
+template<class _BitmapClass>
static void custom_tilemap_draw(
device_t *device,
- bitmap_t &bitmap,
+ _BitmapClass &bitmap,
const rectangle &cliprect,
tilemap_t *tilemap0_8x8,
tilemap_t *tilemap0_16x16,
@@ -379,8 +380,8 @@ static void custom_tilemap_draw(
running_machine &machine = device->machine();
tilemap_t *tilemap0 = BIT(control1, 7) ? tilemap0_8x8 : tilemap0_16x16;
tilemap_t *tilemap1 = BIT(control1, 7) ? tilemap1_8x8 : tilemap1_16x16;
- const bitmap_t *src_bitmap0 = tilemap0 ? &tilemap_get_pixmap(tilemap0) : NULL;
- const bitmap_t *src_bitmap1 = tilemap1 ? &tilemap_get_pixmap(tilemap1) : NULL;
+ const bitmap_ind16 *src_bitmap0 = tilemap0 ? &tilemap_get_pixmap(tilemap0) : NULL;
+ const bitmap_ind16 *src_bitmap1 = tilemap1 ? &tilemap_get_pixmap(tilemap1) : NULL;
int width_mask, height_mask, x, y, p;
int column_offset, src_x = 0, src_y = 0;
int row_type = 1 << ((control0 >> 3) & 0xf);
@@ -410,73 +411,42 @@ static void custom_tilemap_draw(
src_x &= width_mask;
- if (bitmap.bpp() == 16)
+ /* boogwing */
+ for (x = 0; x < 320; x++)
{
- for (x = 0; x < 320; x++)
- {
- if (rowscroll_ptr && BIT(control1, 5))
- column_offset = rowscroll_ptr[0x200 + ((src_x & 0x1ff) / col_type)];
- else
- column_offset = 0;
+ if (rowscroll_ptr && BIT(control1, 5))
+ column_offset = rowscroll_ptr[0x200 + ((src_x & 0x1ff) / col_type)];
+ else
+ column_offset = 0;
- p = src_bitmap0->pix16((src_y + column_offset) & height_mask, src_x);
+ p = src_bitmap0->pix16((src_y + column_offset) & height_mask, src_x);
- if (src_bitmap1)
+ if (src_bitmap1)
+ {
+ if (!is_tattoo)
{
+ // does boogie wings actually use this, or is the tattoo assassing code correct in this mode?
p |= (src_bitmap1->pix16((src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
}
-
- src_x = (src_x + 1) & width_mask;
-
- if ((flags & TILEMAP_DRAW_OPAQUE) || (p & trans_mask))
- {
- bitmap.pix16(y, x) = machine.pens[p];
- if (machine.priority_bitmap.valid())
- {
- UINT8 *pri = &machine.priority_bitmap.pix8(y);
- pri[x] |= priority;
- }
- }
- }
- }
- else
- {
- /* boogwing */
- for (x = 0; x < 320; x++)
- {
- if (rowscroll_ptr && BIT(control1, 5))
- column_offset = rowscroll_ptr[0x200 + ((src_x & 0x1ff) / col_type)];
else
- column_offset = 0;
-
- p = src_bitmap0->pix16((src_y + column_offset) & height_mask, src_x);
-
- if (src_bitmap1)
{
- if (!is_tattoo)
- {
- // does boogie wings actually use this, or is the tattoo assassing code correct in this mode?
- p |= (src_bitmap1->pix16((src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
- }
- else
- {
- UINT16 p2 = src_bitmap1->pix16((src_y + column_offset) & height_mask, src_x);
- p = 0x200+( ((p&0x30)<<4) | (p&0x0f) | ((p2 & 0x0f)<<4));
- }
+ UINT16 p2 = src_bitmap1->pix16((src_y + column_offset) & height_mask, src_x);
+ p = 0x200+( ((p&0x30)<<4) | (p&0x0f) | ((p2 & 0x0f)<<4));
}
- src_x = (src_x + 1) & width_mask;
+ }
+ src_x = (src_x + 1) & width_mask;
- if ((flags & TILEMAP_DRAW_OPAQUE) || (p & trans_mask))
+ if ((flags & TILEMAP_DRAW_OPAQUE) || (p & trans_mask))
+ {
+ bitmap.pix(y, x) = machine.pens[p];
+ if (machine.priority_bitmap.valid())
{
- bitmap.pix32(y, x) = machine.pens[p];
- if (machine.priority_bitmap.valid())
- {
- UINT8 *pri = &machine.priority_bitmap.pix8(y);
- pri[x] |= priority;
- }
+ UINT8 *pri = &machine.priority_bitmap.pix8(y);
+ pri[x] |= priority;
}
}
}
+
src_y = (src_y + 1) & height_mask;
}
}
@@ -841,7 +811,7 @@ void deco16ic_pf_update( device_t *device, const UINT16 *rowscroll_1_ptr, const
/*****************************************************************************************/
-void deco16ic_print_debug_info(device_t *device, bitmap_t &bitmap)
+void deco16ic_print_debug_info(device_t *device, bitmap_ind16 &bitmap)
{
deco16ic_state *deco16ic = get_safe_token(device);
char buf[64*5];
@@ -862,7 +832,8 @@ void deco16ic_print_debug_info(device_t *device, bitmap_t &bitmap)
/*****************************************************************************************/
-void deco16ic_tilemap_1_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+template<class _BitmapClass>
+void deco16ic_tilemap_1_draw_common( device_t *device, _BitmapClass &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
{
deco16ic_state *deco16ic = get_safe_token(device);
@@ -879,7 +850,15 @@ void deco16ic_tilemap_1_draw( device_t *device, bitmap_t &bitmap, const rectangl
}
}
-void deco16ic_tilemap_2_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority)
+void deco16ic_tilemap_1_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+{ deco16ic_tilemap_1_draw_common(device, bitmap, cliprect, flags, priority); }
+
+void deco16ic_tilemap_1_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+{ deco16ic_tilemap_1_draw_common(device, bitmap, cliprect, flags, priority); }
+
+
+template<class _BitmapClass>
+void deco16ic_tilemap_2_draw_common(device_t *device, _BitmapClass &bitmap, const rectangle &cliprect, int flags, UINT32 priority)
{
deco16ic_state *deco16ic = get_safe_token(device);
@@ -896,11 +875,23 @@ void deco16ic_tilemap_2_draw(device_t *device, bitmap_t &bitmap, const rectangle
}
}
+void deco16ic_tilemap_2_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+{ deco16ic_tilemap_2_draw_common(device, bitmap, cliprect, flags, priority); }
+
+void deco16ic_tilemap_2_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+{ deco16ic_tilemap_2_draw_common(device, bitmap, cliprect, flags, priority); }
+
/*****************************************************************************************/
// Combines the output of two 4BPP tilemaps into an 8BPP tilemap
-void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo)
+void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo)
+{
+ deco16ic_state *deco16ic = get_safe_token(device);
+ custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf1_tilemap_16x16, 0, deco16ic->pf2_tilemap_16x16, deco16ic->pf1_rowscroll_ptr, deco16ic->pf12_control[1], deco16ic->pf12_control[2], deco16ic->pf12_control[5] & 0xff, deco16ic->pf12_control[6] & 0xff, 0xf, 4, 0xff, flags, priority, is_tattoo);
+}
+
+void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo)
{
deco16ic_state *deco16ic = get_safe_token(device);
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf1_tilemap_16x16, 0, deco16ic->pf2_tilemap_16x16, deco16ic->pf1_rowscroll_ptr, deco16ic->pf12_control[1], deco16ic->pf12_control[2], deco16ic->pf12_control[5] & 0xff, deco16ic->pf12_control[6] & 0xff, 0xf, 4, 0xff, flags, priority, is_tattoo);
diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h
index 259d6a790ec..f8e1f6b292a 100644
--- a/src/mame/video/deco16ic.h
+++ b/src/mame/video/deco16ic.h
@@ -70,15 +70,18 @@ WRITE32_DEVICE_HANDLER( deco16ic_pf_control_dword_w );
READ32_DEVICE_HANDLER( deco16ic_pf_control_dword_r );
-void deco16ic_print_debug_info(device_t *device, bitmap_t &bitmap);
+void deco16ic_print_debug_info(device_t *device, bitmap_ind16 &bitmap);
void deco16ic_pf_update(device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
-void deco16ic_tilemap_1_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
-void deco16ic_tilemap_2_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
+void deco16ic_tilemap_1_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
+void deco16ic_tilemap_1_draw(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
+void deco16ic_tilemap_2_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
+void deco16ic_tilemap_2_draw(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority);
/* used by boogwing, nitrobal */
-void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo = false);
+void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo = false);
+void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flags, UINT32 priority, int is_tattoo = false);
/* used by robocop2 */
void deco16ic_set_tilemap_colour_mask(device_t *device, int tmap, int mask);
diff --git a/src/mame/video/deco32.c b/src/mame/video/deco32.c
index 64aaf270913..0403054b01e 100644
--- a/src/mame/video/deco32.c
+++ b/src/mame/video/deco32.c
@@ -152,10 +152,10 @@ WRITE32_HANDLER( deco32_palette_dma_w )
INLINE void dragngun_drawgfxzoom(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int transparent_color,
- int scalex, int scaley,bitmap_t *pri_buffer,UINT32 pri_mask, int sprite_screen_width, int sprite_screen_height, UINT8 alpha )
+ int scalex, int scaley,bitmap_ind8 *pri_buffer,UINT32 pri_mask, int sprite_screen_width, int sprite_screen_height, UINT8 alpha )
{
rectangle myclip;
@@ -337,7 +337,7 @@ INLINE void dragngun_drawgfxzoom(
}
}
-static void dragngun_draw_sprites(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT32 *spritedata)
+static void dragngun_draw_sprites(running_machine& machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT32 *spritedata)
{
dragngun_state *state = machine.driver_data<dragngun_state>();
const UINT32 *layout_ram;
@@ -525,7 +525,7 @@ VIDEO_START( fghthist )
{
deco32_state *state = machine.driver_data<deco32_state>();
state->m_dirty_palette = auto_alloc_array(machine, UINT8, 4096);
- machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap(machine);
+ machine.device<decospr_device>("spritegen")->alloc_sprite_bitmap();
state->m_has_ace_ram=0;
}
@@ -558,9 +558,9 @@ VIDEO_START( nslasher )
state->m_dirty_palette = auto_alloc_array(machine, UINT8, 4096);
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_tilemap_alpha_bitmap=auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
- machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap(machine);
- machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap(machine);
+ state->m_tilemap_alpha_bitmap=auto_bitmap_ind16_alloc(machine, width, height );
+ machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap();
+ machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap();
memset(state->m_dirty_palette,0,4096);
state_save_register_global(machine, state->m_pri);
state->m_has_ace_ram=1;
@@ -581,7 +581,7 @@ SCREEN_EOF( dragngun )
/******************************************************************************/
-SCREEN_UPDATE( captaven )
+SCREEN_UPDATE_IND16( captaven )
{
deco32_state *state = screen.machine().driver_data<deco32_state>();
state->m_deco_tilegen1 = screen.machine().device("tilegen1");
@@ -613,12 +613,12 @@ SCREEN_UPDATE( captaven )
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4);
screen.machine().device<decospr_device>("spritegen")->set_alt_format(true);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram16_buffered, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram16_buffered, 0x400);
return 0;
}
-SCREEN_UPDATE( dragngun )
+SCREEN_UPDATE_RGB32( dragngun )
{
deco32_state *state = screen.machine().driver_data<deco32_state>();
state->m_deco_tilegen1 = screen.machine().device("tilegen1");
@@ -662,7 +662,7 @@ SCREEN_UPDATE( dragngun )
}
-SCREEN_UPDATE( fghthist )
+SCREEN_UPDATE_RGB32( fghthist )
{
deco32_state *state = screen.machine().driver_data<deco32_state>();
state->m_deco_tilegen1 = screen.machine().device("tilegen1");
@@ -674,7 +674,7 @@ SCREEN_UPDATE( fghthist )
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);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram16_buffered, 0x800, true);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram16_buffered, 0x800, true);
/* Draw screen */
deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 1);
@@ -682,17 +682,17 @@ SCREEN_UPDATE( fghthist )
if(state->m_pri&1)
{
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 4);
}
else
{
deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 2);
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4);
}
- screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0800, 1024, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0800, 1024, 0x1ff);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
@@ -706,7 +706,7 @@ SCREEN_UPDATE( fghthist )
blending support - it can't be done in-place on the final framebuffer
without a lot of support bitmaps.
*/
-static void mixDualAlphaSprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx0, const gfx_element *gfx1, int mixAlphaTilemap)
+static void mixDualAlphaSprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, const gfx_element *gfx0, const gfx_element *gfx1, int mixAlphaTilemap)
{
deco32_state *state = gfx0->machine().driver_data<deco32_state>();
running_machine &machine = gfx0->machine();
@@ -715,15 +715,15 @@ static void mixDualAlphaSprites(bitmap_t &bitmap, const rectangle &cliprect, con
const pen_t *pal1 = &pens[gfx1->color_base];
const pen_t *pal2 = &pens[machine.gfx[(state->m_pri&1) ? 1 : 2]->color_base];
int x,y;
- bitmap_t* sprite0_mix_bitmap = machine.device<decospr_device>("spritegen1")->get_sprite_temp_bitmap();
- bitmap_t* sprite1_mix_bitmap = machine.device<decospr_device>("spritegen2")->get_sprite_temp_bitmap();
+ bitmap_ind16& sprite0_mix_bitmap = machine.device<decospr_device>("spritegen1")->get_sprite_temp_bitmap();
+ bitmap_ind16& sprite1_mix_bitmap = machine.device<decospr_device>("spritegen2")->get_sprite_temp_bitmap();
/* Mix sprites into main bitmap, based on priority & alpha */
for (y=8; y<248; y++) {
UINT8* tilemapPri=&machine.priority_bitmap.pix8(y);
- UINT16* sprite0=&sprite0_mix_bitmap->pix16(y);
- UINT16* sprite1=&sprite1_mix_bitmap->pix16(y);
+ UINT16* sprite0=&sprite0_mix_bitmap.pix16(y);
+ UINT16* sprite1=&sprite1_mix_bitmap.pix16(y);
UINT32* destLine=&bitmap.pix32(y);
UINT16* alphaTilemap=&state->m_tilemap_alpha_bitmap->pix16(y);
@@ -839,7 +839,7 @@ static void mixDualAlphaSprites(bitmap_t &bitmap, const rectangle &cliprect, con
}
}
-SCREEN_UPDATE( nslasher )
+SCREEN_UPDATE_RGB32( nslasher )
{
deco32_state *state = screen.machine().driver_data<deco32_state>();
int alphaTilemap=0;
@@ -864,8 +864,8 @@ SCREEN_UPDATE( nslasher )
screen.machine().device<decospr_device>("spritegen1")->set_pix_raw_shift(8);
screen.machine().device<decospr_device>("spritegen2")->set_pix_raw_shift(8);
- screen.machine().device<decospr_device>("spritegen1")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram16_buffered, 0x800, true);
- screen.machine().device<decospr_device>("spritegen2")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram16_2_buffered, 0x800, true);
+ screen.machine().device<decospr_device>("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram16_buffered, 0x800, true);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram16_2_buffered, 0x800, true);
/* Render alpha-blended tilemap to separate buffer for proper mixing */
diff --git a/src/mame/video/deco_mlc.c b/src/mame/video/deco_mlc.c
index 8b3c38aaf51..46a6c7a4126 100644
--- a/src/mame/video/deco_mlc.c
+++ b/src/mame/video/deco_mlc.c
@@ -13,7 +13,7 @@
//extern int mlc_raster_table[9][256];
//extern UINT32 mlc_clipper[32];
-//static bitmap_t *temp_bitmap;
+//static bitmap_rgb32 *temp_bitmap;
/******************************************************************************/
@@ -27,12 +27,12 @@ VIDEO_START( mlc )
else
state->m_colour_mask=0x1f;
-// temp_bitmap = auto_bitmap_alloc( machine, 512, 512, BITMAP_FORMAT_RGB32 );
+// temp_bitmap = auto_bitmap_rgb32_alloc( machine, 512, 512 );
state->m_mlc_buffered_spriteram = auto_alloc_array(machine, UINT32, 0x3000/4);
}
#ifdef UNUSED_FUNCTION
-static void blitRaster(running_machine &machine, bitmap_t &bitmap, int rasterMode)
+static void blitRaster(running_machine &machine, bitmap_rgb32 &bitmap, int rasterMode)
{
deco_mlc_state *state = machine.driver_data<deco_mlc_state>();
int x,y;
@@ -62,7 +62,7 @@ static void blitRaster(running_machine &machine, bitmap_t &bitmap, int rasterMod
#endif
static void mlc_drawgfxzoom(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code1,UINT32 code2, UINT32 color,int flipx,int flipy,int sx,int sy,
int transparent_color,int use8bpp,
int scalex, int scaley,int alpha)
@@ -210,7 +210,7 @@ static void mlc_drawgfxzoom(
}
}
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine& machine, bitmap_rgb32 &bitmap,const rectangle &cliprect)
{
deco_mlc_state *state = machine.driver_data<deco_mlc_state>();
UINT32 *index_ptr=0;
@@ -505,7 +505,7 @@ SCREEN_EOF( mlc )
memcpy(state->m_mlc_buffered_spriteram, state->m_spriteram, 0x3000);
}
-SCREEN_UPDATE( mlc )
+SCREEN_UPDATE_RGB32( mlc )
{
// temp_bitmap->fill(0, cliprect);
bitmap.fill(screen.machine().pens[0], cliprect); /* Pen 0 fill colour confirmed from Skull Fang level 2 */
diff --git a/src/mame/video/decocass.c b/src/mame/video/decocass.c
index 587278e151c..3f02e9583cd 100644
--- a/src/mame/video/decocass.c
+++ b/src/mame/video/decocass.c
@@ -118,7 +118,7 @@ static TILE_GET_INFO( get_fg_tile_info )
big object
********************************************/
-static void draw_object( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_object( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
decocass_state *state = machine.driver_data<decocass_state>();
int sx, sy, color;
@@ -141,7 +141,7 @@ static void draw_object( running_machine& machine, bitmap_t &bitmap, const recta
drawgfx_transpen(bitmap, cliprect, machine.gfx[3], 1, color, 0, 1, sx, sy - 64, 0);
}
-static void draw_center( running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_center( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
decocass_state *state = machine.driver_data<decocass_state>();
int sx, sy, x, y, color;
@@ -391,7 +391,7 @@ WRITE8_HANDLER( decocass_center_v_shift_w )
memory handlers
********************************************/
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, int color,
+static void draw_sprites(running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int color,
int sprite_y_adjust, int sprite_y_adjust_flip_screen,
UINT8 *sprite_ram, int interleave)
{
@@ -440,7 +440,7 @@ static void draw_sprites(running_machine& machine, bitmap_t &bitmap, const recta
}
-static void draw_missiles(running_machine &machine,bitmap_t &bitmap, const rectangle &cliprect,
+static void draw_missiles(running_machine &machine,bitmap_ind16 &bitmap, const rectangle &cliprect,
int missile_y_adjust, int missile_y_adjust_flip_screen,
UINT8 *missile_ram, int interleave)
{
@@ -519,7 +519,7 @@ VIDEO_START( decocass )
gfx_element_decode(machine.gfx[2], 16);
}
-SCREEN_UPDATE( decocass )
+SCREEN_UPDATE_IND16( decocass )
{
decocass_state *state = screen.machine().driver_data<decocass_state>();
int scrollx, scrolly_l, scrolly_r;
diff --git a/src/mame/video/decocomn.c b/src/mame/video/decocomn.c
index 9db855646ba..702e1e72d73 100644
--- a/src/mame/video/decocomn.c
+++ b/src/mame/video/decocomn.c
@@ -15,7 +15,7 @@ struct _decocomn_state
screen_device *screen;
UINT16 *raster_display_list;
UINT8 *dirty_palette;
- bitmap_t *sprite_priority_bitmap;
+ bitmap_ind8 *sprite_priority_bitmap;
UINT16 priority;
int raster_display_position;
};
@@ -126,14 +126,14 @@ void decocomn_clear_sprite_priority_bitmap( device_t *device )
/* A special pdrawgfx z-buffered sprite renderer that is needed to properly draw multiple sprite sources with alpha */
void decocomn_pdrawgfx(
device_t *device,
- bitmap_t &dest, const rectangle &clip, const gfx_element *gfx,
+ bitmap_rgb32 &dest, const rectangle &clip, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy,
int transparent_color, UINT32 pri_mask, UINT32 sprite_mask, UINT8 write_pri, UINT8 alpha)
{
decocomn_state *decocomn = get_safe_token(device);
int ox, oy, cx, cy;
int x_index, y_index, x, y;
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
const pen_t *pal = &gfx->machine().pens[gfx->color_base + gfx->color_granularity * (color % gfx->total_colors)];
const UINT8 *code_base = gfx_element_get_data(gfx, code % gfx->total_elements);
@@ -209,7 +209,7 @@ static DEVICE_START( decocomn )
width = decocomn->screen->width();
height = decocomn->screen->height();
- decocomn->sprite_priority_bitmap = auto_bitmap_alloc(device->machine(), width, height, BITMAP_FORMAT_INDEXED8);
+ decocomn->sprite_priority_bitmap = auto_bitmap_ind8_alloc(device->machine(), width, height);
decocomn->dirty_palette = auto_alloc_array_clear(device->machine(), UINT8, 4096);
decocomn->raster_display_list = auto_alloc_array_clear(device->machine(), UINT16, 20 * 256 / 2);
diff --git a/src/mame/video/decocomn.h b/src/mame/video/decocomn.h
index cea3914eeb4..5cb824c233b 100644
--- a/src/mame/video/decocomn.h
+++ b/src/mame/video/decocomn.h
@@ -50,7 +50,7 @@ READ16_DEVICE_HANDLER( decocomn_71_r );
void decocomn_clear_sprite_priority_bitmap(device_t *device);
void decocomn_pdrawgfx(
device_t *device,
- bitmap_t &dest,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int transparent_color,UINT32 pri_mask,UINT32 sprite_mask,UINT8 write_pri,UINT8 alpha);
diff --git a/src/mame/video/decospr.c b/src/mame/video/decospr.c
index 69a82d6d8ee..abae6110d0c 100644
--- a/src/mame/video/decospr.c
+++ b/src/mame/video/decospr.c
@@ -145,7 +145,6 @@ void decospr_device::device_start()
{
// sprite_kludge_x = sprite_kludge_y = 0;
// printf("decospr_device::device_start()\n");
- m_sprite_bitmap = 0;
m_alt_format = 0;
m_pixmask = 0xf;
m_raw_shift = 4; // set to 8 on tattass / nslashers for the custom mixing (because they have 5bpp sprites, and shifting by 4 isn't good enough)
@@ -164,9 +163,9 @@ void decospr_device::decospr_sprite_kludge(int x, int y)
}
*/
-void decospr_device::alloc_sprite_bitmap(running_machine& machine)
+void decospr_device::alloc_sprite_bitmap()
{
- m_sprite_bitmap = auto_bitmap_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height(), BITMAP_FORMAT_INDEXED16);
+ m_sprite_bitmap.allocate(machine().primary_screen->width(), machine().primary_screen->height());
}
void decospr_device::set_pri_callback(decospr_priority_callback_func callback)
@@ -176,21 +175,21 @@ void decospr_device::set_pri_callback(decospr_priority_callback_func callback)
-
-void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip )
+template<class _BitmapClass>
+void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip )
{
//printf("cliprect %04x, %04x\n", cliprect.min_y, cliprect.max_y);
- if (m_sprite_bitmap && m_pricallback)
+ if (m_sprite_bitmap.valid() && m_pricallback)
fatalerror("m_sprite_bitmap && m_pricallback is invalid");
- if (m_sprite_bitmap)
- m_sprite_bitmap->fill(0, cliprect);
+ if (m_sprite_bitmap.valid())
+ m_sprite_bitmap.fill(0, cliprect);
int offs, end, incr;
- int flipscreen = flip_screen_get(machine);
+ int flipscreen = flip_screen_get(machine());
if (invert_flip)
flipscreen = !flipscreen;
@@ -222,12 +221,12 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
w = y & 0x0800;
- if (!(flash && (machine.primary_screen->frame_number() & 1)))
+ if (!(flash && (machine().primary_screen->frame_number() & 1)))
{
x = spriteram[offs + 2];
- if (!m_sprite_bitmap)
+ if (!m_sprite_bitmap.valid())
colour = (x >> 9) & 0x1f;
else
{
@@ -301,19 +300,19 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
ypos = y + mult * multi;
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- if(!m_sprite_bitmap)
+ if(!m_sprite_bitmap.valid())
{
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
if (m_pricallback)
- pdrawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ pdrawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite - multi * inc,
colour,
fx,fy,
x,ypos,
- machine.priority_bitmap,pri,0);
+ machine().priority_bitmap,pri,0);
else
- drawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite - multi * inc,
colour,
fx,fy,
@@ -325,14 +324,14 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if (w)
{
if (m_pricallback)
- pdrawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ pdrawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
(sprite - multi * inc)-mult2,
colour,
fx,fy,
x-16,ypos,
- machine.priority_bitmap,pri,0);
+ machine().priority_bitmap,pri,0);
else
- drawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
(sprite - multi * inc)-mult2,
colour,
fx,fy,
@@ -343,7 +342,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
else
{
// if we have a sprite bitmap draw raw data to it for manual mixing
- drawgfx_transpen_raw(*m_sprite_bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen_raw(m_sprite_bitmap,cliprect,machine().gfx[m_gfxregion],
sprite - multi * inc,
colour<<m_raw_shift,
fx,fy,
@@ -351,7 +350,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
0);
if (w)
{
- drawgfx_transpen_raw(*m_sprite_bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen_raw(m_sprite_bitmap,cliprect,machine().gfx[m_gfxregion],
(sprite - multi * inc)-mult2,
colour<<m_raw_shift,
fx,fy,
@@ -380,9 +379,9 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
x = spriteram[offs+1];
- if (!((y&0x2000) && (machine.primary_screen->frame_number() & 1)))
+ if (!((y&0x2000) && (machine().primary_screen->frame_number() & 1)))
{
- if (!m_sprite_bitmap)
+ if (!m_sprite_bitmap.valid())
colour = (spriteram[offs+2] >>0) & 0x1f;
else
colour = (spriteram[offs+2] >>0) & 0xff; // store all bits for manual mixing
@@ -423,7 +422,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
for (int yy=0; yy<h; yy++)
{
- if(!m_sprite_bitmap)
+ if(!m_sprite_bitmap.valid())
{
if (m_pricallback)
{
@@ -431,24 +430,24 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- pdrawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ pdrawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour,
fx,fy,
x + mult * (w-xx),ypos,
- machine.priority_bitmap,pri,0);
+ machine().priority_bitmap,pri,0);
}
ypos -= 512; // wrap-around y
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y-16)))
{
- pdrawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ pdrawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour,
fx,fy,
x + mult * (w-xx),ypos,
- machine.priority_bitmap,pri,0);
+ machine().priority_bitmap,pri,0);
}
}
@@ -458,7 +457,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- drawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour,
fx,fy,
@@ -470,7 +469,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y-16)))
{
- drawgfx_transpen(bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour,
fx,fy,
@@ -485,7 +484,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- drawgfx_transpen_raw(*m_sprite_bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen_raw(m_sprite_bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour<<m_raw_shift,
fx,fy,
@@ -497,7 +496,7 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y-16)))
{
- drawgfx_transpen_raw(*m_sprite_bitmap,cliprect,machine.gfx[m_gfxregion],
+ drawgfx_transpen_raw(m_sprite_bitmap,cliprect,machine().gfx[m_gfxregion],
sprite + yy + h * xx,
colour<<m_raw_shift,
fx,fy,
@@ -514,22 +513,28 @@ void decospr_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
+void decospr_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip )
+{ draw_sprites_common(bitmap, cliprect, spriteram, sizewords, invert_flip); }
+
+void decospr_device::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip )
+{ draw_sprites_common(bitmap, cliprect, spriteram, sizewords, invert_flip); }
+
// inefficient, we should be able to mix in a single pass by comparing the existing priority bitmap from the tilemaps
-void decospr_device::inefficient_copy_sprite_bitmap(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 pri, UINT16 priority_mask, UINT16 colbase, UINT16 palmask, UINT8 alpha)
+void decospr_device::inefficient_copy_sprite_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 pri, UINT16 priority_mask, UINT16 colbase, UINT16 palmask, UINT8 alpha)
{
- if (!m_sprite_bitmap)
+ if (!m_sprite_bitmap.valid())
fatalerror("decospr_device::inefficient_copy_sprite_bitmap with no m_sprite_bitmap");
int y, x;
- const pen_t *paldata = machine.pens;
+ const pen_t *paldata = machine().pens;
UINT16* srcline;
UINT32* dstline;
for (y=cliprect.min_y;y<=cliprect.max_y;y++)
{
- srcline= &m_sprite_bitmap->pix16(y);
+ srcline= &m_sprite_bitmap.pix16(y);
dstline= &bitmap.pix32(y);
if (alpha==0xff)
diff --git a/src/mame/video/decospr.h b/src/mame/video/decospr.h
index a495c88c5bd..33a26c286ff 100644
--- a/src/mame/video/decospr.h
+++ b/src/mame/video/decospr.h
@@ -8,27 +8,30 @@ public:
static void set_gfx_region(device_t &device, int gfxregion);
static void set_pri_callback(device_t &device, decospr_priority_callback_func callback);
//void decospr_sprite_kludge(int x, int y);
- void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip = false );
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip = false );
+ void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip = false );
void set_pri_callback(decospr_priority_callback_func callback);
void set_gfxregion(int region) { m_gfxregion = region; };
void set_alt_format(bool alt) { m_alt_format = alt; };
void set_pix_mix_mask(UINT16 mask) { m_pixmask = mask; };
void set_pix_raw_shift(UINT16 shift) { m_raw_shift = shift; };
- void alloc_sprite_bitmap(running_machine& machine);
- void inefficient_copy_sprite_bitmap(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 pri, UINT16 priority_mask, UINT16 colbase, UINT16 palmask, UINT8 alpha = 0xff);
- bitmap_t* get_sprite_temp_bitmap(void) { return m_sprite_bitmap; };
+ void alloc_sprite_bitmap();
+ void inefficient_copy_sprite_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 pri, UINT16 priority_mask, UINT16 colbase, UINT16 palmask, UINT8 alpha = 0xff);
+ bitmap_ind16& get_sprite_temp_bitmap() { assert(m_sprite_bitmap.valid()); return m_sprite_bitmap; };
protected:
virtual void device_start();
virtual void device_reset();
UINT8 m_gfxregion;
decospr_priority_callback_func m_pricallback;
- bitmap_t *m_sprite_bitmap;// optional sprite bitmap (should be INDEXED16)
+ bitmap_ind16 m_sprite_bitmap;// optional sprite bitmap (should be INDEXED16)
bool m_alt_format;
UINT16 m_pixmask;
UINT16 m_raw_shift;
-private:
+private:
+ template<class _BitmapClass>
+ void draw_sprites_common(_BitmapClass &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip);
};
extern const device_type DECO_SPRITE;
diff --git a/src/mame/video/deniam.c b/src/mame/video/deniam.c
index 99f34882d19..dc034ff2931 100644
--- a/src/mame/video/deniam.c
+++ b/src/mame/video/deniam.c
@@ -214,7 +214,7 @@ WRITE16_HANDLER( deniam_coinctrl_w )
* c | ---------------- | zoomy like in System 16?
* e | ---------------- |
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
deniam_state *state = machine.driver_data<deniam_state>();
int offs;
@@ -377,7 +377,7 @@ static void set_fg_page( running_machine &machine, int page, int value )
}
}
-SCREEN_UPDATE( deniam )
+SCREEN_UPDATE_IND16( deniam )
{
deniam_state *state = screen.machine().driver_data<deniam_state>();
int bg_scrollx, bg_scrolly, fg_scrollx, fg_scrolly;
diff --git a/src/mame/video/dietgo.c b/src/mame/video/dietgo.c
index 004f3289544..d03c0034e47 100644
--- a/src/mame/video/dietgo.c
+++ b/src/mame/video/dietgo.c
@@ -3,7 +3,7 @@
#include "includes/dietgo.h"
#include "video/decospr.h"
-SCREEN_UPDATE( dietgo )
+SCREEN_UPDATE_IND16( dietgo )
{
dietgo_state *state = screen.machine().driver_data<dietgo_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -16,6 +16,6 @@ SCREEN_UPDATE( dietgo )
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
return 0;
}
diff --git a/src/mame/video/digdug.c b/src/mame/video/digdug.c
index acd90b37166..5f861eee8b9 100644
--- a/src/mame/video/digdug.c
+++ b/src/mame/video/digdug.c
@@ -240,7 +240,7 @@ WRITE8_HANDLER( digdug_PORT_w )
***************************************************************************/
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
digdug_state *state = machine.driver_data<digdug_state>();
UINT8 *spriteram = state->m_digdug_objram + 0x380;
@@ -310,7 +310,7 @@ static void draw_sprites(running_machine& machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( digdug )
+SCREEN_UPDATE_IND16( digdug )
{
digdug_state *state = screen.machine().driver_data<digdug_state>();
diff --git a/src/mame/video/djboy.c b/src/mame/video/djboy.c
index b3676ad3d89..01fffa076d1 100644
--- a/src/mame/video/djboy.c
+++ b/src/mame/video/djboy.c
@@ -58,7 +58,7 @@ WRITE8_HANDLER( djboy_paletteram_w )
palette_set_color_rgb(space->machine(), offset / 2, pal4bit(val >> 8), pal4bit(val >> 4), pal4bit(val >> 0));
}
-SCREEN_UPDATE( djboy )
+SCREEN_UPDATE_IND16( djboy )
{
/**
* xx------ msb x
diff --git a/src/mame/video/djmain.c b/src/mame/video/djmain.c
index 4b8a026caca..da138011b1b 100644
--- a/src/mame/video/djmain.c
+++ b/src/mame/video/djmain.c
@@ -12,7 +12,7 @@
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine& machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
djmain_state *state = machine.driver_data<djmain_state>();
device_t *k055555 = machine.device("k055555");
@@ -143,7 +143,7 @@ VIDEO_START( djmain )
k056832_set_layer_offs(k056832, 1, -88, -27);
}
-SCREEN_UPDATE( djmain )
+SCREEN_UPDATE_RGB32( djmain )
{
device_t *k056832 = screen.machine().device("k056832");
device_t *k055555 = screen.machine().device("k055555");
diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c
index 417c97f4794..3d419fb3d27 100644
--- a/src/mame/video/dkong.c
+++ b/src/mame/video/dkong.c
@@ -555,11 +555,11 @@ WRITE8_HANDLER( dkong_spritebank_w )
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 mask_bank, UINT32 shift_bits)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 mask_bank, UINT32 shift_bits)
{
dkong_state *state = machine.driver_data<dkong_state>();
int offs;
@@ -805,7 +805,7 @@ static void radarscp_step(running_machine &machine, int line_cnt)
}
-static void radarscp_draw_background(running_machine &machine, dkong_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void radarscp_draw_background(running_machine &machine, dkong_state *state, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const UINT8 *htable = NULL;
int x,y;
@@ -826,7 +826,7 @@ static void radarscp_draw_background(running_machine &machine, dkong_state *stat
if (state->m_hardware_type == HARDWARE_TRS01) /* Check again from schematics */
draw_ok = draw_ok && !((htable[ (!state->m_rflip_sig<<7) | (x>>2)] >>2) & 0x01);
if (draw_ok)
- *pixel = *(&state->m_bg_bits->pix16(y, x));
+ *pixel = *(&state->m_bg_bits.pix16(y, x));
x++;
}
y++;
@@ -850,7 +850,7 @@ static void radarscp_scanline(running_machine &machine, int scanline)
x = 0;
while (x < machine.primary_screen->width())
{
- pixel = &state->m_bg_bits->pix16(y, x);
+ pixel = &state->m_bg_bits.pix16(y, x);
if ((state->m_counter < table_len) && (x == 4 * (table[state->m_counter|offset] & 0x7f)))
{
if ( state->m_star_ff && (table[state->m_counter|offset] & 0x80) ) /* star */
@@ -947,7 +947,7 @@ VIDEO_START( dkong )
switch (state->m_hardware_type)
{
case HARDWARE_TRS02:
- state->m_bg_bits = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bg_bits.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_gfx3 = machine.region("gfx3")->base();
state->m_gfx3_len = machine.region("gfx3")->bytes();
/* fall through */
@@ -960,7 +960,7 @@ VIDEO_START( dkong )
state->m_bg_tilemap = tilemap_create(machine, radarscp1_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
tilemap_set_scrolldx(state->m_bg_tilemap, 0, 128);
- state->m_bg_bits = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bg_bits.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_gfx4 = machine.region("gfx4")->base();
state->m_gfx3 = machine.region("gfx3")->base();
state->m_gfx3_len = machine.region("gfx3")->bytes();
@@ -971,7 +971,7 @@ VIDEO_START( dkong )
}
}
-SCREEN_UPDATE( dkong )
+SCREEN_UPDATE_IND16( dkong )
{
dkong_state *state = screen.machine().driver_data<dkong_state>();
@@ -999,7 +999,7 @@ SCREEN_UPDATE( dkong )
return 0;
}
-SCREEN_UPDATE( pestplce )
+SCREEN_UPDATE_IND16( pestplce )
{
dkong_state *state = screen.machine().driver_data<dkong_state>();
int offs;
@@ -1021,7 +1021,7 @@ SCREEN_UPDATE( pestplce )
return 0;
}
-SCREEN_UPDATE( spclforc )
+SCREEN_UPDATE_IND16( spclforc )
{
dkong_state *state = screen.machine().driver_data<dkong_state>();
diff --git a/src/mame/video/docastle.c b/src/mame/video/docastle.c
index 5d26aca61a5..a793770eb3b 100644
--- a/src/mame/video/docastle.c
+++ b/src/mame/video/docastle.c
@@ -132,7 +132,7 @@ VIDEO_START( dorunrun )
video_start_common(machine, 0xff00);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
docastle_state *state = machine.driver_data<docastle_state>();
int offs;
@@ -224,7 +224,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( docastle )
+SCREEN_UPDATE_IND16( docastle )
{
docastle_state *state = screen.machine().driver_data<docastle_state>();
diff --git a/src/mame/video/dogfgt.c b/src/mame/video/dogfgt.c
index c7f03d547ec..1d81f3d7619 100644
--- a/src/mame/video/dogfgt.c
+++ b/src/mame/video/dogfgt.c
@@ -73,8 +73,8 @@ VIDEO_START( dogfgt )
state->m_bitmapram = auto_alloc_array(machine, UINT8, BITMAPRAM_SIZE);
state->save_pointer(NAME(state->m_bitmapram), BITMAPRAM_SIZE);
- state->m_pixbitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->save_item(NAME(*state->m_pixbitmap));
+ state->m_pixbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->save_item(NAME(state->m_pixbitmap));
}
@@ -123,9 +123,9 @@ static WRITE8_HANDLER( internal_bitmapram_w )
color |= ((state->m_bitmapram[offset + BITMAPRAM_SIZE / 3 * i] >> subx) & 1) << i;
if (flip_screen_get(space->machine()))
- state->m_pixbitmap->pix16(y ^ 0xff, (x + subx) ^ 0xff) = PIXMAP_COLOR_BASE + 8 * state->m_pixcolor + color;
+ state->m_pixbitmap.pix16(y ^ 0xff, (x + subx) ^ 0xff) = PIXMAP_COLOR_BASE + 8 * state->m_pixcolor + color;
else
- state->m_pixbitmap->pix16(y, x + subx) = PIXMAP_COLOR_BASE + 8 * state->m_pixcolor + color;
+ state->m_pixbitmap.pix16(y, x + subx) = PIXMAP_COLOR_BASE + 8 * state->m_pixcolor + color;
}
}
@@ -184,7 +184,7 @@ WRITE8_HANDLER( dogfgt_1800_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
dogfgt_state *state = machine.driver_data<dogfgt_state>();
int offs;
@@ -217,7 +217,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const recta
}
-SCREEN_UPDATE( dogfgt )
+SCREEN_UPDATE_IND16( dogfgt )
{
dogfgt_state *state = screen.machine().driver_data<dogfgt_state>();
int offs;
@@ -238,6 +238,6 @@ SCREEN_UPDATE( dogfgt )
draw_sprites(screen.machine(), bitmap, cliprect);
- copybitmap_trans(bitmap, *state->m_pixbitmap, 0, 0, 0, 0, cliprect, PIXMAP_COLOR_BASE + 8 * state->m_pixcolor);
+ copybitmap_trans(bitmap, state->m_pixbitmap, 0, 0, 0, 0, cliprect, PIXMAP_COLOR_BASE + 8 * state->m_pixcolor);
return 0;
}
diff --git a/src/mame/video/dooyong.c b/src/mame/video/dooyong.c
index 59e7532f288..8761cb30aae 100644
--- a/src/mame/video/dooyong.c
+++ b/src/mame/video/dooyong.c
@@ -350,7 +350,7 @@ static TILE_GET_INFO( get_tx_tile_info )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pollux_extensions)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pollux_extensions)
{
/* Sprites take 32 bytes each in memory:
MSB LSB
@@ -440,7 +440,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static void rshark_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void rshark_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16;
@@ -512,7 +512,7 @@ static void rshark_draw_sprites(running_machine &machine, bitmap_t &bitmap, cons
}
-SCREEN_UPDATE( lastday )
+SCREEN_UPDATE_IND16( lastday )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -527,7 +527,7 @@ SCREEN_UPDATE( lastday )
return 0;
}
-SCREEN_UPDATE( gulfstrm )
+SCREEN_UPDATE_IND16( gulfstrm )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -541,7 +541,7 @@ SCREEN_UPDATE( gulfstrm )
return 0;
}
-SCREEN_UPDATE( pollux )
+SCREEN_UPDATE_IND16( pollux )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -555,7 +555,7 @@ SCREEN_UPDATE( pollux )
return 0;
}
-SCREEN_UPDATE( flytiger )
+SCREEN_UPDATE_IND16( flytiger )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -578,7 +578,7 @@ SCREEN_UPDATE( flytiger )
}
-SCREEN_UPDATE( bluehawk )
+SCREEN_UPDATE_IND16( bluehawk )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -593,7 +593,7 @@ SCREEN_UPDATE( bluehawk )
return 0;
}
-SCREEN_UPDATE( primella )
+SCREEN_UPDATE_IND16( primella )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -605,7 +605,7 @@ SCREEN_UPDATE( primella )
return 0;
}
-SCREEN_UPDATE( rshark )
+SCREEN_UPDATE_IND16( rshark )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -620,7 +620,7 @@ SCREEN_UPDATE( rshark )
return 0;
}
-SCREEN_UPDATE( popbingo )
+SCREEN_UPDATE_IND16( popbingo )
{
dooyong_state *state = screen.machine().driver_data<dooyong_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
diff --git a/src/mame/video/dragrace.c b/src/mame/video/dragrace.c
index d9742211023..0321290c1b5 100644
--- a/src/mame/video/dragrace.c
+++ b/src/mame/video/dragrace.c
@@ -47,7 +47,7 @@ VIDEO_START( dragrace )
}
-SCREEN_UPDATE( dragrace )
+SCREEN_UPDATE_IND16( dragrace )
{
dragrace_state *state = screen.machine().driver_data<dragrace_state>();
int y;
diff --git a/src/mame/video/drgnmst.c b/src/mame/video/drgnmst.c
index 1e39e52d12a..75d9f7c3523 100644
--- a/src/mame/video/drgnmst.c
+++ b/src/mame/video/drgnmst.c
@@ -60,7 +60,7 @@ WRITE16_HANDLER( drgnmst_md_videoram_w )
tilemap_mark_tile_dirty(state->m_md_tilemap, offset / 2);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
drgnmst_state *state = machine.driver_data<drgnmst_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -139,7 +139,7 @@ VIDEO_START(drgnmst)
tilemap_set_scroll_rows(state->m_md_tilemap, 1024);
}
-SCREEN_UPDATE(drgnmst)
+SCREEN_UPDATE_IND16(drgnmst)
{
drgnmst_state *state = screen.machine().driver_data<drgnmst_state>();
int y, rowscroll_bank;
diff --git a/src/mame/video/dribling.c b/src/mame/video/dribling.c
index f2a775639ba..bf681d98502 100644
--- a/src/mame/video/dribling.c
+++ b/src/mame/video/dribling.c
@@ -58,7 +58,7 @@ WRITE8_HANDLER( dribling_colorram_w )
*
*************************************/
-SCREEN_UPDATE( dribling )
+SCREEN_UPDATE_IND16( dribling )
{
dribling_state *state = screen.machine().driver_data<dribling_state>();
UINT8 *prombase = screen.machine().region("proms")->base();
diff --git a/src/mame/video/drmicro.c b/src/mame/video/drmicro.c
index c15959b91f6..d1495d5e056 100644
--- a/src/mame/video/drmicro.c
+++ b/src/mame/video/drmicro.c
@@ -116,7 +116,7 @@ VIDEO_START( drmicro)
tilemap_set_transparent_pen(state->m_bg2, 0);
}
-SCREEN_UPDATE( drmicro )
+SCREEN_UPDATE_IND16( drmicro )
{
drmicro_state *state = screen.machine().driver_data<drmicro_state>();
int offs, adr, g;
diff --git a/src/mame/video/dynax.c b/src/mame/video/dynax.c
index b47d6dff34f..6a2c8168585 100644
--- a/src/mame/video/dynax.c
+++ b/src/mame/video/dynax.c
@@ -1000,7 +1000,7 @@ VIDEO_START( neruton )
***************************************************************************/
-static void hanamai_copylayer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int i )
+static void hanamai_copylayer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i )
{
dynax_state *state = machine.driver_data<dynax_state>();
int color;
@@ -1064,7 +1064,7 @@ static void hanamai_copylayer( running_machine &machine, bitmap_t &bitmap, const
}
-static void jantouki_copylayer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int i, int y )
+static void jantouki_copylayer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i, int y )
{
dynax_state *state = machine.driver_data<dynax_state>();
int color, scrollx, scrolly, palettes, palbank;
@@ -1139,7 +1139,7 @@ static void jantouki_copylayer( running_machine &machine, bitmap_t &bitmap, cons
}
-static void mjdialq2_copylayer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int i )
+static void mjdialq2_copylayer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i )
{
dynax_state *state = machine.driver_data<dynax_state>();
int color;
@@ -1227,7 +1227,7 @@ static int debug_mask( running_machine &machine )
I,O - Change palette (-,+)
J,K & N,M - Change "tile" (-,+, slow & fast)
R - move "tile" to the next 1/8th of the gfx */
-static int debug_viewer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static int debug_viewer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
#ifdef MAME_DEBUG
@@ -1278,7 +1278,7 @@ static int debug_viewer( running_machine &machine, bitmap_t &bitmap, const recta
-SCREEN_UPDATE( hanamai )
+SCREEN_UPDATE_IND16( hanamai )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = ~state->m_layer_enable;
@@ -1314,7 +1314,7 @@ SCREEN_UPDATE( hanamai )
}
-SCREEN_UPDATE( hnoridur )
+SCREEN_UPDATE_IND16( hnoridur )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = ~BITSWAP8(state->m_hanamai_priority, 7, 6, 5, 4, 0, 1, 2, 3);
@@ -1351,7 +1351,7 @@ SCREEN_UPDATE( hnoridur )
}
-SCREEN_UPDATE( sprtmtch )
+SCREEN_UPDATE_IND16( sprtmtch )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = ~state->m_layer_enable;
@@ -1369,7 +1369,7 @@ SCREEN_UPDATE( sprtmtch )
return 0;
}
-SCREEN_UPDATE( jantouki_top )
+SCREEN_UPDATE_IND16( jantouki_top )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = state->m_layer_enable;
@@ -1388,7 +1388,7 @@ SCREEN_UPDATE( jantouki_top )
return 0;
}
-SCREEN_UPDATE( jantouki_bottom )
+SCREEN_UPDATE_IND16( jantouki_bottom )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = state->m_layer_enable;
@@ -1409,7 +1409,7 @@ SCREEN_UPDATE( jantouki_bottom )
}
-SCREEN_UPDATE( mjdialq2 )
+SCREEN_UPDATE_IND16( mjdialq2 )
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layers_ctrl = ~state->m_layer_enable;
@@ -1434,13 +1434,13 @@ VIDEO_START(htengoku)
VIDEO_START_CALL(hnoridur);
}
-SCREEN_UPDATE(htengoku)
+SCREEN_UPDATE_IND16(htengoku)
{
dynax_state *state = screen.machine().driver_data<dynax_state>();
int layer, x, y;
// render the layers, one by one, "dynax.c" style. Then convert the pixmaps to "ddenlovr.c"
- // format and let SCREEN_UPDATE(ddenlovr) do the final compositing (priorities + palettes)
+ // format and let SCREEN_UPDATE_IND16(ddenlovr) do the final compositing (priorities + palettes)
for (layer = 0; layer < 4; layer++)
{
bitmap.fill(0, cliprect);
@@ -1451,5 +1451,5 @@ SCREEN_UPDATE(htengoku)
state->m_ddenlovr_pixmap[3 - layer][y * 512 + x] = (UINT8)(bitmap.pix16(y, x));
}
- return SCREEN_UPDATE_CALL(ddenlovr);
+ return SCREEN_UPDATE16_CALL(ddenlovr);
}
diff --git a/src/mame/video/dynduke.c b/src/mame/video/dynduke.c
index 6c1373aa353..e063e90e29d 100644
--- a/src/mame/video/dynduke.c
+++ b/src/mame/video/dynduke.c
@@ -137,7 +137,7 @@ WRITE16_HANDLER( dynduke_control_w )
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int pri)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri)
{
dynduke_state *state = machine.driver_data<dynduke_state>();
UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16;
@@ -175,11 +175,11 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
dynduke_state *state = machine.driver_data<dynduke_state>();
/* The transparency / palette handling on the background layer is very strange */
- bitmap_t &bm = tilemap_get_pixmap(state->m_bg_layer);
+ bitmap_ind16 &bm = tilemap_get_pixmap(state->m_bg_layer);
int scrolly, scrollx;
int x,y;
@@ -228,7 +228,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
}
-SCREEN_UPDATE( dynduke )
+SCREEN_UPDATE_IND16( dynduke )
{
dynduke_state *state = screen.machine().driver_data<dynduke_state>();
/* Setup the tilemaps */
diff --git a/src/mame/video/eolith.c b/src/mame/video/eolith.c
index 9cb4062a5be..d5c446c5c32 100644
--- a/src/mame/video/eolith.c
+++ b/src/mame/video/eolith.c
@@ -38,7 +38,7 @@ VIDEO_START( eolith )
state->m_vram = auto_alloc_array(machine, UINT32, 0x40000*2/4);
}
-SCREEN_UPDATE( eolith )
+SCREEN_UPDATE_IND16( eolith )
{
eolith_state *state = screen.machine().driver_data<eolith_state>();
int y;
diff --git a/src/mame/video/epos.c b/src/mame/video/epos.c
index 55998b6ea49..370add43ada 100644
--- a/src/mame/video/epos.c
+++ b/src/mame/video/epos.c
@@ -72,7 +72,7 @@ WRITE8_HANDLER( epos_port_1_w )
}
-SCREEN_UPDATE( epos )
+SCREEN_UPDATE_RGB32( epos )
{
epos_state *state = screen.machine().driver_data<epos_state>();
pen_t pens[0x20];
diff --git a/src/mame/video/eprom.c b/src/mame/video/eprom.c
index 77aeefa93e5..baff5d64dbb 100644
--- a/src/mame/video/eprom.c
+++ b/src/mame/video/eprom.c
@@ -234,11 +234,11 @@ void eprom_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( eprom )
+SCREEN_UPDATE_IND16( eprom )
{
eprom_state *state = screen.machine().driver_data<eprom_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
if (state->m_video_disable)
@@ -389,11 +389,11 @@ SCREEN_UPDATE( eprom )
}
-SCREEN_UPDATE( guts )
+SCREEN_UPDATE_IND16( guts )
{
eprom_state *state = screen.machine().driver_data<eprom_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
if (state->m_video_disable)
diff --git a/src/mame/video/equites.c b/src/mame/video/equites.c
index 4aadbd20dfe..3970caa4d78 100644
--- a/src/mame/video/equites.c
+++ b/src/mame/video/equites.c
@@ -130,7 +130,7 @@ VIDEO_START( equites )
VIDEO_START( splndrbt )
{
equites_state *state = machine.driver_data<equites_state>();
- assert(machine.primary_screen->format() == BITMAP_FORMAT_INDEXED16);
+ assert(machine.primary_screen->format() == BITMAP_FORMAT_IND16);
state->m_fg_videoram = auto_alloc_array(machine, UINT8, 0x800);
state->save_pointer(NAME(state->m_fg_videoram), 0x800);
@@ -258,7 +258,7 @@ WRITE16_HANDLER(splndrbt_bg_scrolly_w)
*
*************************************/
-static void equites_draw_sprites_block( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int start, int end )
+static void equites_draw_sprites_block( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int start, int end )
{
equites_state *state = machine.driver_data<equites_state>();
int offs;
@@ -299,7 +299,7 @@ static void equites_draw_sprites_block( running_machine &machine, bitmap_t &bitm
}
}
-static void equites_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void equites_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// note that we draw the sprites in three blocks; in each blocks, sprites at
// a lower address have priority. This gives good priorities in gekisou.
@@ -332,7 +332,7 @@ Also, note that sprites are 30x30, not 32x32.
03020303 03030303 03030303 03030303
*/
-static void splndrbt_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void splndrbt_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
equites_state *state = machine.driver_data<equites_state>();
const UINT8 * const xrom = machine.region("user2")->base();
@@ -408,11 +408,11 @@ static void splndrbt_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
-static void splndrbt_copy_bg( running_machine &machine, bitmap_t &dst_bitmap, const rectangle &cliprect )
+static void splndrbt_copy_bg( running_machine &machine, bitmap_ind16 &dst_bitmap, const rectangle &cliprect )
{
equites_state *state = machine.driver_data<equites_state>();
- bitmap_t &src_bitmap = tilemap_get_pixmap(state->m_bg_tilemap);
- bitmap_t &flags_bitmap = tilemap_get_flagsmap(state->m_bg_tilemap);
+ bitmap_ind16 &src_bitmap = tilemap_get_pixmap(state->m_bg_tilemap);
+ bitmap_ind8 &flags_bitmap = tilemap_get_flagsmap(state->m_bg_tilemap);
const UINT8 * const xrom = machine.region("user1")->base();
const UINT8 * const yrom = xrom + 0x2000;
int scroll_x = state->m_splndrbt_bg_scrollx;
@@ -463,7 +463,7 @@ static void splndrbt_copy_bg( running_machine &machine, bitmap_t &dst_bitmap, co
-SCREEN_UPDATE( equites )
+SCREEN_UPDATE_IND16( equites )
{
equites_state *state = screen.machine().driver_data<equites_state>();
bitmap.fill(state->m_bgcolor, cliprect);
@@ -477,7 +477,7 @@ SCREEN_UPDATE( equites )
return 0;
}
-SCREEN_UPDATE( splndrbt )
+SCREEN_UPDATE_IND16( splndrbt )
{
equites_state *state = screen.machine().driver_data<equites_state>();
bitmap.fill(state->m_bgcolor, cliprect);
diff --git a/src/mame/video/esd16.c b/src/mame/video/esd16.c
index cc6a0c5b43e..55807ee19fc 100644
--- a/src/mame/video/esd16.c
+++ b/src/mame/video/esd16.c
@@ -183,7 +183,7 @@ VIDEO_START( esd16 )
***************************************************************************/
-static void esd16_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void esd16_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
esd16_state *state = machine.driver_data<esd16_state>();
int offs;
@@ -247,7 +247,7 @@ static void esd16_draw_sprites( running_machine &machine, bitmap_t &bitmap, cons
}
/* note, check if i can re-merge this with the other or if its really different */
-static void hedpanic_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void hedpanic_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
esd16_state *state = machine.driver_data<esd16_state>();
int offs;
@@ -323,7 +323,7 @@ static void hedpanic_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
***************************************************************************/
-SCREEN_UPDATE( esd16 )
+SCREEN_UPDATE_IND16( esd16 )
{
esd16_state *state = screen.machine().driver_data<esd16_state>();
int layers_ctrl = -1;
@@ -357,7 +357,7 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
}
-SCREEN_UPDATE( hedpanic )
+SCREEN_UPDATE_IND16( hedpanic )
{
esd16_state *state = screen.machine().driver_data<esd16_state>();
int layers_ctrl = -1;
@@ -420,7 +420,7 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
}
// uses older style sprites
-SCREEN_UPDATE( hedpanio )
+SCREEN_UPDATE_IND16( hedpanio )
{
esd16_state *state = screen.machine().driver_data<esd16_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/espial.c b/src/mame/video/espial.c
index 415fa93d9a4..2110536e105 100644
--- a/src/mame/video/espial.c
+++ b/src/mame/video/espial.c
@@ -166,7 +166,7 @@ WRITE8_HANDLER( espial_flipscreen_w )
*
*************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
espial_state *state = machine.driver_data<espial_state>();
int offs;
@@ -232,7 +232,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( espial )
+SCREEN_UPDATE_IND16( espial )
{
espial_state *state = screen.machine().driver_data<espial_state>();
diff --git a/src/mame/video/esripsys.c b/src/mame/video/esripsys.c
index 6de8be4e565..afc36ae0e41 100644
--- a/src/mame/video/esripsys.c
+++ b/src/mame/video/esripsys.c
@@ -151,7 +151,7 @@ VIDEO_START( esripsys )
state_save_register_global(machine, state->m_12sel);
}
-SCREEN_UPDATE( esripsys )
+SCREEN_UPDATE_RGB32( esripsys )
{
esripsys_state *state = screen.machine().driver_data<esripsys_state>();
struct line_buffer_t *line_buffer = state->m_line_buffer;
diff --git a/src/mame/video/exedexes.c b/src/mame/video/exedexes.c
index 78f1deda98e..057ff71525e 100644
--- a/src/mame/video/exedexes.c
+++ b/src/mame/video/exedexes.c
@@ -184,7 +184,7 @@ VIDEO_START( exedexes )
colortable_configure_tilemap_groups(machine.colortable, state->m_tx_tilemap, machine.gfx[0], 0xcf);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
exedexes_state *state = machine.driver_data<exedexes_state>();
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
@@ -217,7 +217,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( exedexes )
+SCREEN_UPDATE_IND16( exedexes )
{
exedexes_state *state = screen.machine().driver_data<exedexes_state>();
if (state->m_sc2on)
diff --git a/src/mame/video/exerion.c b/src/mame/video/exerion.c
index c90ee1bca62..b6ee2abad03 100644
--- a/src/mame/video/exerion.c
+++ b/src/mame/video/exerion.c
@@ -234,7 +234,7 @@ READ8_HANDLER( exerion_video_timing_r )
*
*************************************/
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
exerion_state *state = machine.driver_data<exerion_state>();
int x, y;
@@ -350,7 +350,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
*
*************************************/
-SCREEN_UPDATE( exerion )
+SCREEN_UPDATE_IND16( exerion )
{
exerion_state *state = screen.machine().driver_data<exerion_state>();
int sx, sy, offs, i;
diff --git a/src/mame/video/exidy.c b/src/mame/video/exidy.c
index dbb76d6f336..30458a4bd64 100644
--- a/src/mame/video/exidy.c
+++ b/src/mame/video/exidy.c
@@ -34,21 +34,20 @@ void exidy_video_config(running_machine &machine, UINT8 _collision_mask, UINT8 _
VIDEO_START( exidy )
{
exidy_state *state = machine.driver_data<exidy_state>();
- bitmap_format format = machine.primary_screen->format();
- state->m_background_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_motion_object_1_vid = auto_bitmap_alloc(machine, 16, 16, format);
- state->m_motion_object_2_vid = auto_bitmap_alloc(machine, 16, 16, format);
- state->m_motion_object_2_clip = auto_bitmap_alloc(machine, 16, 16, format);
+ state->m_background_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_motion_object_1_vid.allocate(16, 16);
+ state->m_motion_object_2_vid.allocate(16, 16);
+ state->m_motion_object_2_clip.allocate(16, 16);
state_save_register_global(machine, state->m_collision_mask);
state_save_register_global(machine, state->m_collision_invert);
state_save_register_global(machine, state->m_is_2bpp);
state_save_register_global(machine, state->m_int_condition);
- state_save_register_global_bitmap(machine, state->m_background_bitmap);
- state_save_register_global_bitmap(machine, state->m_motion_object_1_vid);
- state_save_register_global_bitmap(machine, state->m_motion_object_2_vid);
- state_save_register_global_bitmap(machine, state->m_motion_object_2_clip);
+ state_save_register_global_bitmap(machine, &state->m_background_bitmap);
+ state_save_register_global_bitmap(machine, &state->m_motion_object_1_vid);
+ state_save_register_global_bitmap(machine, &state->m_motion_object_2_vid);
+ state_save_register_global_bitmap(machine, &state->m_motion_object_2_clip);
}
@@ -171,9 +170,9 @@ static void draw_background(running_machine &machine)
for (i = 0; i < 8; i++)
{
if (data1 & 0x80)
- state->m_background_bitmap->pix16(y, x) = (data2 & 0x80) ? on_pen_2 : on_pen_1;
+ state->m_background_bitmap.pix16(y, x) = (data2 & 0x80) ? on_pen_2 : on_pen_1;
else
- state->m_background_bitmap->pix16(y, x) = off_pen;
+ state->m_background_bitmap.pix16(y, x) = off_pen;
x = x + 1;
data1 = data1 << 1;
@@ -187,7 +186,7 @@ static void draw_background(running_machine &machine)
for (i = 0; i < 8; i++)
{
- state->m_background_bitmap->pix16(y, x) = (data & 0x80) ? on_pen_1 : off_pen;
+ state->m_background_bitmap.pix16(y, x) = (data & 0x80) ? on_pen_1 : off_pen;
x = x + 1;
data = data << 1;
@@ -215,7 +214,7 @@ INLINE int sprite_1_enabled(exidy_state *state)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
exidy_state *state = machine.driver_data<exidy_state>();
/* draw sprite 2 first */
@@ -291,31 +290,31 @@ static void check_collision(running_machine &machine)
return;
/* draw sprite 1 */
- state->m_motion_object_1_vid->fill(0xff, clip);
+ state->m_motion_object_1_vid.fill(0xff, clip);
if (sprite_1_enabled(state))
{
org_1_x = 236 - *state->m_sprite1_xpos - 4;
org_1_y = 244 - *state->m_sprite1_ypos - 4;
- drawgfx_transpen(*state->m_motion_object_1_vid, clip, machine.gfx[0],
+ drawgfx_transpen(state->m_motion_object_1_vid, clip, machine.gfx[0],
(*state->m_spriteno & 0x0f) + 16 * sprite_set_1, 0,
0, 0, 0, 0, 0);
}
/* draw sprite 2 */
- state->m_motion_object_2_vid->fill(0xff, clip);
+ state->m_motion_object_2_vid.fill(0xff, clip);
org_2_x = 236 - *state->m_sprite2_xpos - 4;
org_2_y = 244 - *state->m_sprite2_ypos - 4;
- drawgfx_transpen(*state->m_motion_object_2_vid, clip, machine.gfx[0],
+ drawgfx_transpen(state->m_motion_object_2_vid, clip, machine.gfx[0],
((*state->m_spriteno >> 4) & 0x0f) + 32 + 16 * sprite_set_2, 0,
0, 0, 0, 0, 0);
/* draw sprite 2 clipped to sprite 1's location */
- state->m_motion_object_2_clip->fill(0xff, clip);
+ state->m_motion_object_2_clip.fill(0xff, clip);
if (sprite_1_enabled(state))
{
sx = org_2_x - org_1_x;
sy = org_2_y - org_1_y;
- drawgfx_transpen(*state->m_motion_object_2_clip, clip, machine.gfx[0],
+ drawgfx_transpen(state->m_motion_object_2_clip, clip, machine.gfx[0],
((*state->m_spriteno >> 4) & 0x0f) + 32 + 16 * sprite_set_2, 0,
0, 0, sx, sy, 0);
}
@@ -324,16 +323,16 @@ static void check_collision(running_machine &machine)
for (sy = 0; sy < 16; sy++)
for (sx = 0; sx < 16; sx++)
{
- if (state->m_motion_object_1_vid->pix16(sy, sx) != 0xff)
+ if (state->m_motion_object_1_vid.pix16(sy, sx) != 0xff)
{
UINT8 current_collision_mask = 0;
/* check for background collision (M1CHAR) */
- if (state->m_background_bitmap->pix16(org_1_y + sy, org_1_x + sx) != 0)
+ if (state->m_background_bitmap.pix16(org_1_y + sy, org_1_x + sx) != 0)
current_collision_mask |= 0x04;
/* check for motion object collision (M1M2) */
- if (state->m_motion_object_2_clip->pix16(sy, sx) != 0xff)
+ if (state->m_motion_object_2_clip.pix16(sy, sx) != 0xff)
current_collision_mask |= 0x10;
/* if we got one, trigger an interrupt */
@@ -341,10 +340,10 @@ static void check_collision(running_machine &machine)
machine.scheduler().timer_set(machine.primary_screen->time_until_pos(org_1_x + sx, org_1_y + sy), FUNC(collision_irq_callback), current_collision_mask);
}
- if (state->m_motion_object_2_vid->pix16(sy, sx) != 0xff)
+ if (state->m_motion_object_2_vid.pix16(sy, sx) != 0xff)
{
/* check for background collision (M2CHAR) */
- if (state->m_background_bitmap->pix16(org_2_y + sy, org_2_x + sx) != 0)
+ if (state->m_background_bitmap.pix16(org_2_y + sy, org_2_x + sx) != 0)
if ((state->m_collision_mask & 0x08) && (count++ < 128))
machine.scheduler().timer_set(machine.primary_screen->time_until_pos(org_2_x + sx, org_2_y + sy), FUNC(collision_irq_callback), 0x08);
}
@@ -359,7 +358,7 @@ static void check_collision(running_machine &machine)
*
*************************************/
-SCREEN_UPDATE( exidy )
+SCREEN_UPDATE_IND16( exidy )
{
exidy_state *state = screen.machine().driver_data<exidy_state>();
/* refresh the colors from the palette (static or dynamic) */
@@ -367,7 +366,7 @@ SCREEN_UPDATE( exidy )
/* update the background and draw it */
draw_background(screen.machine());
- copybitmap(bitmap, *state->m_background_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_background_bitmap, 0, 0, 0, 0, cliprect);
/* draw the sprites */
draw_sprites(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/exidy440.c b/src/mame/video/exidy440.c
index 3d550875c98..a9f26fc1e7a 100644
--- a/src/mame/video/exidy440.c
+++ b/src/mame/video/exidy440.c
@@ -302,7 +302,7 @@ static TIMER_CALLBACK( collide_firq_callback )
*
*************************************/
-static void draw_sprites(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect,
+static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect,
int scroll_offset, int check_collision)
{
exidy440_state *state = screen.machine().driver_data<exidy440_state>();
@@ -403,7 +403,7 @@ static void draw_sprites(screen_device &screen, bitmap_t &bitmap, const rectangl
*
*************************************/
-static void update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect,
+static void update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect,
int scroll_offset, int check_collision)
{
exidy440_state *state = screen.machine().driver_data<exidy440_state>();
@@ -433,7 +433,7 @@ static void update_screen(screen_device &screen, bitmap_t &bitmap, const rectang
*
*************************************/
-static SCREEN_UPDATE( exidy440 )
+static SCREEN_UPDATE_IND16( exidy440 )
{
/* redraw the screen */
update_screen(screen, bitmap, cliprect, 0, TRUE);
@@ -465,7 +465,7 @@ static SCREEN_UPDATE( exidy440 )
}
-static SCREEN_UPDATE( topsecex )
+static SCREEN_UPDATE_IND16( topsecex )
{
exidy440_state *state = screen.machine().driver_data<exidy440_state>();
/* redraw the screen */
@@ -488,9 +488,8 @@ MACHINE_CONFIG_FRAGMENT( exidy440_video )
MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(exidy440)
+ MCFG_SCREEN_UPDATE_STATIC(exidy440)
MACHINE_CONFIG_END
@@ -500,5 +499,5 @@ MACHINE_CONFIG_FRAGMENT( topsecex_video )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, TOPSECEX_VBSTART)
- MCFG_SCREEN_UPDATE(topsecex)
+ MCFG_SCREEN_UPDATE_STATIC(topsecex)
MACHINE_CONFIG_END
diff --git a/src/mame/video/exprraid.c b/src/mame/video/exprraid.c
index 69541259a11..99168bfc9db 100644
--- a/src/mame/video/exprraid.c
+++ b/src/mame/video/exprraid.c
@@ -96,7 +96,7 @@ VIDEO_START( exprraid )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
exprraid_state *state = machine.driver_data<exprraid_state>();
int offs;
@@ -136,7 +136,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( exprraid )
+SCREEN_UPDATE_IND16( exprraid )
{
exprraid_state *state = screen.machine().driver_data<exprraid_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/exterm.c b/src/mame/video/exterm.c
index ffaaf21fbfe..7093ad82ede 100644
--- a/src/mame/video/exterm.c
+++ b/src/mame/video/exterm.c
@@ -67,7 +67,7 @@ void exterm_from_shiftreg_slave(address_space *space, UINT32 address, UINT16 *sh
*
*************************************/
-void exterm_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void exterm_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
exterm_state *state = screen.machine().driver_data<exterm_state>();
UINT16 *bgsrc = &state->m_master_videoram[(params->rowaddr << 8) & 0xff00];
diff --git a/src/mame/video/exzisus.c b/src/mame/video/exzisus.c
index f5cd20159c8..bae608461cb 100644
--- a/src/mame/video/exzisus.c
+++ b/src/mame/video/exzisus.c
@@ -76,7 +76,7 @@ WRITE8_HANDLER( exzisus_objectram_1_w )
Screen refresh
***************************************************************************/
-SCREEN_UPDATE( exzisus )
+SCREEN_UPDATE_IND16( exzisus )
{
exzisus_state *state = screen.machine().driver_data<exzisus_state>();
int offs;
diff --git a/src/mame/video/f1gp.c b/src/mame/video/f1gp.c
index 44754c974a9..7cba1718810 100644
--- a/src/mame/video/f1gp.c
+++ b/src/mame/video/f1gp.c
@@ -177,7 +177,7 @@ WRITE16_HANDLER( f1gp2_gfxctrl_w )
***************************************************************************/
-static void f1gp_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int chip, int primask )
+static void f1gp_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int primask )
{
f1gp_state *state = machine.driver_data<f1gp_state>();
int attr_start, first;
@@ -250,7 +250,7 @@ static void f1gp_draw_sprites( running_machine &machine, bitmap_t &bitmap, const
}
-SCREEN_UPDATE( f1gp )
+SCREEN_UPDATE_IND16( f1gp )
{
f1gp_state *state = screen.machine().driver_data<f1gp_state>();
@@ -275,7 +275,7 @@ SCREEN_UPDATE( f1gp )
}
-static void f1gpb_draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void f1gpb_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
f1gp_state *state = machine.driver_data<f1gp_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -343,7 +343,7 @@ static void f1gpb_draw_sprites( running_machine &machine, bitmap_t &bitmap,const
}
}
-SCREEN_UPDATE( f1gpb )
+SCREEN_UPDATE_IND16( f1gpb )
{
f1gp_state *state = screen.machine().driver_data<f1gp_state>();
UINT32 startx, starty;
@@ -372,7 +372,7 @@ SCREEN_UPDATE( f1gpb )
}
-static void f1gp2_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void f1gp2_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
f1gp_state *state = machine.driver_data<f1gp_state>();
int offs;
@@ -444,7 +444,7 @@ static void f1gp2_draw_sprites( running_machine &machine, bitmap_t &bitmap, cons
}
-SCREEN_UPDATE( f1gp2 )
+SCREEN_UPDATE_IND16( f1gp2 )
{
f1gp_state *state = screen.machine().driver_data<f1gp_state>();
diff --git a/src/mame/video/fantland.c b/src/mame/video/fantland.c
index 14b31adace6..13980805707 100644
--- a/src/mame/video/fantland.c
+++ b/src/mame/video/fantland.c
@@ -61,7 +61,7 @@
#include "emu.h"
#include "includes/fantland.h"
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
fantland_state *state = machine.driver_data<fantland_state>();
UINT8 *spriteram_2 = state->m_spriteram2;
@@ -139,7 +139,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( fantland )
+SCREEN_UPDATE_IND16( fantland )
{
bitmap.fill(0, cliprect);
draw_sprites(screen.machine(),bitmap,cliprect);
diff --git a/src/mame/video/fastfred.c b/src/mame/video/fastfred.c
index b9dde73f7b9..68070651379 100644
--- a/src/mame/video/fastfred.c
+++ b/src/mame/video/fastfred.c
@@ -231,7 +231,7 @@ WRITE8_HANDLER( fastfred_flip_screen_y_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const rectangle spritevisiblearea(2*8, 32*8-1, 2*8, 30*8-1);
const rectangle spritevisibleareaflipx(0*8, 30*8-1, 2*8, 30*8-1);
@@ -296,7 +296,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( fastfred )
+SCREEN_UPDATE_IND16( fastfred )
{
fastfred_state *state = screen.machine().driver_data<fastfred_state>();
bitmap.fill(*state->m_background_color, cliprect);
@@ -366,7 +366,7 @@ VIDEO_START( imago )
palette_set_color(machine,256+64+1,MAKE_RGB(0x00,0x00,0x00));
}
-SCREEN_UPDATE( imago )
+SCREEN_UPDATE_IND16( imago )
{
fastfred_state *state = screen.machine().driver_data<fastfred_state>();
tilemap_draw(bitmap,cliprect,state->m_web_tilemap,0,0);
diff --git a/src/mame/video/fastlane.c b/src/mame/video/fastlane.c
index ed31f90c459..5e7744ad1c9 100644
--- a/src/mame/video/fastlane.c
+++ b/src/mame/video/fastlane.c
@@ -155,7 +155,7 @@ WRITE8_HANDLER( fastlane_vram2_w )
***************************************************************************/
-SCREEN_UPDATE( fastlane )
+SCREEN_UPDATE_IND16( fastlane )
{
fastlane_state *state = screen.machine().driver_data<fastlane_state>();
rectangle finalclip0 = state->m_clip0, finalclip1 = state->m_clip1;
diff --git a/src/mame/video/fcombat.c b/src/mame/video/fcombat.c
index 1fdec30c16e..94cfbfa78d8 100644
--- a/src/mame/video/fcombat.c
+++ b/src/mame/video/fcombat.c
@@ -134,7 +134,7 @@ WRITE8_HANDLER( fcombat_videoreg_w )
-SCREEN_UPDATE( fcombat )
+SCREEN_UPDATE_IND16( fcombat )
{
fcombat_state *state = screen.machine().driver_data<fcombat_state>();
int sx, sy, offs, i;
diff --git a/src/mame/video/fgoal.c b/src/mame/video/fgoal.c
index bbd980c6668..8f4ba986e7e 100644
--- a/src/mame/video/fgoal.c
+++ b/src/mame/video/fgoal.c
@@ -32,15 +32,15 @@ WRITE8_HANDLER( fgoal_xpos_w )
VIDEO_START( fgoal )
{
fgoal_state *state = machine.driver_data<fgoal_state>();
- state->m_fgbitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_bgbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_fgbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_bgbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
- state->save_item(NAME(*state->m_fgbitmap));
- state->save_item(NAME(*state->m_bgbitmap));
+ state->save_item(NAME(state->m_fgbitmap));
+ state->save_item(NAME(state->m_bgbitmap));
}
-SCREEN_UPDATE( fgoal )
+SCREEN_UPDATE_IND16( fgoal )
{
fgoal_state *state = screen.machine().driver_data<fgoal_state>();
const UINT8* VRAM = state->m_video_ram;
@@ -53,14 +53,14 @@ SCREEN_UPDATE( fgoal )
if (state->m_fgoal_player == 1 && (input_port_read(screen.machine(), "IN1") & 0x40))
{
- drawgfxzoom_opaque(*state->m_fgbitmap, cliprect, screen.machine().gfx[0],
+ drawgfxzoom_opaque(state->m_fgbitmap, cliprect, screen.machine().gfx[0],
0, (state->m_fgoal_player << 2) | state->m_current_color,
1, 1,
0, 16,
0x40000,
0x40000);
- drawgfxzoom_opaque(*state->m_bgbitmap, cliprect, screen.machine().gfx[1],
+ drawgfxzoom_opaque(state->m_bgbitmap, cliprect, screen.machine().gfx[1],
0, 0,
1, 1,
0, 16,
@@ -69,14 +69,14 @@ SCREEN_UPDATE( fgoal )
}
else
{
- drawgfxzoom_opaque(*state->m_fgbitmap, cliprect, screen.machine().gfx[0],
+ drawgfxzoom_opaque(state->m_fgbitmap, cliprect, screen.machine().gfx[0],
0, (state->m_fgoal_player << 2) | state->m_current_color,
0, 0,
0, 0,
0x40000,
0x40000);
- drawgfxzoom_opaque(*state->m_bgbitmap, cliprect, screen.machine().gfx[1],
+ drawgfxzoom_opaque(state->m_bgbitmap, cliprect, screen.machine().gfx[1],
0, 0,
0, 0,
0, 0,
@@ -92,7 +92,7 @@ SCREEN_UPDATE( fgoal )
{
if (y < 256 && x < 256)
{
- state->m_fgbitmap->pix16(y, x) = 128 + 16;
+ state->m_fgbitmap.pix16(y, x) = 128 + 16;
}
}
}
@@ -103,8 +103,8 @@ SCREEN_UPDATE( fgoal )
{
UINT16* p = &bitmap.pix16(y);
- const UINT16* FG = &state->m_fgbitmap->pix16(y);
- const UINT16* BG = &state->m_bgbitmap->pix16(y);
+ const UINT16* FG = &state->m_fgbitmap.pix16(y);
+ const UINT16* BG = &state->m_bgbitmap.pix16(y);
for (x = 0; x < 256; x += 8)
{
diff --git a/src/mame/video/finalizr.c b/src/mame/video/finalizr.c
index 741498c9ad5..3a4a4174077 100644
--- a/src/mame/video/finalizr.c
+++ b/src/mame/video/finalizr.c
@@ -85,7 +85,7 @@ WRITE8_HANDLER( finalizr_videoctrl_w )
-SCREEN_UPDATE( finalizr )
+SCREEN_UPDATE_IND16( finalizr )
{
finalizr_state *state = screen.machine().driver_data<finalizr_state>();
int offs;
diff --git a/src/mame/video/firetrap.c b/src/mame/video/firetrap.c
index 2aff85f615b..057a9febd2f 100644
--- a/src/mame/video/firetrap.c
+++ b/src/mame/video/firetrap.c
@@ -200,7 +200,7 @@ WRITE8_HANDLER( firetrap_bg2_scrolly_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
firetrap_state *state = machine.driver_data<firetrap_state>();
int offs;
@@ -271,7 +271,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( firetrap )
+SCREEN_UPDATE_IND16( firetrap )
{
firetrap_state *state = screen.machine().driver_data<firetrap_state>();
tilemap_draw(bitmap, cliprect, state->m_bg2_tilemap, 0, 0);
diff --git a/src/mame/video/firetrk.c b/src/mame/video/firetrk.c
index 9ac47741441..d91ffcc0e5b 100644
--- a/src/mame/video/firetrk.c
+++ b/src/mame/video/firetrk.c
@@ -225,8 +225,8 @@ static TILE_GET_INFO( montecar_get_tile_info2 )
VIDEO_START( firetrk )
{
firetrk_state *state = machine.driver_data<firetrk_state>();
- state->m_helper1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_tilemap1 = tilemap_create(machine, firetrk_get_tile_info1, tilemap_scan_rows, 16, 16, 16, 16);
state->m_tilemap2 = tilemap_create(machine, firetrk_get_tile_info2, tilemap_scan_rows, 16, 16, 16, 16);
@@ -236,8 +236,8 @@ VIDEO_START( firetrk )
VIDEO_START( superbug )
{
firetrk_state *state = machine.driver_data<firetrk_state>();
- state->m_helper1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_tilemap1 = tilemap_create(machine, superbug_get_tile_info1, tilemap_scan_rows, 16, 16, 16, 16);
state->m_tilemap2 = tilemap_create(machine, superbug_get_tile_info2, tilemap_scan_rows, 16, 16, 16, 16);
@@ -247,15 +247,15 @@ VIDEO_START( superbug )
VIDEO_START( montecar )
{
firetrk_state *state = machine.driver_data<firetrk_state>();
- state->m_helper1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_tilemap1 = tilemap_create(machine, montecar_get_tile_info1, tilemap_scan_rows, 16, 16, 16, 16);
state->m_tilemap2 = tilemap_create(machine, montecar_get_tile_info2, tilemap_scan_rows, 16, 16, 16, 16);
}
-static void firetrk_draw_car(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, gfx_element **gfx, int which, int flash)
+static void firetrk_draw_car(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, int which, int flash)
{
firetrk_state *state = machine.driver_data<firetrk_state>();
int gfx_bank, code, color, flip_x, flip_y, x, y;
@@ -285,7 +285,7 @@ static void firetrk_draw_car(running_machine &machine, bitmap_t &bitmap, const r
}
-static void superbug_draw_car(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, gfx_element **gfx, int flash)
+static void superbug_draw_car(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, int flash)
{
firetrk_state *state = machine.driver_data<firetrk_state>();
int gfx_bank = (*state->m_car_rot & 0x10) ? 4 : 3;
@@ -298,7 +298,7 @@ static void superbug_draw_car(running_machine &machine, bitmap_t &bitmap, const
}
-static void montecar_draw_car(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, gfx_element **gfx, int which, int is_collision_detection)
+static void montecar_draw_car(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, int which, int is_collision_detection)
{
firetrk_state *state = machine.driver_data<firetrk_state>();
int gfx_bank, code, color, flip_x, flip_y, x, y;
@@ -328,7 +328,7 @@ static void montecar_draw_car(running_machine &machine, bitmap_t &bitmap, const
}
-static void draw_text(bitmap_t &bitmap, const rectangle &cliprect, gfx_element **gfx, UINT8 *alpha_ram,
+static void draw_text(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, UINT8 *alpha_ram,
int x, int count, int height)
{
int i;
@@ -345,8 +345,8 @@ static void check_collision(firetrk_state *state, int which)
for (y = playfield_window.min_y; y <= playfield_window.max_y; y++)
for (x = playfield_window.min_x; x <= playfield_window.max_x; x++)
{
- pen_t a = state->m_helper1->pix16(y, x);
- pen_t b = state->m_helper2->pix16(y, x);
+ pen_t a = state->m_helper1.pix16(y, x);
+ pen_t b = state->m_helper2.pix16(y, x);
if (b != 0xff && (state->m_color1_mask >> a) & 1)
state->m_crash[which] = 1;
@@ -357,7 +357,7 @@ static void check_collision(firetrk_state *state, int which)
}
-SCREEN_UPDATE( firetrk )
+SCREEN_UPDATE_IND16( firetrk )
{
firetrk_state *state = screen.machine().driver_data<firetrk_state>();
tilemap_mark_all_tiles_dirty_all(screen.machine());
@@ -375,14 +375,14 @@ SCREEN_UPDATE( firetrk )
if (cliprect.max_y == screen.visible_area().max_y)
{
- tilemap_draw(*state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
+ tilemap_draw(state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
- state->m_helper2->fill(0xff, playfield_window);
- firetrk_draw_car(screen.machine(), *state->m_helper2, playfield_window, screen.machine().gfx, 0, FALSE);
+ state->m_helper2.fill(0xff, playfield_window);
+ firetrk_draw_car(screen.machine(), state->m_helper2, playfield_window, screen.machine().gfx, 0, FALSE);
check_collision(state, 0);
- state->m_helper2->fill(0xff, playfield_window);
- firetrk_draw_car(screen.machine(), *state->m_helper2, playfield_window, screen.machine().gfx, 1, FALSE);
+ state->m_helper2.fill(0xff, playfield_window);
+ firetrk_draw_car(screen.machine(), state->m_helper2, playfield_window, screen.machine().gfx, 1, FALSE);
check_collision(state, 1);
*state->m_blink = FALSE;
@@ -392,7 +392,7 @@ SCREEN_UPDATE( firetrk )
}
-SCREEN_UPDATE( superbug )
+SCREEN_UPDATE_IND16( superbug )
{
firetrk_state *state = screen.machine().driver_data<firetrk_state>();
tilemap_mark_all_tiles_dirty_all(screen.machine());
@@ -409,10 +409,10 @@ SCREEN_UPDATE( superbug )
if (cliprect.max_y == screen.visible_area().max_y)
{
- tilemap_draw(*state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
+ tilemap_draw(state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
- state->m_helper2->fill(0xff, playfield_window);
- superbug_draw_car(screen.machine(), *state->m_helper2, playfield_window, screen.machine().gfx, FALSE);
+ state->m_helper2.fill(0xff, playfield_window);
+ superbug_draw_car(screen.machine(), state->m_helper2, playfield_window, screen.machine().gfx, FALSE);
check_collision(state, 0);
*state->m_blink = FALSE;
@@ -422,7 +422,7 @@ SCREEN_UPDATE( superbug )
}
-SCREEN_UPDATE( montecar )
+SCREEN_UPDATE_IND16( montecar )
{
firetrk_state *state = screen.machine().driver_data<firetrk_state>();
tilemap_mark_all_tiles_dirty_all(screen.machine());
@@ -440,14 +440,14 @@ SCREEN_UPDATE( montecar )
if (cliprect.max_y == screen.visible_area().max_y)
{
- tilemap_draw(*state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
+ tilemap_draw(state->m_helper1, playfield_window, state->m_tilemap2, 0, 0);
- state->m_helper2->fill(0xff, playfield_window);
- montecar_draw_car(screen.machine(), *state->m_helper2, playfield_window, screen.machine().gfx, 0, TRUE);
+ state->m_helper2.fill(0xff, playfield_window);
+ montecar_draw_car(screen.machine(), state->m_helper2, playfield_window, screen.machine().gfx, 0, TRUE);
check_collision(state, 0);
- state->m_helper2->fill(0xff, playfield_window);
- montecar_draw_car(screen.machine(), *state->m_helper2, playfield_window, screen.machine().gfx, 1, TRUE);
+ state->m_helper2.fill(0xff, playfield_window);
+ montecar_draw_car(screen.machine(), state->m_helper2, playfield_window, screen.machine().gfx, 1, TRUE);
check_collision(state, 1);
}
diff --git a/src/mame/video/fitfight.c b/src/mame/video/fitfight.c
index 031ed1d7c9b..f1fc1893fde 100644
--- a/src/mame/video/fitfight.c
+++ b/src/mame/video/fitfight.c
@@ -4,7 +4,7 @@
#include "includes/fitfight.h"
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
{
fitfight_state *state = machine.driver_data<fitfight_state>();
const gfx_element *gfx = machine.gfx[3];
@@ -114,7 +114,7 @@ VIDEO_START(fitfight)
tilemap_set_transparent_pen(state->m_fof_txt_tilemap, 0);
}
-SCREEN_UPDATE(fitfight)
+SCREEN_UPDATE_IND16(fitfight)
{
fitfight_state *state = screen.machine().driver_data<fitfight_state>();
diff --git a/src/mame/video/flkatck.c b/src/mame/video/flkatck.c
index 44ce615c56d..2beae0c697a 100644
--- a/src/mame/video/flkatck.c
+++ b/src/mame/video/flkatck.c
@@ -132,7 +132,7 @@ WRITE8_HANDLER( flkatck_k007121_regs_w )
***************************************************************************/
-SCREEN_UPDATE( flkatck )
+SCREEN_UPDATE_IND16( flkatck )
{
flkatck_state *state = screen.machine().driver_data<flkatck_state>();
rectangle clip[2];
diff --git a/src/mame/video/flower.c b/src/mame/video/flower.c
index 35d318a4c6e..12a6529e22c 100644
--- a/src/mame/video/flower.c
+++ b/src/mame/video/flower.c
@@ -25,7 +25,7 @@ PALETTE_INIT( flower )
colortable_entry_set_value(machine.colortable, i, i);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
flower_state *state = machine.driver_data<flower_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -163,7 +163,7 @@ VIDEO_START(flower)
tilemap_set_scrolly(state->m_text_right_tilemap, 0, 16);
}
-SCREEN_UPDATE( flower )
+SCREEN_UPDATE_IND16( flower )
{
flower_state *state = screen.machine().driver_data<flower_state>();
rectangle myclip = cliprect;
diff --git a/src/mame/video/flstory.c b/src/mame/video/flstory.c
index 71ab6f94c28..d354bf5c51e 100644
--- a/src/mame/video/flstory.c
+++ b/src/mame/video/flstory.c
@@ -178,7 +178,7 @@ WRITE8_HANDLER( flstory_scrlram_w )
}
-static void flstory_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void flstory_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
flstory_state *state = machine.driver_data<flstory_state>();
int i;
@@ -223,7 +223,7 @@ static void flstory_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( flstory )
+SCREEN_UPDATE_IND16( flstory )
{
flstory_state *state = screen.machine().driver_data<flstory_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0 | TILEMAP_DRAW_LAYER1, 0);
@@ -235,7 +235,7 @@ SCREEN_UPDATE( flstory )
return 0;
}
-static void victnine_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void victnine_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
flstory_state *state = machine.driver_data<flstory_state>();
int i;
@@ -280,7 +280,7 @@ static void victnine_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-SCREEN_UPDATE( victnine )
+SCREEN_UPDATE_IND16( victnine )
{
flstory_state *state = screen.machine().driver_data<flstory_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -288,7 +288,7 @@ SCREEN_UPDATE( victnine )
return 0;
}
-SCREEN_UPDATE( rumba )
+SCREEN_UPDATE_IND16( rumba )
{
flstory_state *state = screen.machine().driver_data<flstory_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0 | TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/foodf.c b/src/mame/video/foodf.c
index 8ba0c8b2522..108ebab1115 100644
--- a/src/mame/video/foodf.c
+++ b/src/mame/video/foodf.c
@@ -114,12 +114,12 @@ WRITE16_HANDLER( foodf_paletteram_w )
*
*************************************/
-SCREEN_UPDATE( foodf )
+SCREEN_UPDATE_IND16( foodf )
{
foodf_state *state = screen.machine().driver_data<foodf_state>();
int offs;
const gfx_element *gfx = screen.machine().gfx[1];
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
UINT16 *spriteram16 = state->m_spriteram;
/* first draw the playfield opaquely */
diff --git a/src/mame/video/freekick.c b/src/mame/video/freekick.c
index 5c7e6a8d03c..d879b26f336 100644
--- a/src/mame/video/freekick.c
+++ b/src/mame/video/freekick.c
@@ -29,7 +29,7 @@ WRITE8_HANDLER( freek_videoram_w )
tilemap_mark_tile_dirty(state->m_freek_tilemap, offset & 0x3ff);
}
-static void gigas_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void gigas_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
freekick_state *state = machine.driver_data<freekick_state>();
int offs;
@@ -64,7 +64,7 @@ static void gigas_draw_sprites( running_machine &machine, bitmap_t &bitmap, cons
}
-static void pbillrd_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void pbillrd_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
freekick_state *state = machine.driver_data<freekick_state>();
int offs;
@@ -100,7 +100,7 @@ static void pbillrd_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
-static void freekick_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void freekick_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
freekick_state *state = machine.driver_data<freekick_state>();
int offs;
@@ -134,7 +134,7 @@ static void freekick_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-SCREEN_UPDATE( gigas )
+SCREEN_UPDATE_IND16( gigas )
{
freekick_state *state = screen.machine().driver_data<freekick_state>();
tilemap_draw(bitmap, cliprect, state->m_freek_tilemap, 0, 0);
@@ -142,7 +142,7 @@ SCREEN_UPDATE( gigas )
return 0;
}
-SCREEN_UPDATE( pbillrd )
+SCREEN_UPDATE_IND16( pbillrd )
{
freekick_state *state = screen.machine().driver_data<freekick_state>();
tilemap_draw(bitmap, cliprect, state->m_freek_tilemap, 0, 0);
@@ -150,7 +150,7 @@ SCREEN_UPDATE( pbillrd )
return 0;
}
-SCREEN_UPDATE( freekick )
+SCREEN_UPDATE_IND16( freekick )
{
freekick_state *state = screen.machine().driver_data<freekick_state>();
tilemap_draw(bitmap, cliprect, state->m_freek_tilemap, 0, 0);
diff --git a/src/mame/video/fromanc2.c b/src/mame/video/fromanc2.c
index 48ac23e21fd..df18246f27f 100644
--- a/src/mame/video/fromanc2.c
+++ b/src/mame/video/fromanc2.c
@@ -547,7 +547,7 @@ VIDEO_START( fromanc4 )
******************************************************************************/
-SCREEN_UPDATE( fromanc2_left )
+SCREEN_UPDATE_IND16( fromanc2_left )
{
fromanc2_state *state = screen.machine().driver_data<fromanc2_state>();
int i;
@@ -565,7 +565,7 @@ SCREEN_UPDATE( fromanc2_left )
return 0;
}
-SCREEN_UPDATE( fromanc2_right )
+SCREEN_UPDATE_IND16( fromanc2_right )
{
fromanc2_state *state = screen.machine().driver_data<fromanc2_state>();
int i;
diff --git a/src/mame/video/fromance.c b/src/mame/video/fromance.c
index 008b1413913..dd40c6e2ca6 100644
--- a/src/mame/video/fromance.c
+++ b/src/mame/video/fromance.c
@@ -303,7 +303,7 @@ WRITE8_HANDLER( fromance_crtc_register_w )
*
*************************************/
-static void draw_sprites( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int draw_priority )
+static void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int draw_priority )
{
fromance_state *state = screen.machine().driver_data<fromance_state>();
static const UINT8 zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
@@ -422,7 +422,7 @@ static void draw_sprites( screen_device &screen, bitmap_t &bitmap, const rectang
*
*************************************/
-SCREEN_UPDATE( fromance )
+SCREEN_UPDATE_IND16( fromance )
{
fromance_state *state = screen.machine().driver_data<fromance_state>();
@@ -437,7 +437,7 @@ SCREEN_UPDATE( fromance )
}
-SCREEN_UPDATE( pipedrm )
+SCREEN_UPDATE_IND16( pipedrm )
{
fromance_state *state = screen.machine().driver_data<fromance_state>();
diff --git a/src/mame/video/funkybee.c b/src/mame/video/funkybee.c
index 21ecaf55cd4..7aa85dade85 100644
--- a/src/mame/video/funkybee.c
+++ b/src/mame/video/funkybee.c
@@ -95,7 +95,7 @@ VIDEO_START( funkybee )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, funkybee_tilemap_scan, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
funkybee_state *state = machine.driver_data<funkybee_state>();
int offs;
@@ -124,7 +124,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_columns( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_columns( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
funkybee_state *state = machine.driver_data<funkybee_state>();
int offs;
@@ -160,7 +160,7 @@ static void draw_columns( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( funkybee )
+SCREEN_UPDATE_IND16( funkybee )
{
funkybee_state *state = screen.machine().driver_data<funkybee_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/funkyjet.c b/src/mame/video/funkyjet.c
index 88bc9cb460a..eff656f1d14 100644
--- a/src/mame/video/funkyjet.c
+++ b/src/mame/video/funkyjet.c
@@ -11,7 +11,7 @@
/******************************************************************************/
-SCREEN_UPDATE( funkyjet )
+SCREEN_UPDATE_IND16( funkyjet )
{
funkyjet_state *state = screen.machine().driver_data<funkyjet_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -22,6 +22,6 @@ SCREEN_UPDATE( funkyjet )
bitmap.fill(768, cliprect);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
return 0;
}
diff --git a/src/mame/video/funworld.c b/src/mame/video/funworld.c
index 20c49e83f84..cd396830185 100644
--- a/src/mame/video/funworld.c
+++ b/src/mame/video/funworld.c
@@ -195,7 +195,7 @@ VIDEO_START(magicrd2)
}
-SCREEN_UPDATE(funworld)
+SCREEN_UPDATE_IND16(funworld)
{
funworld_state *state = screen.machine().driver_data<funworld_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/funybubl.c b/src/mame/video/funybubl.c
index b68e0a32d6d..64b00006277 100644
--- a/src/mame/video/funybubl.c
+++ b/src/mame/video/funybubl.c
@@ -28,7 +28,7 @@ VIDEO_START(funybubl)
{
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
funybubl_state *state = machine.driver_data<funybubl_state>();
UINT8 *source = &state->m_banked_vram[0x2000 - 0x20];
@@ -73,7 +73,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE(funybubl)
+SCREEN_UPDATE_IND16(funybubl)
{
funybubl_state *state = screen.machine().driver_data<funybubl_state>();
int x, y, offs;
diff --git a/src/mame/video/fuukifg2.c b/src/mame/video/fuukifg2.c
index 4b3d0d22e59..11bdcb73364 100644
--- a/src/mame/video/fuukifg2.c
+++ b/src/mame/video/fuukifg2.c
@@ -135,12 +135,12 @@ VIDEO_START( fuuki16 )
***************************************************************************/
-static void draw_sprites( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
fuuki16_state *state = screen.machine().driver_data<fuuki16_state>();
int offs;
const gfx_element *gfx = screen.machine().gfx[0];
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
const rectangle &visarea = screen.visible_area();
UINT16 *spriteram16 = state->m_spriteram;
int max_x = visarea.max_x + 1;
@@ -265,7 +265,7 @@ if (screen.machine().input().code_pressed(KEYCODE_X))
***************************************************************************/
/* Wrapper to handle bg and bg2 ttogether */
-static void fuuki16_draw_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int i, int flag, int pri )
+static void fuuki16_draw_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i, int flag, int pri )
{
fuuki16_state *state = machine.driver_data<fuuki16_state>();
int buffer = (state->m_vregs[0x1e / 2] & 0x40);
@@ -282,7 +282,7 @@ static void fuuki16_draw_layer( running_machine &machine, bitmap_t &bitmap, cons
}
}
-SCREEN_UPDATE( fuuki16 )
+SCREEN_UPDATE_IND16( fuuki16 )
{
fuuki16_state *state = screen.machine().driver_data<fuuki16_state>();
UINT16 layer0_scrollx, layer0_scrolly;
diff --git a/src/mame/video/fuukifg3.c b/src/mame/video/fuukifg3.c
index 06d8821ba5e..25db696c27a 100644
--- a/src/mame/video/fuukifg3.c
+++ b/src/mame/video/fuukifg3.c
@@ -143,12 +143,12 @@ VIDEO_START( fuuki32 )
***************************************************************************/
-static void draw_sprites( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
fuuki32_state *state = screen.machine().driver_data<fuuki32_state>();
int offs;
const gfx_element *gfx = screen.machine().gfx[0];
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
const rectangle &visarea = screen.visible_area();
int max_x = visarea.max_x + 1;
int max_y = visarea.max_y + 1;
@@ -289,7 +289,7 @@ if (screen.machine().input().code_pressed(KEYCODE_X))
***************************************************************************/
/* Wrapper to handle bg and bg2 ttogether */
-static void fuuki32_draw_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int i, int flag, int pri )
+static void fuuki32_draw_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i, int flag, int pri )
{
fuuki32_state *state = machine.driver_data<fuuki32_state>();
int buffer = ((state->m_vregs[0x1e / 4] & 0x0000ffff) & 0x40);
@@ -306,7 +306,7 @@ static void fuuki32_draw_layer( running_machine &machine, bitmap_t &bitmap, cons
}
}
-SCREEN_UPDATE( fuuki32 )
+SCREEN_UPDATE_IND16( fuuki32 )
{
fuuki32_state *state = screen.machine().driver_data<fuuki32_state>();
UINT16 layer0_scrollx, layer0_scrolly;
diff --git a/src/mame/video/gaelco.c b/src/mame/video/gaelco.c
index 810e52f179b..441e9876b0c 100644
--- a/src/mame/video/gaelco.c
+++ b/src/mame/video/gaelco.c
@@ -121,7 +121,7 @@ VIDEO_START( maniacsq )
3 | xxxxxxxx xxxxxx-- | sprite code
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gaelco_state *state = machine.driver_data<gaelco_state>();
int i, x, y, ex, ey;
@@ -187,7 +187,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( maniacsq )
+SCREEN_UPDATE_IND16( maniacsq )
{
gaelco_state *state = screen.machine().driver_data<gaelco_state>();
@@ -216,7 +216,7 @@ SCREEN_UPDATE( maniacsq )
return 0;
}
-SCREEN_UPDATE( bigkarnk )
+SCREEN_UPDATE_IND16( bigkarnk )
{
gaelco_state *state = screen.machine().driver_data<gaelco_state>();
diff --git a/src/mame/video/gaelco2.c b/src/mame/video/gaelco2.c
index 15a7acb1151..0c2a4eea208 100644
--- a/src/mame/video/gaelco2.c
+++ b/src/mame/video/gaelco2.c
@@ -339,7 +339,7 @@ VIDEO_START( gaelco2_dual )
***************************************************************************/
-static void draw_sprites(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int mask, int xoffs)
+static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int mask, int xoffs)
{
gaelco2_state *state = screen.machine().driver_data<gaelco2_state>();
UINT16 *buffered_spriteram16 = screen.machine().generic.buffered_spriteram.u16;
@@ -436,7 +436,7 @@ static void draw_sprites(screen_device &screen, bitmap_t &bitmap, const rectangl
***************************************************************************/
-SCREEN_UPDATE( gaelco2 )
+SCREEN_UPDATE_IND16( gaelco2 )
{
gaelco2_state *state = screen.machine().driver_data<gaelco2_state>();
int i;
@@ -466,7 +466,7 @@ SCREEN_UPDATE( gaelco2 )
return 0;
}
-static UINT32 dual_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int index)
+static UINT32 dual_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int index)
{
gaelco2_state *state = screen.machine().driver_data<gaelco2_state>();
int i;
@@ -496,8 +496,8 @@ static UINT32 dual_update(screen_device &screen, bitmap_t &bitmap, const rectang
return 0;
}
-SCREEN_UPDATE( gaelco2_left ) { return dual_update(screen, bitmap, cliprect, 0); }
-SCREEN_UPDATE( gaelco2_right ) { return dual_update(screen, bitmap, cliprect, 1); }
+SCREEN_UPDATE_IND16( gaelco2_left ) { return dual_update(screen, bitmap, cliprect, 0); }
+SCREEN_UPDATE_IND16( gaelco2_right ) { return dual_update(screen, bitmap, cliprect, 1); }
diff --git a/src/mame/video/gaelco3d.c b/src/mame/video/gaelco3d.c
index 0d945585a37..2e9bbab81fd 100644
--- a/src/mame/video/gaelco3d.c
+++ b/src/mame/video/gaelco3d.c
@@ -27,16 +27,16 @@
gaelco3d_renderer::gaelco3d_renderer(gaelco3d_state &state)
: poly_manager<float, gaelco3d_object_data, 1, 2000>(state.machine()),
m_state(state),
- m_screenbits(machine().primary_screen->alloc_compatible_bitmap()),
- m_zbuffer(auto_bitmap_alloc(state.machine(), state.machine().primary_screen->width(), state.machine().primary_screen->height(), BITMAP_FORMAT_INDEXED16)),
+ m_screenbits(state.machine().primary_screen->width(), state.machine().primary_screen->height()),
+ m_zbuffer(state.machine().primary_screen->width(), state.machine().primary_screen->height()),
m_polygons(0),
m_texture_size(state.machine().region("gfx1")->bytes()),
m_texmask_size(state.machine().region("gfx2")->bytes() * 8),
m_texture(auto_alloc_array(state.machine(), UINT8, m_texture_size)),
m_texmask(auto_alloc_array(state.machine(), UINT8, m_texmask_size))
{
- state_save_register_global_bitmap(state.machine(), m_screenbits);
- state_save_register_global_bitmap(state.machine(), m_zbuffer);
+ state_save_register_global_bitmap(state.machine(), &m_screenbits);
+ state_save_register_global_bitmap(state.machine(), &m_zbuffer);
/* first expand the pixel data */
UINT8 *src = state.machine().region("gfx1")->base();
@@ -212,8 +212,8 @@ void gaelco3d_renderer::render_noz_noperspective(INT32 scanline, const extent_t
offs_t endmask = m_texture_size - 1;
const rgb_t *palsource = m_state.m_palette + object.color;
UINT32 tex = object.tex;
- UINT16 *dest = &m_screenbits->pix16(scanline);
- UINT16 *zbuf = &m_zbuffer->pix16(scanline);
+ UINT16 *dest = &m_screenbits.pix16(scanline);
+ UINT16 *zbuf = &m_zbuffer.pix16(scanline);
int startx = extent.startx;
float uoz = (object.uoz_base + scanline * object.uoz_dy + startx * object.uoz_dx) * zbase;
float voz = (object.voz_base + scanline * object.voz_dy + startx * object.voz_dx) * zbase;
@@ -251,8 +251,8 @@ void gaelco3d_renderer::render_normal(INT32 scanline, const extent_t &extent, co
const rgb_t *palsource = m_state.m_palette + object.color;
UINT32 tex = object.tex;
float z0 = object.z0;
- UINT16 *dest = &m_screenbits->pix16(scanline);
- UINT16 *zbuf = &m_zbuffer->pix16(scanline);
+ UINT16 *dest = &m_screenbits.pix16(scanline);
+ UINT16 *zbuf = &m_zbuffer.pix16(scanline);
int startx = extent.startx;
float ooz = object.ooz_base + scanline * object.ooz_dy + startx * ooz_dx;
float uoz = object.uoz_base + scanline * object.uoz_dy + startx * uoz_dx;
@@ -301,8 +301,8 @@ void gaelco3d_renderer::render_alphablend(INT32 scanline, const extent_t &extent
const rgb_t *palsource = m_state.m_palette + object.color;
UINT32 tex = object.tex;
float z0 = object.z0;
- UINT16 *dest = &m_screenbits->pix16(scanline);
- UINT16 *zbuf = &m_zbuffer->pix16(scanline);
+ UINT16 *dest = &m_screenbits.pix16(scanline);
+ UINT16 *zbuf = &m_zbuffer.pix16(scanline);
int startx = extent.startx;
float ooz = object.ooz_base + object.ooz_dy * scanline + startx * ooz_dx;
float uoz = object.uoz_base + object.uoz_dy * scanline + startx * uoz_dx;
@@ -431,7 +431,7 @@ WRITE32_HANDLER( gaelco3d_paletteram_020_w )
*
*************************************/
-SCREEN_UPDATE( gaelco3d )
+SCREEN_UPDATE_IND16( gaelco3d )
{
gaelco3d_state *state = screen.machine().driver_data<gaelco3d_state>();
int ret;
@@ -476,7 +476,7 @@ SCREEN_UPDATE( gaelco3d )
else*/
{
if (state->m_video_changed)
- copybitmap(bitmap, *state->m_poly->screenbits(), 0,1, 0,0, cliprect);
+ copybitmap(bitmap, state->m_poly->screenbits(), 0,1, 0,0, cliprect);
ret = state->m_video_changed;
state->m_video_changed = FALSE;
}
diff --git a/src/mame/video/gaiden.c b/src/mame/video/gaiden.c
index b9d8c4ded0f..f7cfb69937f 100644
--- a/src/mame/video/gaiden.c
+++ b/src/mame/video/gaiden.c
@@ -79,8 +79,8 @@ VIDEO_START( gaiden )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
state->m_background = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 16, 16, 64, 32);
state->m_foreground = tilemap_create(machine, get_fg_tile_info_raiga, tilemap_scan_rows, 16, 16, 64, 32);
@@ -99,7 +99,7 @@ VIDEO_START( gaiden )
tilemap_set_scrolldx(state->m_text_layer, 0, -1);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
}
VIDEO_START( mastninj )
@@ -110,8 +110,8 @@ VIDEO_START( mastninj )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
state->m_background = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 16, 16, 64, 32);
state->m_foreground = tilemap_create(machine, get_fg_tile_info_raiga, tilemap_scan_rows, 16, 16, 64, 32);
@@ -122,7 +122,7 @@ VIDEO_START( mastninj )
tilemap_set_transparent_pen(state->m_text_layer, 15);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
tilemap_set_scrolldx(state->m_background, -248, 248);
tilemap_set_scrolldx(state->m_foreground, -252, 252);
@@ -135,8 +135,8 @@ VIDEO_START( raiga )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
state->m_background = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 16, 16, 64, 32);
state->m_foreground = tilemap_create(machine, get_fg_tile_info_raiga, tilemap_scan_rows, 16, 16, 64, 32);
@@ -147,7 +147,7 @@ VIDEO_START( raiga )
tilemap_set_transparent_pen(state->m_text_layer, 0);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
}
VIDEO_START( drgnbowl )
@@ -310,7 +310,7 @@ WRITE16_HANDLER( gaiden_videoram_w )
changes?) it appears that the sprite drawing is no longer putting the correct raw data
in the bitmaps? */
static void blendbitmaps(running_machine &machine,
- bitmap_t &dest,bitmap_t &src1,bitmap_t &src2,bitmap_t &src3,
+ bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind16 &src2,bitmap_ind16 &src3,
int sx,int sy,const rectangle &cliprect)
{
int y,x;
@@ -367,7 +367,7 @@ static void blendbitmaps(running_machine &machine,
#define NUM_SPRITES 256
-static void gaiden_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg, bitmap_t &bitmap_fg, bitmap_t &bitmap_sp, const rectangle &cliprect )
+static void gaiden_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect )
{
static const UINT8 layout[8][8] =
{
@@ -465,7 +465,7 @@ static void gaiden_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg,
}
else
{
- bitmap_t &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
+ bitmap_ind16 &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
for (row = 0; row < sizey; row++)
{
@@ -489,7 +489,7 @@ static void gaiden_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg,
}
-static void raiga_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg, bitmap_t &bitmap_fg, bitmap_t &bitmap_sp, const rectangle &cliprect )
+static void raiga_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect )
{
static const UINT8 layout[8][8] =
{
@@ -586,7 +586,7 @@ static void raiga_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg, b
}
else
{
- bitmap_t &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
+ bitmap_ind16 &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
for (row = 0; row < sizey; row++)
{
@@ -629,7 +629,7 @@ static void raiga_draw_sprites( running_machine &machine, bitmap_t &bitmap_bg, b
* |---------x------- | x position (high bit)
*/
-static void drgnbowl_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void drgnbowl_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
gaiden_state *state = machine.driver_data<gaiden_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -670,58 +670,58 @@ static void drgnbowl_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( gaiden )
+SCREEN_UPDATE_RGB32( gaiden )
{
gaiden_state *state = screen.machine().driver_data<gaiden_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_tile_bitmap_bg->fill(0x200, cliprect);
- state->m_tile_bitmap_fg->fill(0, cliprect);
- state->m_sprite_bitmap->fill(0, cliprect);
+ state->m_tile_bitmap_bg.fill(0x200, cliprect);
+ state->m_tile_bitmap_fg.fill(0, cliprect);
+ state->m_sprite_bitmap.fill(0, cliprect);
/* draw tilemaps into a 16-bit bitmap */
- tilemap_draw(*state->m_tile_bitmap_bg, cliprect, state->m_background, 0, 1);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_foreground, 0, 2);
+ tilemap_draw(state->m_tile_bitmap_bg, cliprect, state->m_background, 0, 1);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_foreground, 0, 2);
/* draw the blended tiles at a lower priority
so sprites covered by them will still be drawn */
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_foreground, 1, 0);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_text_layer, 0, 4);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_foreground, 1, 0);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_text_layer, 0, 4);
/* draw sprites into a 16-bit bitmap */
- gaiden_draw_sprites(screen.machine(), *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, cliprect);
+ gaiden_draw_sprites(screen.machine(), state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, cliprect);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(screen.machine(), bitmap, *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, 0, 0, cliprect);
+ blendbitmaps(screen.machine(), bitmap, state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, 0, 0, cliprect);
return 0;
}
-SCREEN_UPDATE( raiga )
+SCREEN_UPDATE_RGB32( raiga )
{
gaiden_state *state = screen.machine().driver_data<gaiden_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_tile_bitmap_bg->fill(0x200, cliprect);
- state->m_tile_bitmap_fg->fill(0, cliprect);
- state->m_sprite_bitmap->fill(0, cliprect);
+ state->m_tile_bitmap_bg.fill(0x200, cliprect);
+ state->m_tile_bitmap_fg.fill(0, cliprect);
+ state->m_sprite_bitmap.fill(0, cliprect);
/* draw tilemaps into a 16-bit bitmap */
- tilemap_draw(*state->m_tile_bitmap_bg, cliprect, state->m_background, 0, 1);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_foreground, 0, 2);
+ tilemap_draw(state->m_tile_bitmap_bg, cliprect, state->m_background, 0, 1);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_foreground, 0, 2);
/* draw the blended tiles at a lower priority
so sprites covered by them will still be drawn */
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_foreground, 1, 0);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect, state->m_text_layer, 0, 4);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_foreground, 1, 0);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect, state->m_text_layer, 0, 4);
/* draw sprites into a 16-bit bitmap */
- raiga_draw_sprites(screen.machine(), *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, cliprect);
+ raiga_draw_sprites(screen.machine(), state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, cliprect);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(screen.machine(), bitmap, *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, 0, 0, cliprect);
+ blendbitmaps(screen.machine(), bitmap, state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, 0, 0, cliprect);
return 0;
}
-SCREEN_UPDATE( drgnbowl )
+SCREEN_UPDATE_IND16( drgnbowl )
{
gaiden_state *state = screen.machine().driver_data<gaiden_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c
index 62dc8ef7270..bc926d6258d 100644
--- a/src/mame/video/galaga.c
+++ b/src/mame/video/galaga.c
@@ -476,7 +476,7 @@ WRITE8_HANDLER ( gatsbee_bank_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
galaga_state *state = machine.driver_data<galaga_state>();
@@ -530,7 +530,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
galaga_state *state = machine.driver_data<galaga_state>();
/* draw the stars */
@@ -565,7 +565,7 @@ static void draw_stars(running_machine &machine, bitmap_t &bitmap, const rectang
}
}
-SCREEN_UPDATE( galaga )
+SCREEN_UPDATE_IND16( galaga )
{
galaga_state *state = screen.machine().driver_data<galaga_state>();
diff --git a/src/mame/video/galastrm.c b/src/mame/video/galastrm.c
index b6d46e97b90..91f847205f8 100644
--- a/src/mame/video/galastrm.c
+++ b/src/mame/video/galastrm.c
@@ -9,7 +9,7 @@
typedef struct _poly_extra_data poly_extra_data;
struct _poly_extra_data
{
- bitmap_t *texbase;
+ bitmap_ind16 *texbase;
};
typedef struct _polygon polygon;
@@ -33,8 +33,8 @@ VIDEO_START( galastrm )
galastrm_state *state = machine.driver_data<galastrm_state>();
state->m_spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
- state->m_tmpbitmaps = machine.primary_screen->alloc_compatible_bitmap();
- state->m_polybitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmaps.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_polybitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_poly = poly_alloc(machine, 16, sizeof(poly_extra_data), POLYFLAG_ALLOW_QUADS);
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(galastrm_exit), &machine));
@@ -193,7 +193,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const int *primasks, int priority)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const int *primasks, int priority)
{
galastrm_state *state = machine.driver_data<galastrm_state>();
struct tempsprite *sprite_ptr = state->m_sprite_ptr_pre;
@@ -223,9 +223,9 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
static void tc0610_draw_scanline(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *framebuffer = &destmap->pix16(scanline);
- bitmap_t *texbase = extra->texbase;
+ bitmap_ind16 *texbase = extra->texbase;
int startx = extent->startx;
int stopx = extent->stopx;
INT32 u = extent->param[0].start;
@@ -242,7 +242,7 @@ static void tc0610_draw_scanline(void *dest, INT32 scanline, const poly_extent *
}
}
-static void tc0610_rotate_draw(running_machine &machine, bitmap_t &bitmap, bitmap_t *srcbitmap, const rectangle &clip)
+static void tc0610_rotate_draw(running_machine &machine, bitmap_ind16 &bitmap, bitmap_ind16 &srcbitmap, const rectangle &clip)
{
galastrm_state *state = machine.driver_data<galastrm_state>();
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(state->m_poly);
@@ -254,8 +254,8 @@ static void tc0610_rotate_draw(running_machine &machine, bitmap_t &bitmap, bitma
const int rzy = state->m_tc0610_ctrl_reg[1][3];
const int ryx = state->m_tc0610_ctrl_reg[1][5];
const int ryy = state->m_tc0610_ctrl_reg[1][4];
- const int lx = srcbitmap->width();
- const int ly = srcbitmap->height();
+ const int lx = srcbitmap.width();
+ const int ly = srcbitmap.height();
int yx, /*yy,*/ zx, zy, pxx, pxy, pyx, pyy;
float /*ssn, scs, ysn, ycs,*/ zsn, zcs;
@@ -426,7 +426,7 @@ static void tc0610_rotate_draw(running_machine &machine, bitmap_t &bitmap, bitma
vert[3].p[0] = (float)(lx - 1) * 65536.0;
vert[3].p[1] = 0.0;
- extra->texbase = srcbitmap;
+ extra->texbase = &srcbitmap;
callback = tc0610_draw_scanline;
poly_render_quad(state->m_poly, &bitmap, clip, callback, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
}
@@ -435,7 +435,7 @@ static void tc0610_rotate_draw(running_machine &machine, bitmap_t &bitmap, bitma
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( galastrm )
+SCREEN_UPDATE_IND16( galastrm )
{
galastrm_state *state = screen.machine().driver_data<galastrm_state>();
device_t *tc0100scn = screen.machine().device("tc0100scn");
@@ -445,7 +445,7 @@ SCREEN_UPDATE( galastrm )
UINT16 priority;
static const int primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
rectangle clip;
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
clip.min_x = 0;
clip.min_y = 0;
@@ -468,7 +468,7 @@ SCREEN_UPDATE( galastrm )
bitmap.fill(0, cliprect);
priority_bitmap.fill(0, clip);
- state->m_tmpbitmaps->fill(0, clip);
+ state->m_tmpbitmaps.fill(0, clip);
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, pivlayer[0], 0, 0);
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, pivlayer[1], 0, 0);
@@ -499,7 +499,7 @@ SCREEN_UPDATE( galastrm )
for (x=0; x < priority_bitmap.width; x++)
{
pri = &priority_bitmap.pix8(y, x);
- if (!(*pri & 0x02) && state->m_tmpbitmaps->pix16(y, x))
+ if (!(*pri & 0x02) && state->m_tmpbitmaps.pix16(y, x))
*pri |= 0x04;
}
}
@@ -523,17 +523,17 @@ SCREEN_UPDATE( galastrm )
#else
if (layer[0]==0 && layer[1]==3 && layer[2]==2 && layer[3]==1)
{
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[0], 0, 1);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[1], 0, 4);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[2], 0, 4);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[3], 0, 4);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[0], 0, 1);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[1], 0, 4);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[2], 0, 4);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[3], 0, 4);
}
else
{
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[0], 0, 1);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[1], 0, 2);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[2], 0, 4);
- tc0480scp_tilemap_draw(tc0480scp, *state->m_tmpbitmaps, clip, layer[3], 0, 8);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[0], 0, 1);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[1], 0, 2);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[2], 0, 4);
+ tc0480scp_tilemap_draw(tc0480scp, state->m_tmpbitmaps, clip, layer[3], 0, 8);
}
if (layer[0]==3 && layer[1]==0 && layer[2]==1 && layer[3]==2)
@@ -546,18 +546,18 @@ SCREEN_UPDATE( galastrm )
for (x=0; x < priority_bitmap.width(); x++)
{
pri = &priority_bitmap.pix8(y, x);
- if (!(*pri & 0x02) && state->m_tmpbitmaps->pix16(y, x))
+ if (!(*pri & 0x02) && state->m_tmpbitmaps.pix16(y, x))
*pri |= 0x04;
}
}
}
draw_sprites_pre(screen.machine(), 42-X_OFFSET, -571+Y_OFFSET);
- draw_sprites(screen.machine(),*state->m_tmpbitmaps,clip,primasks,1);
+ draw_sprites(screen.machine(),state->m_tmpbitmaps,clip,primasks,1);
- copybitmap_trans(bitmap,*state->m_polybitmap,0,0, 0,0,cliprect,0);
- state->m_polybitmap->fill(0, clip);
- tc0610_rotate_draw(screen.machine(),*state->m_polybitmap,state->m_tmpbitmaps,cliprect);
+ copybitmap_trans(bitmap,state->m_polybitmap,0,0, 0,0,cliprect,0);
+ state->m_polybitmap.fill(0, clip);
+ tc0610_rotate_draw(screen.machine(),state->m_polybitmap,state->m_tmpbitmaps,cliprect);
priority_bitmap.fill(0, cliprect);
draw_sprites(screen.machine(),bitmap,cliprect,primasks,0);
diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c
index dbd04f23a51..1e87f8c9a3d 100644
--- a/src/mame/video/galaxian.c
+++ b/src/mame/video/galaxian.c
@@ -237,13 +237,13 @@ H=B0: 0C,0C,0D,0D,0E,0E,0F,0F 0C,0C,2D,2D,0E,0E,2F,2F
static void state_save_register(running_machine &machine);
static TILE_GET_INFO( bg_get_tile_info );
-static void sprites_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *spritebase);
+static void sprites_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *spritebase);
static void stars_init(running_machine &machine);
static void stars_update_origin(running_machine &machine);
-static void stars_draw_row(galaxian_state *state, bitmap_t &bitmap, int maxx, int y, UINT32 star_offs, UINT8 starmask);
+static void stars_draw_row(galaxian_state *state, bitmap_rgb32 &bitmap, int maxx, int y, UINT32 star_offs, UINT8 starmask);
-static void bullets_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *base);
+static void bullets_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *base);
@@ -452,7 +452,7 @@ static void state_save_register(running_machine &machine)
*
*************************************/
-SCREEN_UPDATE( galaxian )
+SCREEN_UPDATE_RGB32( galaxian )
{
galaxian_state *state = screen.machine().driver_data<galaxian_state>();
/* draw the background layer (including stars) */
@@ -472,9 +472,9 @@ SCREEN_UPDATE( galaxian )
}
-SCREEN_UPDATE( zigzag )
+SCREEN_UPDATE_RGB32( zigzag )
{
- SCREEN_UPDATE_CALL(galaxian);
+ SCREEN_UPDATE32_CALL(galaxian);
/* zigzag has an extra sprite generator instead of bullets (note: ideally, this should be rendered in parallel) */
sprites_draw(screen.machine(), bitmap, cliprect, &screen.machine().generic.spriteram.u8[0x60]);
@@ -561,7 +561,7 @@ WRITE8_HANDLER( galaxian_objram_w )
*
*************************************/
-static void sprites_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *spritebase)
+static void sprites_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *spritebase)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
rectangle clip = cliprect;
@@ -624,7 +624,7 @@ static void sprites_draw(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-static void bullets_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *base)
+static void bullets_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT8 *base)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
int y;
@@ -881,7 +881,7 @@ TIMER_DEVICE_CALLBACK( galaxian_stars_blink_timer )
*
*************************************/
-static void stars_draw_row(galaxian_state *state, bitmap_t &bitmap, int maxx, int y, UINT32 star_offs, UINT8 starmask)
+static void stars_draw_row(galaxian_state *state, bitmap_rgb32 &bitmap, int maxx, int y, UINT32 star_offs, UINT8 starmask)
{
int x;
@@ -939,7 +939,7 @@ static void stars_draw_row(galaxian_state *state, bitmap_t &bitmap, int maxx, in
*
*************************************/
-void galaxian_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void galaxian_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* erase the background to black first */
@@ -963,7 +963,7 @@ void galaxian_draw_background(running_machine &machine, bitmap_t &bitmap, const
}
-static void background_draw_colorsplit(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, rgb_t color, int split, int split_flipped)
+static void background_draw_colorsplit(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, rgb_t color, int split, int split_flipped)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* horizontal bgcolor split */
@@ -994,7 +994,7 @@ static void background_draw_colorsplit(running_machine &machine, bitmap_t &bitma
}
-static void scramble_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int maxx)
+static void scramble_draw_stars(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int maxx)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* update the star origin to the current frame */
@@ -1021,7 +1021,7 @@ static void scramble_draw_stars(running_machine &machine, bitmap_t &bitmap, cons
}
-void scramble_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void scramble_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* blue background - 390 ohm resistor */
@@ -1031,7 +1031,7 @@ void scramble_draw_background(running_machine &machine, bitmap_t &bitmap, const
}
-void anteater_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void anteater_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* blue background, horizontal split as seen on flyer and real cabinet */
@@ -1041,7 +1041,7 @@ void anteater_draw_background(running_machine &machine, bitmap_t &bitmap, const
}
-void jumpbug_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void jumpbug_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* blue background - 390 ohm resistor */
@@ -1052,7 +1052,7 @@ void jumpbug_draw_background(running_machine &machine, bitmap_t &bitmap, const r
}
-void turtles_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void turtles_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/*
@@ -1066,7 +1066,7 @@ void turtles_draw_background(running_machine &machine, bitmap_t &bitmap, const r
}
-void frogger_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void frogger_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
/* color split point verified on real machine */
/* hmmm, according to schematics it is at 128+8; which is right? */
@@ -1093,7 +1093,7 @@ static int flip_and_clip(rectangle &draw, int xstart, int xend, const rectangle
return (draw.min_x <= draw.max_x);
}
-void amidar_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void amidar_draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
const UINT8 *prom = machine.region("user1")->base();
@@ -1133,7 +1133,7 @@ void amidar_draw_background(running_machine &machine, bitmap_t &bitmap, const re
*
*************************************/
-INLINE void galaxian_draw_pixel(bitmap_t &bitmap, const rectangle &cliprect, int y, int x, rgb_t color)
+INLINE void galaxian_draw_pixel(bitmap_rgb32 &bitmap, const rectangle &cliprect, int y, int x, rgb_t color)
{
if (y >= cliprect.min_y && y <= cliprect.max_y)
{
@@ -1153,7 +1153,7 @@ INLINE void galaxian_draw_pixel(bitmap_t &bitmap, const rectangle &cliprect, int
}
-void galaxian_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+void galaxian_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/*
@@ -1170,7 +1170,7 @@ void galaxian_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rect
}
-void mshuttle_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+void mshuttle_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
/* verified by schematics:
* both "W" and "Y" bullets are 4 pixels long
@@ -1199,7 +1199,7 @@ void mshuttle_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rect
}
-void scramble_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+void scramble_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
/*
Scramble only has "shells", which begin displaying when the counter
@@ -1211,7 +1211,7 @@ void scramble_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rect
}
-void theend_draw_bullet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+void theend_draw_bullet(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
galaxian_state *state = machine.driver_data<galaxian_state>();
/* Same as galaxian except blue/green are swapped */
diff --git a/src/mame/video/galaxold.c b/src/mame/video/galaxold.c
index 70cef362468..35e1f0c8f4e 100644
--- a/src/mame/video/galaxold.c
+++ b/src/mame/video/galaxold.c
@@ -33,29 +33,29 @@ static TIMER_CALLBACK( stars_blink_callback );
static TIMER_CALLBACK( stars_scroll_callback );
void galaxold_init_stars(running_machine &machine, int colors_offset);
-static void noop_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
- void galaxold_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void scrambold_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void rescue_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void mariner_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+static void noop_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void galaxold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void scrambold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void rescue_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void mariner_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
static void start_stars_blink_timer(running_machine &machine, double ra, double rb, double c);
static void start_stars_scroll_timer(running_machine &machine);
/* bullets circuit */
-static void galaxold_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-static void scrambold_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-static void darkplnt_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
-static void dambustr_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y);
+static void galaxold_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+static void scrambold_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+static void darkplnt_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+static void dambustr_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y);
/* background circuit */
-static void galaxold_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void scrambold_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void ad2083_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void mariner_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void stratgyx_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void minefld_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void rescue_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
-static void dambustr_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+static void galaxold_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void scrambold_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void ad2083_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void mariner_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void stratgyx_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void minefld_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void rescue_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
+static void dambustr_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -613,7 +613,7 @@ VIDEO_START( pisces )
}
#ifdef UNUSED_FUNCTION
-static void theend_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+static void theend_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
int i;
@@ -675,7 +675,7 @@ VIDEO_START( batman2 )
-static void rockclim_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void rockclim_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
tilemap_draw(bitmap,cliprect,state->m_rockclim_tilemap, 0,0);
@@ -833,7 +833,7 @@ VIDEO_START( dambustr )
state->m_draw_bullets = dambustr_draw_bullets;
/* allocate the temporary bitmap for the background priority */
- state->m_dambustr_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_dambustr_tmpbitmap = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
/* make a copy of the tilemap to emulate background priority */
state->m_dambustr_videoram2 = auto_alloc_array(machine, UINT8, 0x0400);
@@ -1134,7 +1134,7 @@ static void drivfrcg_modify_color(UINT8 *color)
/* bullet drawing functions */
-static void galaxold_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+static void galaxold_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
int i;
@@ -1156,7 +1156,7 @@ static void galaxold_draw_bullets(running_machine &machine, bitmap_t &bitmap, co
}
}
-static void scrambold_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+static void scrambold_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
if (state->m_flipscreen_x) x++;
@@ -1168,7 +1168,7 @@ static void scrambold_draw_bullets(running_machine &machine, bitmap_t &bitmap, c
bitmap.pix16(y, x) = BULLETS_COLOR_BASE;
}
-static void darkplnt_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+static void darkplnt_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
if (state->m_flipscreen_x) x++;
@@ -1179,7 +1179,7 @@ static void darkplnt_draw_bullets(running_machine &machine, bitmap_t &bitmap, co
bitmap.pix16(y, x) = 32 + state->m_darkplnt_bullet_color;
}
-static void dambustr_draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int x, int y)
+static void dambustr_draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y)
{
int i, color;
@@ -1209,13 +1209,13 @@ static void dambustr_draw_bullets(running_machine &machine, bitmap_t &bitmap, co
/* background drawing functions */
-static void galaxold_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void galaxold_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* plain black background */
bitmap.fill(0, cliprect);
}
-static void scrambold_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void scrambold_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
if (state->m_background_enable)
@@ -1224,7 +1224,7 @@ static void scrambold_draw_background(running_machine &machine, bitmap_t &bitmap
bitmap.fill(0, cliprect);
}
-static void ad2083_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void ad2083_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
int color = (state->m_background_blue << 2) | (state->m_background_green << 1) | state->m_background_red;
@@ -1232,7 +1232,7 @@ static void ad2083_draw_background(running_machine &machine, bitmap_t &bitmap, c
bitmap.fill(BACKGROUND_COLOR_BASE + color, cliprect);
}
-static void stratgyx_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stratgyx_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
UINT8 x;
@@ -1269,7 +1269,7 @@ static void stratgyx_draw_background(running_machine &machine, bitmap_t &bitmap,
}
}
-static void minefld_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void minefld_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
if (state->m_background_enable)
@@ -1290,7 +1290,7 @@ static void minefld_draw_background(running_machine &machine, bitmap_t &bitmap,
bitmap.fill(0, cliprect);
}
-static void rescue_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void rescue_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
if (state->m_background_enable)
@@ -1310,7 +1310,7 @@ static void rescue_draw_background(running_machine &machine, bitmap_t &bitmap, c
bitmap.fill(0, cliprect);
}
-static void mariner_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void mariner_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
int base = BACKGROUND_COLOR_BASE;
@@ -1354,7 +1354,7 @@ static void mariner_draw_background(running_machine &machine, bitmap_t &bitmap,
}
}
-static void dambustr_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void dambustr_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
int base = BACKGROUND_COLOR_BASE;
@@ -1374,7 +1374,7 @@ static void dambustr_draw_background(running_machine &machine, bitmap_t &bitmap,
}
-static void dambustr_draw_upper_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void dambustr_draw_upper_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
rectangle clip;
@@ -1474,7 +1474,7 @@ void galaxold_init_stars(running_machine &machine, int colors_offset)
}
}
-static void plot_star(galaxold_state *state, bitmap_t &bitmap, int x, int y, int color, const rectangle &cliprect)
+static void plot_star(galaxold_state *state, bitmap_ind16 &bitmap, int x, int y, int color, const rectangle &cliprect)
{
if (state->m_flipscreen_x)
x = 255 - x;
@@ -1486,11 +1486,11 @@ static void plot_star(galaxold_state *state, bitmap_t &bitmap, int x, int y, int
bitmap.pix16(y, x) = state->m_stars_colors_start + color;
}
-static void noop_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void noop_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
}
-void galaxold_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void galaxold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
struct star *stars = state->m_stars;
@@ -1519,7 +1519,7 @@ void galaxold_draw_stars(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static void scrambold_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void scrambold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
struct star *stars = state->m_stars;
@@ -1565,7 +1565,7 @@ static void scrambold_draw_stars(running_machine &machine, bitmap_t &bitmap, con
}
}
-static void rescue_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void rescue_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
struct star *stars = state->m_stars;
@@ -1613,7 +1613,7 @@ static void rescue_draw_stars(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void mariner_draw_stars(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void mariner_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
struct star *stars = state->m_stars;
@@ -1712,7 +1712,7 @@ static TILE_GET_INFO( rockclim_get_tile_info )
SET_TILE_INFO(2, code, 0, 0);
}
-static void draw_bullets_common(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bullets_common(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galaxold_state *state = machine.driver_data<galaxold_state>();
int offs;
@@ -1732,7 +1732,7 @@ static void draw_bullets_common(running_machine &machine, bitmap_t &bitmap, cons
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, UINT8 *spriteram, size_t spriteram_size)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, UINT8 *spriteram, size_t spriteram_size)
{
const rectangle spritevisiblearea(2*8+1, 32*8-1, 2*8, 30*8-1);
const rectangle spritevisibleareaflipx(0*8, 30*8-2, 2*8, 30*8-1);
@@ -1801,7 +1801,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, UINT8 *spri
}
-SCREEN_UPDATE( galaxold )
+SCREEN_UPDATE_IND16( galaxold )
{
galaxold_state *state = screen.machine().driver_data<galaxold_state>();
@@ -1831,7 +1831,7 @@ SCREEN_UPDATE( galaxold )
}
-SCREEN_UPDATE( dambustr )
+SCREEN_UPDATE_IND16( dambustr )
{
galaxold_state *state = screen.machine().driver_data<galaxold_state>();
int i, j;
diff --git a/src/mame/video/galivan.c b/src/mame/video/galivan.c
index 29340f0d860..565c46a1737 100644
--- a/src/mame/video/galivan.c
+++ b/src/mame/video/galivan.c
@@ -306,7 +306,7 @@ WRITE8_HANDLER( galivan_scrolly_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
galivan_state *state = machine.driver_data<galivan_state>();
const UINT8 *spritepalettebank = machine.region("user1")->base();
@@ -345,7 +345,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( galivan )
+SCREEN_UPDATE_IND16( galivan )
{
galivan_state *state = screen.machine().driver_data<galivan_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_galivan_scrollx[0] + 256 * (state->m_galivan_scrollx[1] & 0x07));
@@ -372,7 +372,7 @@ SCREEN_UPDATE( galivan )
return 0;
}
-SCREEN_UPDATE( ninjemak )
+SCREEN_UPDATE_IND16( ninjemak )
{
galivan_state *state = screen.machine().driver_data<galivan_state>();
diff --git a/src/mame/video/galpani2.c b/src/mame/video/galpani2.c
index 5ba246b24c7..471c78c86b1 100644
--- a/src/mame/video/galpani2.c
+++ b/src/mame/video/galpani2.c
@@ -125,9 +125,9 @@ PALETTE_INIT( galpani2 )
VIDEO_START( galpani2 )
{
galpani2_state *state = machine.driver_data<galpani2_state>();
- state->m_bg15_bitmap = auto_bitmap_alloc(machine, 256*8, 256, BITMAP_FORMAT_INDEXED16);
- state->m_bg8_bitmap[0] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
- state->m_bg8_bitmap[1] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
+ state->m_bg15_bitmap = auto_bitmap_ind16_alloc(machine, 256*8, 256);
+ state->m_bg8_bitmap[0] = auto_bitmap_ind16_alloc(machine, 512, 256);
+ state->m_bg8_bitmap[1] = auto_bitmap_ind16_alloc(machine, 512, 256);
VIDEO_START_CALL(kaneko16_sprites);
}
@@ -141,7 +141,7 @@ VIDEO_START( galpani2 )
***************************************************************************/
-SCREEN_UPDATE( galpani2 )
+SCREEN_UPDATE_IND16( galpani2 )
{
galpani2_state *state = screen.machine().driver_data<galpani2_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/galpanic.c b/src/mame/video/galpanic.c
index e8b0334b306..ceef8b503b6 100644
--- a/src/mame/video/galpanic.c
+++ b/src/mame/video/galpanic.c
@@ -6,7 +6,8 @@
VIDEO_START( galpanic )
{
galpanic_state *state = machine.driver_data<galpanic_state>();
- state->m_sprites_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_sprites_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
PALETTE_INIT( galpanic )
@@ -33,7 +34,7 @@ WRITE16_HANDLER( galpanic_bgvideoram_w )
sy = offset / 256;
sx = offset % 256;
- space->machine().primary_screen->default_bitmap().pix16(sy, sx) = 1024 + (data >> 1);
+ state->m_bitmap.pix16(sy, sx) = 1024 + (data >> 1);
}
WRITE16_HANDLER( galpanic_paletteram_w )
@@ -44,7 +45,7 @@ WRITE16_HANDLER( galpanic_paletteram_w )
}
-static void comad_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void comad_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galpanic_state *state = machine.driver_data<galpanic_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -82,7 +83,7 @@ static void comad_draw_sprites(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void draw_fgbitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_fgbitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
galpanic_state *state = machine.driver_data<galpanic_state>();
int offs;
@@ -99,12 +100,13 @@ static void draw_fgbitmap(running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( galpanic )
+SCREEN_UPDATE_IND16( galpanic )
{
+ galpanic_state *state = screen.machine().driver_data<galpanic_state>();
device_t *pandora = screen.machine().device("pandora");
/* copy the temporary bitmap to the screen */
- copybitmap(bitmap,screen.default_bitmap(),0,0,0,0,cliprect);
+ copybitmap(bitmap,state->m_bitmap,0,0,0,0,cliprect);
draw_fgbitmap(screen.machine(), bitmap, cliprect);
@@ -113,18 +115,18 @@ SCREEN_UPDATE( galpanic )
return 0;
}
-SCREEN_UPDATE( comad )
+SCREEN_UPDATE_IND16( comad )
{
galpanic_state *state = screen.machine().driver_data<galpanic_state>();
/* copy the temporary bitmap to the screen */
- copybitmap(bitmap,screen.default_bitmap(),0,0,0,0,cliprect);
+ copybitmap(bitmap,state->m_bitmap,0,0,0,0,cliprect);
draw_fgbitmap(screen.machine(), bitmap, cliprect);
// if(galpanic_clear_sprites)
{
- state->m_sprites_bitmap->fill(0, cliprect);
+ state->m_sprites_bitmap.fill(0, cliprect);
comad_draw_sprites(screen.machine(),bitmap,cliprect);
}
// else
diff --git a/src/mame/video/galspnbl.c b/src/mame/video/galspnbl.c
index 7e47b22a9c4..7254629b7da 100644
--- a/src/mame/video/galspnbl.c
+++ b/src/mame/video/galspnbl.c
@@ -29,7 +29,7 @@ PALETTE_INIT( galspnbl )
* 4 | xxxxxxxxxxxxxxxx | x position
* 5,6,7| | unused
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
galspnbl_state *state = machine.driver_data<galspnbl_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -84,7 +84,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
galspnbl_state *state = machine.driver_data<galspnbl_state>();
offs_t offs;
@@ -101,7 +101,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
}
-SCREEN_UPDATE( galspnbl )
+SCREEN_UPDATE_IND16( galspnbl )
{
galspnbl_state *state = screen.machine().driver_data<galspnbl_state>();
int offs;
diff --git a/src/mame/video/gameplan.c b/src/mame/video/gameplan.c
index 398202e7cf9..38f15b5e8ab 100644
--- a/src/mame/video/gameplan.c
+++ b/src/mame/video/gameplan.c
@@ -69,7 +69,7 @@ static void leprechn_get_pens( pen_t *pens )
*
*************************************/
-static SCREEN_UPDATE( gameplan )
+static SCREEN_UPDATE_RGB32( gameplan )
{
gameplan_state *state = screen.machine().driver_data<gameplan_state>();
pen_t pens[GAMEPLAN_NUM_PENS];
@@ -89,7 +89,7 @@ static SCREEN_UPDATE( gameplan )
}
-static SCREEN_UPDATE( leprechn )
+static SCREEN_UPDATE_RGB32( leprechn )
{
gameplan_state *state = screen.machine().driver_data<gameplan_state>();
pen_t pens[LEPRECHN_NUM_PENS];
@@ -344,21 +344,20 @@ MACHINE_CONFIG_FRAGMENT( gameplan_video )
MCFG_VIDEO_START(gameplan)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(GAMEPLAN_PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(gameplan)
+ MCFG_SCREEN_UPDATE_STATIC(gameplan)
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( leprechn_video )
MCFG_VIDEO_START(leprechn)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(leprechn)
+ MCFG_SCREEN_UPDATE_STATIC(leprechn)
MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( trvquest_video, gameplan_video )
MCFG_VIDEO_START(trvquest)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(gameplan)
+ MCFG_SCREEN_UPDATE_STATIC(gameplan)
MACHINE_CONFIG_END
diff --git a/src/mame/video/gaplus.c b/src/mame/video/gaplus.c
index 2beed2f46c7..24445de663f 100644
--- a/src/mame/video/gaplus.c
+++ b/src/mame/video/gaplus.c
@@ -225,7 +225,7 @@ WRITE8_HANDLER( gaplus_starfield_control_w )
***************************************************************************/
-static void starfield_render(running_machine &machine, bitmap_t &bitmap)
+static void starfield_render(running_machine &machine, bitmap_ind16 &bitmap)
{
gaplus_state *state = machine.driver_data<gaplus_state>();
struct star *stars = state->m_stars;
@@ -253,7 +253,7 @@ static void starfield_render(running_machine &machine, bitmap_t &bitmap)
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gaplus_state *state = machine.driver_data<gaplus_state>();
UINT8 *spriteram = state->m_spriteram + 0x780;
@@ -307,7 +307,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( gaplus )
+SCREEN_UPDATE_IND16( gaplus )
{
gaplus_state *state = screen.machine().driver_data<gaplus_state>();
/* flip screen control is embedded in RAM */
diff --git a/src/mame/video/gatron.c b/src/mame/video/gatron.c
index 4c7278ed7e3..eb9bdaef037 100644
--- a/src/mame/video/gatron.c
+++ b/src/mame/video/gatron.c
@@ -51,7 +51,7 @@ VIDEO_START( gat )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols, 8, 16, 48, 16);
}
-SCREEN_UPDATE( gat )
+SCREEN_UPDATE_IND16( gat )
{
gatron_state *state = screen.machine().driver_data<gatron_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/gauntlet.c b/src/mame/video/gauntlet.c
index e2182e7a836..bdfa9f02532 100644
--- a/src/mame/video/gauntlet.c
+++ b/src/mame/video/gauntlet.c
@@ -176,11 +176,11 @@ WRITE16_HANDLER( gauntlet_yscroll_w )
*
*************************************/
-SCREEN_UPDATE( gauntlet )
+SCREEN_UPDATE_IND16( gauntlet )
{
gauntlet_state *state = screen.machine().driver_data<gauntlet_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/gberet.c b/src/mame/video/gberet.c
index 63cfaeba864..87cb4c60ce0 100644
--- a/src/mame/video/gberet.c
+++ b/src/mame/video/gberet.c
@@ -131,7 +131,7 @@ VIDEO_START( gberet )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void gberet_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void gberet_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gberet_state *state = machine.driver_data<gberet_state>();
int offs;
@@ -168,7 +168,7 @@ static void gberet_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-SCREEN_UPDATE( gberet )
+SCREEN_UPDATE_IND16( gberet )
{
gberet_state *state = screen.machine().driver_data<gberet_state>();
@@ -192,7 +192,7 @@ WRITE8_HANDLER( gberetb_scroll_w )
tilemap_set_scrollx(state->m_bg_tilemap, offset, scroll + 64 - 8);
}
-static void gberetb_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void gberetb_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gberet_state *state = machine.driver_data<gberet_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -224,7 +224,7 @@ static void gberetb_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( gberetb )
+SCREEN_UPDATE_IND16( gberetb )
{
gberet_state *state = screen.machine().driver_data<gberet_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0);
diff --git a/src/mame/video/gbusters.c b/src/mame/video/gbusters.c
index 422d13129d0..641d6a06bcb 100644
--- a/src/mame/video/gbusters.c
+++ b/src/mame/video/gbusters.c
@@ -47,7 +47,7 @@ VIDEO_START( gbusters )
}
-SCREEN_UPDATE( gbusters )
+SCREEN_UPDATE_IND16( gbusters )
{
gbusters_state *state = screen.machine().driver_data<gbusters_state>();
diff --git a/src/mame/video/gcpinbal.c b/src/mame/video/gcpinbal.c
index a151c68adcf..a080151ee42 100644
--- a/src/mame/video/gcpinbal.c
+++ b/src/mame/video/gcpinbal.c
@@ -169,7 +169,7 @@ WRITE16_HANDLER( gcpinbal_ctrl_word_w )
****************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
gcpinbal_state *state = machine.driver_data<gcpinbal_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -248,7 +248,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( gcpinbal )
+SCREEN_UPDATE_IND16( gcpinbal )
{
gcpinbal_state *state = screen.machine().driver_data<gcpinbal_state>();
int i;
diff --git a/src/mame/video/genesis.c b/src/mame/video/genesis.c
index e89d6b4c6cb..cae8130444e 100644
--- a/src/mame/video/genesis.c
+++ b/src/mame/video/genesis.c
@@ -221,7 +221,7 @@ void system18_vdp_start(running_machine &machine)
******************************************************************************/
-void system18_vdp_update( bitmap_t &bitmap, const rectangle &cliprect )
+void system18_vdp_update( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int y;
diff --git a/src/mame/video/gijoe.c b/src/mame/video/gijoe.c
index 4690ef10e2f..e3605c97eb4 100644
--- a/src/mame/video/gijoe.c
+++ b/src/mame/video/gijoe.c
@@ -75,7 +75,7 @@ VIDEO_START( gijoe )
state->save_item(NAME(state->m_layer_pri));
}
-SCREEN_UPDATE( gijoe )
+SCREEN_UPDATE_IND16( gijoe )
{
gijoe_state *state = screen.machine().driver_data<gijoe_state>();
static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 };
diff --git a/src/mame/video/ginganin.c b/src/mame/video/ginganin.c
index 94586bc31f6..b16781ee1f3 100644
--- a/src/mame/video/ginganin.c
+++ b/src/mame/video/ginganin.c
@@ -209,7 +209,7 @@ Offset: Values: Format:
------------------------------------------------------------------------ */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
ginganin_state *state = machine.driver_data<ginganin_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -245,7 +245,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const recta
}
-SCREEN_UPDATE( ginganin )
+SCREEN_UPDATE_IND16( ginganin )
{
ginganin_state *state = screen.machine().driver_data<ginganin_state>();
int layers_ctrl1 = state->m_layers_ctrl;
diff --git a/src/mame/video/gladiatr.c b/src/mame/video/gladiatr.c
index 4a81f681881..c1c0f31dc9d 100644
--- a/src/mame/video/gladiatr.c
+++ b/src/mame/video/gladiatr.c
@@ -200,7 +200,7 @@ WRITE8_HANDLER( gladiatr_video_registers_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
gladiatr_state *state = machine.driver_data<gladiatr_state>();
int offs;
@@ -251,7 +251,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
-SCREEN_UPDATE( ppking )
+SCREEN_UPDATE_IND16( ppking )
{
gladiatr_state *state = screen.machine().driver_data<gladiatr_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
@@ -263,7 +263,7 @@ SCREEN_UPDATE( ppking )
int sy = cliprect.min_y;
tilemap_get_pixmap( state->m_fg_tilemap );
- bitmap_t &flagsbitmap = tilemap_get_flagsmap( state->m_fg_tilemap );
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap( state->m_fg_tilemap );
while( sy <= cliprect.max_y )
{
@@ -286,7 +286,7 @@ SCREEN_UPDATE( ppking )
return 0;
}
-SCREEN_UPDATE( gladiatr )
+SCREEN_UPDATE_IND16( gladiatr )
{
gladiatr_state *state = screen.machine().driver_data<gladiatr_state>();
if (state->m_video_attributes & 0x20)
diff --git a/src/mame/video/glass.c b/src/mame/video/glass.c
index d3587a45f12..10739c2edd7 100644
--- a/src/mame/video/glass.c
+++ b/src/mame/video/glass.c
@@ -132,7 +132,7 @@ VIDEO_START( glass )
glass_state *state = machine.driver_data<glass_state>();
state->m_pant[0] = tilemap_create(machine, get_tile_info_glass_screen0, tilemap_scan_rows, 16, 16, 32, 32);
state->m_pant[1] = tilemap_create(machine, get_tile_info_glass_screen1, tilemap_scan_rows, 16, 16, 32, 32);
- state->m_screen_bitmap = auto_bitmap_alloc (machine, 320, 200, machine.primary_screen->format());
+ state->m_screen_bitmap = auto_bitmap_ind16_alloc (machine, 320, 200);
state->save_item(NAME(*state->m_screen_bitmap));
@@ -164,7 +164,7 @@ VIDEO_START( glass )
3 | xxxxxxxx xxxxxxxx | sprite code
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
glass_state *state = machine.driver_data<glass_state>();
int i;
@@ -195,7 +195,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
****************************************************************************/
-SCREEN_UPDATE( glass )
+SCREEN_UPDATE_IND16( glass )
{
glass_state *state = screen.machine().driver_data<glass_state>();
/* set scroll registers */
diff --git a/src/mame/video/gng.c b/src/mame/video/gng.c
index 6c3e9f6c036..35eff523052 100644
--- a/src/mame/video/gng.c
+++ b/src/mame/video/gng.c
@@ -108,7 +108,7 @@ WRITE8_HANDLER( gng_flipscreen_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
const gfx_element *gfx = machine.gfx[2];
@@ -139,7 +139,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( gng )
+SCREEN_UPDATE_IND16( gng )
{
gng_state *state = screen.machine().driver_data<gng_state>();
diff --git a/src/mame/video/goal92.c b/src/mame/video/goal92.c
index 00edeeb0864..b08b6295ecd 100644
--- a/src/mame/video/goal92.c
+++ b/src/mame/video/goal92.c
@@ -92,7 +92,7 @@ static TILE_GET_INFO( get_fore_tile_info )
SET_TILE_INFO(region, tile, color, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
goal92_state *state = machine.driver_data<goal92_state>();
UINT16 *buffered_spriteram16 = state->m_buffered_spriteram;
@@ -152,7 +152,7 @@ VIDEO_START( goal92 )
tilemap_set_transparent_pen(state->m_tx_layer, 15);
}
-SCREEN_UPDATE( goal92 )
+SCREEN_UPDATE_IND16( goal92 )
{
goal92_state *state = screen.machine().driver_data<goal92_state>();
tilemap_set_scrollx(state->m_bg_layer, 0, state->m_scrollram[0] + 60);
diff --git a/src/mame/video/goindol.c b/src/mame/video/goindol.c
index a8ea7daf587..ce278e0befd 100644
--- a/src/mame/video/goindol.c
+++ b/src/mame/video/goindol.c
@@ -85,7 +85,7 @@ WRITE8_HANDLER( goindol_bg_videoram_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int gfxbank, UINT8 *sprite_ram )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int gfxbank, UINT8 *sprite_ram )
{
goindol_state *state = machine.driver_data<goindol_state>();
int offs, sx, sy, tile, palette;
@@ -123,7 +123,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( goindol )
+SCREEN_UPDATE_IND16( goindol )
{
goindol_state *state = screen.machine().driver_data<goindol_state>();
tilemap_set_scrollx(state->m_fg_tilemap, 0, *state->m_fg_scrollx);
diff --git a/src/mame/video/goldstar.c b/src/mame/video/goldstar.c
index dcf937baca4..19a32b14cbe 100644
--- a/src/mame/video/goldstar.c
+++ b/src/mame/video/goldstar.c
@@ -388,7 +388,7 @@ WRITE8_HANDLER( cm_background_col_w )
-SCREEN_UPDATE( goldstar )
+SCREEN_UPDATE_IND16( goldstar )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
@@ -439,7 +439,7 @@ SCREEN_UPDATE( goldstar )
}
-SCREEN_UPDATE( bingowng )
+SCREEN_UPDATE_IND16( bingowng )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
@@ -482,7 +482,7 @@ SCREEN_UPDATE( bingowng )
}
-SCREEN_UPDATE( magical )
+SCREEN_UPDATE_IND16( magical )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
@@ -541,7 +541,7 @@ SCREEN_UPDATE( magical )
}
-SCREEN_UPDATE( unkch )
+SCREEN_UPDATE_IND16( unkch )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
@@ -595,7 +595,7 @@ SCREEN_UPDATE( unkch )
return 0;
}
-SCREEN_UPDATE( cmast91 )
+SCREEN_UPDATE_IND16( cmast91 )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
@@ -631,7 +631,7 @@ SCREEN_UPDATE( cmast91 )
return 0;
}
-SCREEN_UPDATE( amcoe1a )
+SCREEN_UPDATE_IND16( amcoe1a )
{
goldstar_state *state = screen.machine().driver_data<goldstar_state>();
int i;
diff --git a/src/mame/video/gomoku.c b/src/mame/video/gomoku.c
index 0b457f5c05a..453881af334 100644
--- a/src/mame/video/gomoku.c
+++ b/src/mame/video/gomoku.c
@@ -117,14 +117,14 @@ VIDEO_START( gomoku )
int bgdata;
int color;
- state->m_bg_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bg_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32, 32);
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
/* make background bitmap */
- state->m_bg_bitmap->fill(0x20);
+ state->m_bg_bitmap.fill(0x20);
// board
for (y = 0; y < 256; y++)
@@ -138,7 +138,7 @@ VIDEO_START( gomoku )
if (bgdata & 0x01) color = 0x21; // board (brown)
if (bgdata & 0x02) color = 0x20; // frame line (while)
- state->m_bg_bitmap->pix16((255 - y - 1) & 0xff, (255 - x + 7) & 0xff) = color;
+ state->m_bg_bitmap.pix16((255 - y - 1) & 0xff, (255 - x + 7) & 0xff) = color;
}
}
}
@@ -150,7 +150,7 @@ VIDEO_START( gomoku )
******************************************************************************/
-SCREEN_UPDATE( gomoku )
+SCREEN_UPDATE_IND16( gomoku )
{
gomoku_state *state = screen.machine().driver_data<gomoku_state>();
UINT8 *GOMOKU_BG_X = screen.machine().region( "user1" )->base();
@@ -166,7 +166,7 @@ SCREEN_UPDATE( gomoku )
if (state->m_bg_dispsw)
{
/* copy bg bitmap */
- copybitmap(bitmap, *state->m_bg_bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_bg_bitmap, 0, 0, 0, 0, cliprect);
// stone
for (y = 0; y < 256; y++)
diff --git a/src/mame/video/gotcha.c b/src/mame/video/gotcha.c
index 1e49c9cd8bf..be527026852 100644
--- a/src/mame/video/gotcha.c
+++ b/src/mame/video/gotcha.c
@@ -105,7 +105,7 @@ WRITE16_HANDLER( gotcha_scroll_w )
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gotcha_state *state = machine.driver_data<gotcha_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -135,7 +135,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( gotcha )
+SCREEN_UPDATE_IND16( gotcha )
{
gotcha_state *state = screen.machine().driver_data<gotcha_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/gottlieb.c b/src/mame/video/gottlieb.c
index 3d70fe1af57..2f63c8b03fb 100644
--- a/src/mame/video/gottlieb.c
+++ b/src/mame/video/gottlieb.c
@@ -6,7 +6,6 @@
#include "emu.h"
#include "includes/gottlieb.h"
-#include "machine/laserdsc.h"
#include "video/resnet.h"
@@ -75,7 +74,6 @@ WRITE8_HANDLER( gottlieb_video_control_w )
WRITE8_HANDLER( gottlieb_laserdisc_video_control_w )
{
gottlieb_state *state = space->machine().driver_data<gottlieb_state>();
- device_t *laserdisc = space->machine().devicelist().first(PIONEER_PR8210);
/* bit 0 works like the other games */
gottlieb_video_control_w(space, offset, data & 0x01);
@@ -85,8 +83,8 @@ WRITE8_HANDLER( gottlieb_laserdisc_video_control_w )
/* bit 2 video enable (0 = black screen) */
/* bit 3 genlock control (1 = show laserdisc image) */
- laserdisc_overlay_enable(laserdisc, (data & 0x04) ? TRUE : FALSE);
- laserdisc_video_enable(laserdisc, ((data & 0x0c) == 0x0c) ? TRUE : FALSE);
+ state->m_laserdisc->overlay_enable((data & 0x04) ? TRUE : FALSE);
+ state->m_laserdisc->video_enable(((data & 0x0c) == 0x0c) ? TRUE : FALSE);
/* configure the palette if the laserdisc is enabled */
state->m_transparent0 = (data >> 3) & 1;
@@ -213,7 +211,7 @@ VIDEO_START( screwloo )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
gottlieb_state *state = machine.driver_data<gottlieb_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -251,7 +249,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-SCREEN_UPDATE( gottlieb )
+SCREEN_UPDATE_IND16( gottlieb )
{
gottlieb_state *state = screen.machine().driver_data<gottlieb_state>();
/* if the background has lower priority, render it first, else clear the screen */
diff --git a/src/mame/video/gotya.c b/src/mame/video/gotya.c
index d9b98aeb3d3..45dedebd1d3 100644
--- a/src/mame/video/gotya.c
+++ b/src/mame/video/gotya.c
@@ -115,7 +115,7 @@ VIDEO_START( gotya )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows_thehand, 8, 8, 64, 32);
}
-static void draw_status_row( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int sx, int col )
+static void draw_status_row( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col )
{
gotya_state *state = machine.driver_data<gotya_state>();
int row;
@@ -143,7 +143,7 @@ static void draw_status_row( running_machine &machine, bitmap_t &bitmap, const r
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gotya_state *state = machine.driver_data<gotya_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -167,7 +167,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_status( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_status( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
draw_status_row(machine, bitmap, cliprect, 0, 1);
draw_status_row(machine, bitmap, cliprect, 1, 0);
@@ -177,7 +177,7 @@ static void draw_status( running_machine &machine, bitmap_t &bitmap, const recta
draw_status_row(machine, bitmap, cliprect, 34, 15);
}
-SCREEN_UPDATE( gotya )
+SCREEN_UPDATE_IND16( gotya )
{
gotya_state *state = screen.machine().driver_data<gotya_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, -(*state->m_scroll + (state->m_scroll_bit_8 * 256)) - 2 * 8);
diff --git a/src/mame/video/gp9001.c b/src/mame/video/gp9001.c
index 1c3d2028cd1..9bd4b26624e 100644
--- a/src/mame/video/gp9001.c
+++ b/src/mame/video/gp9001.c
@@ -758,7 +758,7 @@ WRITE16_DEVICE_HANDLER( pipibibi_bootleg_spriteram16_w )
Sprite Handlers
***************************************************************************/
-void gp9001vdp_device::draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8* primap )
+void gp9001vdp_device::draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8* primap )
{
const gfx_element *gfx = machine.gfx[tile_region+1];
@@ -948,15 +948,15 @@ void gp9001vdp_device::draw_sprites( running_machine &machine, bitmap_t &bitmap,
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-void gp9001vdp_device::gp9001_draw_custom_tilemap(running_machine& machine, bitmap_t &bitmap, tilemap_t* tilemap, const UINT8* priremap, const UINT8* pri_enable )
+void gp9001vdp_device::gp9001_draw_custom_tilemap(running_machine& machine, bitmap_ind16 &bitmap, tilemap_t* tilemap, const UINT8* priremap, const UINT8* pri_enable )
{
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
int y,x;
- bitmap_t &tmb = tilemap_get_pixmap(tilemap);
+ bitmap_ind16 &tmb = tilemap_get_pixmap(tilemap);
UINT16* srcptr;
UINT16* dstptr;
UINT8* dstpriptr;
@@ -1004,7 +1004,7 @@ static const UINT8 gp9001_sprprimap1[16] = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14
static const UINT8 batsugun_prienable0[16]={ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
-void gp9001vdp_device::gp9001_render_vdp(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect)
+void gp9001vdp_device::gp9001_render_vdp(running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (gp9001_gfxrom_is_banked && gp9001_gfxrom_bank_dirty)
{
diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h
index 13218e48f3a..abaa1c8ff33 100644
--- a/src/mame/video/gp9001.h
+++ b/src/mame/video/gp9001.h
@@ -54,14 +54,14 @@ public:
UINT16 gp9001_gfxrom_bank[8]; /* Batrider object bank */
- void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8* primap );
- void gp9001_draw_custom_tilemap(running_machine& machine, bitmap_t &bitmap, tilemap_t* tilemap, const UINT8* priremap, const UINT8* pri_enable );
- void gp9001_render_vdp(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect);
+ void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8* primap );
+ void gp9001_draw_custom_tilemap(running_machine& machine, bitmap_ind16 &bitmap, tilemap_t* tilemap, const UINT8* priremap, const UINT8* pri_enable );
+ void gp9001_render_vdp(running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
void gp9001_screen_eof(void);
void create_tilemaps(int region);
void init_scroll_regs(void);
- bitmap_t *custom_priority_bitmap;
+ bitmap_ind8 *custom_priority_bitmap;
protected:
virtual bool device_validity_check(emu_options &options, const game_driver &driver) const;
diff --git a/src/mame/video/gradius3.c b/src/mame/video/gradius3.c
index 617fb139906..f74d3bdfa8e 100644
--- a/src/mame/video/gradius3.c
+++ b/src/mame/video/gradius3.c
@@ -123,7 +123,7 @@ WRITE16_HANDLER( gradius3_gfxram_w )
***************************************************************************/
-SCREEN_UPDATE( gradius3 )
+SCREEN_UPDATE_IND16( gradius3 )
{
gradius3_state *state = screen.machine().driver_data<gradius3_state>();
diff --git a/src/mame/video/grchamp.c b/src/mame/video/grchamp.c
index 9a32d6ca2e6..a6263cfc0f0 100644
--- a/src/mame/video/grchamp.c
+++ b/src/mame/video/grchamp.c
@@ -107,7 +107,7 @@ VIDEO_START( grchamp )
{
grchamp_state *state = machine.driver_data<grchamp_state>();
- state->m_work_bitmap = auto_bitmap_alloc(machine,32,32,machine.primary_screen->format());
+ state->m_work_bitmap.allocate(32,32);
/* allocate tilemaps for each of the three sections */
state->m_text_tilemap = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows, 8,8, 32,32);
@@ -117,7 +117,7 @@ VIDEO_START( grchamp )
}
#if 0
-static int collision_check(running_machine &machine, grchamp_state *state, bitmap_t &bitmap, int which )
+static int collision_check(running_machine &machine, grchamp_state *state, bitmap_ind16 &bitmap, int which )
{
int bgcolor = machine.pens[0];
int sprite_transp = machine.pens[0x24];
@@ -132,7 +132,7 @@ static int collision_check(running_machine &machine, grchamp_state *state, bitma
{
/* draw the current player sprite into a work bitmap */
drawgfx_opaque( state->m_work_bitmap,
- state->m_work_bitmap->cliprect(),
+ state->m_work_bitmap.cliprect(),
machine.gfx[4],
state->m_cpu0_out[4]&0xf,
1, /* color */
@@ -144,7 +144,7 @@ static int collision_check(running_machine &machine, grchamp_state *state, bitma
{
for( x = 0; x<32; x++ )
{
- pixel = state->m_work_bitmap->pix16(y, x);
+ pixel = state->m_work_bitmap.pix16(y, x);
if( pixel != sprite_transp ){
sx = x+x0;
sy = y+y0;
@@ -168,7 +168,7 @@ static int collision_check(running_machine &machine, grchamp_state *state, bitma
return result?(1<<which):0;
}
-static void draw_fog(grchamp_state *state, bitmap_t &bitmap, const rectangle &cliprect, int fog)
+static void draw_fog(grchamp_state *state, bitmap_ind16 &bitmap, const rectangle &cliprect, int fog)
{
int x,y,offs;
@@ -185,7 +185,7 @@ static void draw_fog(grchamp_state *state, bitmap_t &bitmap, const rectangle &cl
}
}
-static void draw_sprites(running_machine &machine, grchamp_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, grchamp_state *state, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const gfx_element *gfx = machine.gfx[5];
int bank = (state->m_cpu0_out[0] & 0x20) ? 0x40 : 0x00;
@@ -352,7 +352,7 @@ static void draw_objects(running_machine &machine, grchamp_state *state, int y,
}
-SCREEN_UPDATE( grchamp )
+SCREEN_UPDATE_RGB32( grchamp )
{
static const rgb_t objpix_lookup[8] =
{
@@ -370,9 +370,9 @@ SCREEN_UPDATE( grchamp )
const UINT8 *amedata = screen.machine().region("gfx5")->base();
const UINT8 *headdata = screen.machine().region("gfx6")->base();
const UINT8 *pldata = screen.machine().region("gfx7")->base();
- bitmap_t &lpixmap = tilemap_get_pixmap(state->m_left_tilemap);
- bitmap_t &rpixmap = tilemap_get_pixmap(state->m_right_tilemap);
- bitmap_t &cpixmap = tilemap_get_pixmap(state->m_center_tilemap);
+ bitmap_ind16 &lpixmap = tilemap_get_pixmap(state->m_left_tilemap);
+ bitmap_ind16 &rpixmap = tilemap_get_pixmap(state->m_right_tilemap);
+ bitmap_ind16 &cpixmap = tilemap_get_pixmap(state->m_center_tilemap);
int lrxscroll, cxscroll, lyscroll, ryscroll, cyscroll;
int bgcolor = state->m_cpu1_out[3] & 0x10;
int amebase = state->m_cpu0_out[4] >> 4;
@@ -398,7 +398,7 @@ SCREEN_UPDATE( grchamp )
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
/* select either left or right tilemaps based on Y */
- bitmap_t &lrpixmap = (y < 128) ? lpixmap : rpixmap;
+ bitmap_ind16 &lrpixmap = (y < 128) ? lpixmap : rpixmap;
int lryscroll = (y < 128) ? lyscroll : ryscroll;
/* get source/dest pointers */
diff --git a/src/mame/video/gridlee.c b/src/mame/video/gridlee.c
index 308f39dacc1..8af0fa4cbd5 100644
--- a/src/mame/video/gridlee.c
+++ b/src/mame/video/gridlee.c
@@ -132,7 +132,7 @@ WRITE8_HANDLER( gridlee_palette_select_w )
/* all the GRIDLEE_VBEND adjustments are needed because the hardware has a separate counting chain
to address the video memory instead of using the video chain directly */
-SCREEN_UPDATE( gridlee )
+SCREEN_UPDATE_IND16( gridlee )
{
gridlee_state *state = screen.machine().driver_data<gridlee_state>();
const pen_t *pens = &screen.machine().pens[state->m_palettebank_vis * 32];
diff --git a/src/mame/video/groundfx.c b/src/mame/video/groundfx.c
index 2e8cf2bd53e..16a78166cf3 100644
--- a/src/mame/video/groundfx.c
+++ b/src/mame/video/groundfx.c
@@ -63,7 +63,7 @@ Heavy use is made of sprite zooming.
***************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int do_hack,int x_offs,int y_offs)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int do_hack,int x_offs,int y_offs)
{
groundfx_state *state = machine.driver_data<groundfx_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -199,7 +199,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( groundfx )
+SCREEN_UPDATE_IND16( groundfx )
{
groundfx_state *state = screen.machine().driver_data<groundfx_state>();
device_t *tc0100scn = screen.machine().device("tc0100scn");
diff --git a/src/mame/video/gstriker.c b/src/mame/video/gstriker.c
index e31a9155ed0..e1cc9ae53e0 100644
--- a/src/mame/video/gstriker.c
+++ b/src/mame/video/gstriker.c
@@ -84,7 +84,7 @@ static void VS920A_set_gfx_region(gstriker_state *state, int numchip, int gfx_re
state->m_VS920A[numchip].gfx_region = gfx_region;
}
-static void VS920A_draw(gstriker_state *state, int numchip, bitmap_t& screen, const rectangle &cliprect, int priority)
+static void VS920A_draw(gstriker_state *state, int numchip, bitmap_ind16& screen, const rectangle &cliprect, int priority)
{
state->m_VS920A_cur_chip = &state->m_VS920A[numchip];
@@ -238,7 +238,7 @@ static void MB60553_set_gfx_region(gstriker_state *state, int numchip, int gfx_r
}
/* THIS IS STILL WRONG! */
-static void MB60553_draw(running_machine &machine, int numchip, bitmap_t& screen, const rectangle &cliprect, int priority)
+static void MB60553_draw(running_machine &machine, int numchip, bitmap_ind16& screen, const rectangle &cliprect, int priority)
{
gstriker_state *state = machine.driver_data<gstriker_state>();
int line;
@@ -383,7 +383,7 @@ Abstracts the VS9210
*/
-static void CG10103_draw_sprite(running_machine &machine, bitmap_t& screen, const rectangle &cliprect, UINT16* spr, int drawpri)
+static void CG10103_draw_sprite(running_machine &machine, bitmap_ind16& screen, const rectangle &cliprect, UINT16* spr, int drawpri)
{
gstriker_state *state = machine.driver_data<gstriker_state>();
int ypos = spr[0] & 0x1FF;
@@ -460,7 +460,7 @@ static void CG10103_draw_sprite(running_machine &machine, bitmap_t& screen, cons
}
-static void CG10103_draw(running_machine &machine, int numchip, bitmap_t& screen, const rectangle &cliprect, int priority)
+static void CG10103_draw(running_machine &machine, int numchip, bitmap_ind16& screen, const rectangle &cliprect, int priority)
{
gstriker_state *state = machine.driver_data<gstriker_state>();
UINT16* splist;
@@ -533,7 +533,7 @@ WRITE16_HANDLER( gsx_videoram3_w )
#endif
-SCREEN_UPDATE(gstriker)
+SCREEN_UPDATE_IND16(gstriker)
{
gstriker_state *state = screen.machine().driver_data<gstriker_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
diff --git a/src/mame/video/gsword.c b/src/mame/video/gsword.c
index 3763fa3be52..fc370f8bc5a 100644
--- a/src/mame/video/gsword.c
+++ b/src/mame/video/gsword.c
@@ -161,7 +161,7 @@ VIDEO_START( gsword )
8, 8, 32, 64);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
gsword_state *state = machine.driver_data<gsword_state>();
int offs;
@@ -205,7 +205,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( gsword )
+SCREEN_UPDATE_IND16( gsword )
{
gsword_state *state = screen.machine().driver_data<gsword_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/gticlub.c b/src/mame/video/gticlub.c
index 538663d532d..d359c8d4d4f 100644
--- a/src/mame/video/gticlub.c
+++ b/src/mame/video/gticlub.c
@@ -164,8 +164,8 @@ static const int decode_x_zr107[8] = { 0, 16, 1, 17, 2, 18, 3, 19 };
static const int decode_y_zr107[16] = { 0, 8, 32, 40, 4, 12, 36, 44, 64, 72, 96, 104, 68, 76, 100, 108 };
static UINT32 K001005_status = 0;
-static bitmap_t *K001005_bitmap[2];
-static bitmap_t *K001005_zbuffer;
+static bitmap_rgb32 *K001005_bitmap[2];
+static bitmap_ind32 *K001005_zbuffer;
static rectangle K001005_cliprect;
static void render_polygons(running_machine &machine);
@@ -203,12 +203,12 @@ void K001005_init(running_machine &machine)
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- K001005_zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
+ K001005_zbuffer = auto_bitmap_ind32_alloc(machine, width, height);
gfxrom = machine.region("gfx1")->base();
- K001005_bitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
- K001005_bitmap[1] = machine.primary_screen->alloc_compatible_bitmap();
+ K001005_bitmap[0] = auto_bitmap_rgb32_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
+ K001005_bitmap[1] = auto_bitmap_rgb32_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
K001005_texture = auto_alloc_array(machine, UINT8, 0x800000);
@@ -454,7 +454,7 @@ WRITE32_HANDLER( K001005_w )
static void draw_scanline(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)dest;
float z = extent->param[0].start;
float dz = extent->param[0].dpdx;
UINT32 *fb = &destmap->pix32(scanline);
@@ -482,7 +482,7 @@ static void draw_scanline(void *dest, INT32 scanline, const poly_extent *extent,
static void draw_scanline_tex(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)dest;
UINT8 *texrom = gfxrom + (extra->texture_page * 0x40000);
int pal_chip = (extra->texture_palette & 0x8) ? 1 : 0;
int palette_index = (extra->texture_palette & 0x7) * 256;
@@ -934,7 +934,7 @@ static void render_polygons(running_machine &machine)
}
}
-void K001005_draw(bitmap_t &bitmap, const rectangle &cliprect)
+void K001005_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int i, j;
@@ -981,7 +981,7 @@ VIDEO_START( gticlub )
K001005_init(machine);
}
-SCREEN_UPDATE( gticlub )
+SCREEN_UPDATE_RGB32( gticlub )
{
device_t *k001604 = screen.machine().device("k001604_1");
@@ -1049,7 +1049,7 @@ SCREEN_UPDATE( gticlub )
return 0;
}
-SCREEN_UPDATE( hangplt )
+SCREEN_UPDATE_RGB32( hangplt )
{
bitmap.fill(screen.machine().pens[0], cliprect);
diff --git a/src/mame/video/gticlub.h b/src/mame/video/gticlub.h
index 2da4f0973e0..37707d8c206 100644
--- a/src/mame/video/gticlub.h
+++ b/src/mame/video/gticlub.h
@@ -1,6 +1,6 @@
void gticlub_led_setreg(int offset, UINT8 data);
-void K001005_draw(bitmap_t &bitmap, const rectangle &cliprect);
+void K001005_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void K001005_swap_buffers(running_machine &machine);
void K001005_init(running_machine &machine);
void K001005_preprocess_texture_data(UINT8 *rom, int length, int gticlub);
@@ -15,5 +15,5 @@ READ32_HANDLER(K001006_1_r);
WRITE32_HANDLER(K001006_1_w);
VIDEO_START( gticlub );
-SCREEN_UPDATE( gticlub );
-SCREEN_UPDATE( hangplt );
+SCREEN_UPDATE_RGB32( gticlub );
+SCREEN_UPDATE_RGB32( hangplt );
diff --git a/src/mame/video/gumbo.c b/src/mame/video/gumbo.c
index 7ddaf90e6e1..ad8925c7a3a 100644
--- a/src/mame/video/gumbo.c
+++ b/src/mame/video/gumbo.c
@@ -42,7 +42,7 @@ VIDEO_START( gumbo )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0xff);
}
-SCREEN_UPDATE( gumbo )
+SCREEN_UPDATE_IND16( gumbo )
{
gumbo_state *state = screen.machine().driver_data<gumbo_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/gunbustr.c b/src/mame/video/gunbustr.c
index 54829e38e34..ce36de75175 100644
--- a/src/mame/video/gunbustr.c
+++ b/src/mame/video/gunbustr.c
@@ -56,7 +56,7 @@ Heavy use is made of sprite zooming.
********************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
{
gunbustr_state *state = machine.driver_data<gunbustr_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -202,7 +202,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( gunbustr )
+SCREEN_UPDATE_IND16( gunbustr )
{
device_t *tc0480scp = screen.machine().device("tc0480scp");
UINT8 layer[5];
diff --git a/src/mame/video/gundealr.c b/src/mame/video/gundealr.c
index df271621504..bd21d3da09c 100644
--- a/src/mame/video/gundealr.c
+++ b/src/mame/video/gundealr.c
@@ -132,7 +132,7 @@ WRITE8_HANDLER( gundealr_flipscreen_w )
***************************************************************************/
-SCREEN_UPDATE( gundealr )
+SCREEN_UPDATE_IND16( gundealr )
{
gundealr_state *state = screen.machine().driver_data<gundealr_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/gunsmoke.c b/src/mame/video/gunsmoke.c
index 2676df1be65..5f52c1f5a0d 100644
--- a/src/mame/video/gunsmoke.c
+++ b/src/mame/video/gunsmoke.c
@@ -140,7 +140,7 @@ VIDEO_START( gunsmoke )
colortable_configure_tilemap_groups(machine.colortable, state->m_fg_tilemap, machine.gfx[0], 0x4f);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gunsmoke_state *state = machine.driver_data<gunsmoke_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -174,7 +174,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( gunsmoke )
+SCREEN_UPDATE_IND16( gunsmoke )
{
gunsmoke_state *state = screen.machine().driver_data<gunsmoke_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scrollx[0] + 256 * state->m_scrollx[1]);
diff --git a/src/mame/video/gyruss.c b/src/mame/video/gyruss.c
index 901b2e8cd5d..735f8487e8c 100644
--- a/src/mame/video/gyruss.c
+++ b/src/mame/video/gyruss.c
@@ -129,7 +129,7 @@ READ8_HANDLER( gyruss_scanline_r )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, gfx_element **gfx )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx )
{
gyruss_state *state = machine.driver_data<gyruss_state>();
int offs;
@@ -150,7 +150,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( gyruss )
+SCREEN_UPDATE_IND16( gyruss )
{
gyruss_state *state = screen.machine().driver_data<gyruss_state>();
diff --git a/src/mame/video/hanaawas.c b/src/mame/video/hanaawas.c
index 4c410997f55..80f7125b94f 100644
--- a/src/mame/video/hanaawas.c
+++ b/src/mame/video/hanaawas.c
@@ -108,7 +108,7 @@ VIDEO_START( hanaawas )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-SCREEN_UPDATE( hanaawas )
+SCREEN_UPDATE_IND16( hanaawas )
{
hanaawas_state *state = screen.machine().driver_data<hanaawas_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/harddriv.c b/src/mame/video/harddriv.c
index 70cbf415a89..673a8088895 100644
--- a/src/mame/video/harddriv.c
+++ b/src/mame/video/harddriv.c
@@ -423,7 +423,7 @@ static void display_speedups(void)
}
-void harddriv_scanline_driver(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void harddriv_scanline_driver(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
harddriv_state *state = screen.machine().driver_data<harddriv_state>();
UINT8 *vram_base = &state->m_gsp_vram[(params->rowaddr << 12) & state->m_vram_mask];
@@ -439,7 +439,7 @@ void harddriv_scanline_driver(screen_device &screen, bitmap_t &bitmap, int scanl
}
-void harddriv_scanline_multisync(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void harddriv_scanline_multisync(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
harddriv_state *state = screen.machine().driver_data<harddriv_state>();
UINT8 *vram_base = &state->m_gsp_vram[(params->rowaddr << 11) & state->m_vram_mask];
diff --git a/src/mame/video/hcastle.c b/src/mame/video/hcastle.c
index d09816d989d..7754da1e8ba 100644
--- a/src/mame/video/hcastle.c
+++ b/src/mame/video/hcastle.c
@@ -210,7 +210,7 @@ WRITE8_HANDLER( hcastle_pf2_control_w )
/*****************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *sbank, int bank )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *sbank, int bank )
{
hcastle_state *state = machine.driver_data<hcastle_state>();
device_t *k007121 = bank ? state->m_k007121_2 : state->m_k007121_1;
@@ -222,7 +222,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/*****************************************************************************/
-SCREEN_UPDATE( hcastle )
+SCREEN_UPDATE_IND16( hcastle )
{
hcastle_state *state = screen.machine().driver_data<hcastle_state>();
diff --git a/src/mame/video/hexion.c b/src/mame/video/hexion.c
index 168d9008406..bce2f9604d9 100644
--- a/src/mame/video/hexion.c
+++ b/src/mame/video/hexion.c
@@ -165,7 +165,7 @@ WRITE8_HANDLER( hexion_gfxrom_select_w )
***************************************************************************/
-SCREEN_UPDATE( hexion )
+SCREEN_UPDATE_IND16( hexion )
{
hexion_state *state = screen.machine().driver_data<hexion_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap[1],0,0);
diff --git a/src/mame/video/higemaru.c b/src/mame/video/higemaru.c
index 101dfaf5f22..0ad63a1ff49 100644
--- a/src/mame/video/higemaru.c
+++ b/src/mame/video/higemaru.c
@@ -106,7 +106,7 @@ VIDEO_START( higemaru )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
higemaru_state *state = machine.driver_data<higemaru_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -145,7 +145,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( higemaru )
+SCREEN_UPDATE_IND16( higemaru )
{
higemaru_state *state = screen.machine().driver_data<higemaru_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/himesiki.c b/src/mame/video/himesiki.c
index 27d0c4d6c48..5d57038416a 100644
--- a/src/mame/video/himesiki.c
+++ b/src/mame/video/himesiki.c
@@ -50,7 +50,7 @@ WRITE8_HANDLER( himesiki_flip_w )
logerror("p08_w %02x\n",data);
}
-static void himesiki_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void himesiki_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
himesiki_state *state = machine.driver_data<himesiki_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -117,7 +117,7 @@ static void himesiki_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-SCREEN_UPDATE( himesiki )
+SCREEN_UPDATE_IND16( himesiki )
{
himesiki_state *state = screen.machine().driver_data<himesiki_state>();
int x = -(state->m_scrollx[0] << 8 | state->m_scrollx[1]) & 0x1ff;
diff --git a/src/mame/video/hnayayoi.c b/src/mame/video/hnayayoi.c
index abc8e491af2..4ba19658456 100644
--- a/src/mame/video/hnayayoi.c
+++ b/src/mame/video/hnayayoi.c
@@ -227,7 +227,7 @@ WRITE8_HANDLER( hnayayoi_palbank_w )
}
-static void draw_layer_interleaved( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int left_pixmap, int right_pixmap, int palbase, int transp )
+static void draw_layer_interleaved( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int left_pixmap, int right_pixmap, int palbase, int transp )
{
hnayayoi_state *state = machine.driver_data<hnayayoi_state>();
int county, countx, pen;
@@ -263,7 +263,7 @@ static void draw_layer_interleaved( running_machine &machine, bitmap_t &bitmap,
}
-SCREEN_UPDATE( hnayayoi )
+SCREEN_UPDATE_IND16( hnayayoi )
{
hnayayoi_state *state = screen.machine().driver_data<hnayayoi_state>();
int col0 = (state->m_palbank >> 0) & 0x0f;
diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c
index 656c902efa7..cf88a81ecd5 100644
--- a/src/mame/video/hng64.c
+++ b/src/mame/video/hng64.c
@@ -92,9 +92,9 @@ do \
while (0) \
-static void pdrawgfx_transpen_additive(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+static void pdrawgfx_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- bitmap_t &priority, UINT32 pmask, UINT32 transpen)
+ bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen)
{
const pen_t *paldata;
@@ -125,9 +125,9 @@ static void pdrawgfx_transpen_additive(bitmap_t &dest, const rectangle &cliprect
}
-static void pdrawgfxzoom_transpen_additive(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+static void pdrawgfxzoom_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
- UINT32 scalex, UINT32 scaley, bitmap_t &priority, UINT32 pmask,
+ UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 transpen)
{
const pen_t *paldata;
@@ -207,7 +207,7 @@ static void pdrawgfxzoom_transpen_additive(bitmap_t &dest, const rectangle &clip
* 0x0e0 in Samurai Shodown/Xrally games, 0x1c0 in all the others, zooming factor?
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
hng64_state *state = machine.driver_data<hng64_state>();
const gfx_element *gfx;
@@ -431,7 +431,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*/
/* this is broken for the 'How to Play' screen in Buriki after attract, disabled for now */
-static void transition_control(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void transition_control(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
hng64_state *state = machine.driver_data<hng64_state>();
UINT32 *hng64_tcram = state->m_tcram;
@@ -694,7 +694,7 @@ typedef enum
typedef struct _blit_parameters blit_parameters;
struct _blit_parameters
{
- bitmap_t * bitmap;
+ bitmap_rgb32 * bitmap;
rectangle cliprect;
UINT32 tilemap_priority_code;
UINT8 mask;
@@ -705,7 +705,7 @@ struct _blit_parameters
-static void hng64_configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_t &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask, hng64trans_t drawformat)
+static void hng64_configure_blit_parameters(blit_parameters *blit, tilemap_t *tmap, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask, hng64trans_t drawformat)
{
/* start with nothing */
memset(blit, 0, sizeof(*blit));
@@ -785,10 +785,10 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound)
{
const pen_t *clut = &machine.pens[blit->tilemap_priority_code >> 16];
- bitmap_t &priority_bitmap = machine.priority_bitmap;
- bitmap_t &destbitmap = *blit->bitmap;
- bitmap_t &srcbitmap = tilemap_get_pixmap(tmap);
- bitmap_t &flagsmap = tilemap_get_flagsmap(tmap);
+ bitmap_ind8 &priority_bitmap = machine.priority_bitmap;
+ bitmap_rgb32 &destbitmap = *blit->bitmap;
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tmap);
+ bitmap_ind8 &flagsmap = tilemap_get_flagsmap(tmap);
const int xmask = srcbitmap.width()-1;
const int ymask = srcbitmap.height()-1;
const int widthshifted = srcbitmap.width() << 16;
@@ -804,11 +804,10 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
int sy;
int ex;
int ey;
- void *dest;
+ UINT32 *dest;
UINT8 *pri;
const UINT16 *src;
const UINT8 *maskptr;
- int destadvance = destbitmap.bpp() / 8;
/* pre-advance based on the cliprect */
startx += blit->cliprect.min_x * incxx + blit->cliprect.min_y * incyx;
@@ -849,7 +848,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
pri = &priority_bitmap.pix8(sy, sx);
src = &srcbitmap.pix16(cy);
maskptr = &flagsmap.pix8(cy);
- dest = &destbitmap.pix8(sy * destadvance, sx * destadvance);
+ dest = &destbitmap.pix32(sy, sx);
/* loop over columns */
while (x <= ex && cx < widthshifted)
@@ -864,7 +863,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
/* advance in X */
cx += incxx;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
}
@@ -887,7 +886,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
cy = starty;
/* get dest and priority pointers */
- dest = &destbitmap.pix8(sy * destadvance, sx * destadvance);
+ dest = &destbitmap.pix32(sy, sx);
pri = &priority_bitmap.pix8(sy, sx);
/* loop over columns */
@@ -904,7 +903,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
cx += incxx;
cy += incxy;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
@@ -927,7 +926,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
cy = starty;
/* get dest and priority pointers */
- dest = &destbitmap.pix8(sy * destadvance, sx * destadvance);
+ dest = &destbitmap.pix32(sy, sx);
pri = &priority_bitmap.pix8(sy, sx);
/* loop over columns */
@@ -945,7 +944,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
cx += incxx;
cy += incxy;
x++;
- dest = (UINT8 *)dest + destadvance;
+ dest++;
pri++;
}
@@ -959,7 +958,7 @@ static void hng64_tilemap_draw_roz_core(running_machine& machine, tilemap_t *tma
-static void hng64_tilemap_draw_roz_primask(running_machine& machine, bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap,
+static void hng64_tilemap_draw_roz_primask(running_machine& machine, bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask, hng64trans_t drawformat)
{
@@ -987,7 +986,7 @@ g_profiler.stop();
}
-INLINE void hng64_tilemap_draw_roz(running_machine& machine, bitmap_t &dest, const rectangle &cliprect, tilemap_t *tmap,
+INLINE void hng64_tilemap_draw_roz(running_machine& machine, bitmap_rgb32 &dest, const rectangle &cliprect, tilemap_t *tmap,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
int wraparound, UINT32 flags, UINT8 priority, hng64trans_t drawformat)
{
@@ -996,7 +995,7 @@ INLINE void hng64_tilemap_draw_roz(running_machine& machine, bitmap_t &dest, con
-static void hng64_drawtilemap(running_machine& machine, bitmap_t &bitmap, const rectangle &cliprect, int tm )
+static void hng64_drawtilemap(running_machine& machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int tm )
{
hng64_state *state = machine.driver_data<hng64_state>();
UINT32 *hng64_videoregs = state->m_videoregs;
@@ -1231,7 +1230,7 @@ static void hng64_drawtilemap(running_machine& machine, bitmap_t &bitmap, const
/* manual copy = slooow */
if (MAKE_MAME_REEEEAAALLLL_SLOW)
{
- bitmap_t &bm = tilemap_get_pixmap(tilemap);
+ bitmap_ind16 &bm = tilemap_get_pixmap(tilemap);
int bmheight = bm.height();
int bmwidth = bm.width();
const pen_t *paldata = machine.pens;
@@ -1329,7 +1328,7 @@ static void hng64_drawtilemap(running_machine& machine, bitmap_t &bitmap, const
/* manual copy = slooow */
if (MAKE_MAME_REEEEAAALLLL_SLOW)
{
- bitmap_t &bm = tilemap_get_pixmap(tilemap);
+ bitmap_ind16 &bm = tilemap_get_pixmap(tilemap);
int bmheight = bm.height();
int bmwidth = bm.width();
const pen_t *paldata = machine.pens;
@@ -1437,7 +1436,7 @@ static void hng64_drawtilemap(running_machine& machine, bitmap_t &bitmap, const
#define IMPORTANT_DIRTY_TILEFLAG_MASK (0x0600)
-SCREEN_UPDATE( hng64 )
+SCREEN_UPDATE_RGB32( hng64 )
{
hng64_state *state = screen.machine().driver_data<hng64_state>();
UINT32 *hng64_videoregs = state->m_videoregs;
diff --git a/src/mame/video/holeland.c b/src/mame/video/holeland.c
index 8afb4010755..ffc7baa5f80 100644
--- a/src/mame/video/holeland.c
+++ b/src/mame/video/holeland.c
@@ -109,7 +109,7 @@ WRITE8_HANDLER( holeland_flipscreen_w )
}
-static void holeland_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void holeland_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
holeland_state *state = machine.driver_data<holeland_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -149,7 +149,7 @@ static void holeland_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void crzrally_draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void crzrally_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
holeland_state *state = machine.driver_data<holeland_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -188,7 +188,7 @@ static void crzrally_draw_sprites( running_machine &machine, bitmap_t &bitmap,co
}
}
-SCREEN_UPDATE( holeland )
+SCREEN_UPDATE_IND16( holeland )
{
holeland_state *state = screen.machine().driver_data<holeland_state>();
/*tilemap_mark_all_tiles_dirty(state->m_bg_tilemap); */
@@ -198,7 +198,7 @@ SCREEN_UPDATE( holeland )
return 0;
}
-SCREEN_UPDATE( crzrally )
+SCREEN_UPDATE_IND16( crzrally )
{
holeland_state *state = screen.machine().driver_data<holeland_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/homedata.c b/src/mame/video/homedata.c
index e589a4ed005..8be2aa04101 100644
--- a/src/mame/video/homedata.c
+++ b/src/mame/video/homedata.c
@@ -837,7 +837,7 @@ WRITE8_HANDLER( pteacher_blitter_start_w )
***************************************************************************/
-SCREEN_UPDATE( mrokumei )
+SCREEN_UPDATE_IND16( mrokumei )
{
homedata_state *state = screen.machine().driver_data<homedata_state>();
int flags,width;
@@ -882,7 +882,7 @@ SCREEN_UPDATE( mrokumei )
}
#ifdef UNUSED_FUNCTION
-SCREEN_UPDATE( reikaids )
+SCREEN_UPDATE_IND16( reikaids )
{
homedata_state *state = screen.machine().driver_data<homedata_state>();
int flags;
@@ -917,7 +917,7 @@ SCREEN_UPDATE( reikaids )
}
#endif
-SCREEN_UPDATE( reikaids )
+SCREEN_UPDATE_IND16( reikaids )
{
homedata_state *state = screen.machine().driver_data<homedata_state>();
int flags;
@@ -964,7 +964,7 @@ SCREEN_UPDATE( reikaids )
}
-SCREEN_UPDATE( pteacher )
+SCREEN_UPDATE_IND16( pteacher )
{
homedata_state *state = screen.machine().driver_data<homedata_state>();
int flags, scroll_low, scroll_high;
@@ -1043,7 +1043,7 @@ SCREEN_UPDATE( pteacher )
return 0;
}
-SCREEN_UPDATE( mirderby )
+SCREEN_UPDATE_IND16( mirderby )
{
return 0;
}
diff --git a/src/mame/video/homerun.c b/src/mame/video/homerun.c
index f6dc54a1603..5841db72817 100644
--- a/src/mame/video/homerun.c
+++ b/src/mame/video/homerun.c
@@ -59,7 +59,7 @@ VIDEO_START( homerun )
state->m_tilemap = tilemap_create(machine, get_homerun_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
homerun_state *state = machine.driver_data<homerun_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -82,7 +82,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE(homerun)
+SCREEN_UPDATE_IND16(homerun)
{
homerun_state *state = screen.machine().driver_data<homerun_state>();
rectangle myclip = cliprect;
diff --git a/src/mame/video/hyhoo.c b/src/mame/video/hyhoo.c
index 5d73daf3357..f4a4f387202 100644
--- a/src/mame/video/hyhoo.c
+++ b/src/mame/video/hyhoo.c
@@ -148,8 +148,8 @@ static void hyhoo_gfxdraw(running_machine &machine)
pen = MAKE_RGB(pal6bit(r), pal5bit(g), pal5bit(b));
- state->m_tmpbitmap->pix32(dy, dx1) = state->m_tmpbitmap->pix32(dy, dx1) | pen;
- state->m_tmpbitmap->pix32(dy, dx2) = state->m_tmpbitmap->pix32(dy, dx2) | pen;
+ state->m_tmpbitmap.pix32(dy, dx1) = state->m_tmpbitmap.pix32(dy, dx1) | pen;
+ state->m_tmpbitmap.pix32(dy, dx2) = state->m_tmpbitmap.pix32(dy, dx2) | pen;
}
else
{
@@ -164,8 +164,8 @@ static void hyhoo_gfxdraw(running_machine &machine)
pen = MAKE_RGB(pal6bit(r << 3), pal5bit(g << 2), pal5bit(b << 3));
- state->m_tmpbitmap->pix32(dy, dx1) = pen;
- state->m_tmpbitmap->pix32(dy, dx2) = pen;
+ state->m_tmpbitmap.pix32(dy, dx1) = pen;
+ state->m_tmpbitmap.pix32(dy, dx2) = pen;
}
}
}
@@ -197,7 +197,7 @@ static void hyhoo_gfxdraw(running_machine &machine)
pen = MAKE_RGB(pal6bit(r << 3), pal5bit(g << 2), pal5bit(b << 3));
- state->m_tmpbitmap->pix32(dy, dx1) = pen;
+ state->m_tmpbitmap.pix32(dy, dx1) = pen;
}
if (state->m_clut[color2])
@@ -211,7 +211,7 @@ static void hyhoo_gfxdraw(running_machine &machine)
pen = MAKE_RGB(pal6bit(r << 3), pal5bit(g << 2), pal5bit(b << 3));
- state->m_tmpbitmap->pix32(dy, dx2) = pen;
+ state->m_tmpbitmap.pix32(dy, dx2) = pen;
}
}
@@ -227,15 +227,15 @@ static void hyhoo_gfxdraw(running_machine &machine)
VIDEO_START( hyhoo )
{
hyhoo_state *state = machine.driver_data<hyhoo_state>();
- state->m_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
-SCREEN_UPDATE( hyhoo )
+SCREEN_UPDATE_RGB32( hyhoo )
{
hyhoo_state *state = screen.machine().driver_data<hyhoo_state>();
if (state->m_dispflag)
- copybitmap(bitmap, *state->m_tmpbitmap, state->m_flipscreen, state->m_flipscreen, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_tmpbitmap, state->m_flipscreen, state->m_flipscreen, 0, 0, cliprect);
else
bitmap.fill(RGB_BLACK, cliprect);
diff --git a/src/mame/video/hyperspt.c b/src/mame/video/hyperspt.c
index af1cadf0437..a1bde6540d6 100644
--- a/src/mame/video/hyperspt.c
+++ b/src/mame/video/hyperspt.c
@@ -130,7 +130,7 @@ VIDEO_START( hyperspt )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
hyperspt_state *state = machine.driver_data<hyperspt_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -174,7 +174,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( hyperspt )
+SCREEN_UPDATE_IND16( hyperspt )
{
hyperspt_state *state = screen.machine().driver_data<hyperspt_state>();
int row;
diff --git a/src/mame/video/hyprduel.c b/src/mame/video/hyprduel.c
index 597c3727a2e..34c4161b347 100644
--- a/src/mame/video/hyprduel.c
+++ b/src/mame/video/hyprduel.c
@@ -459,7 +459,7 @@ VIDEO_START( magerror_14220 )
/* Draw sprites */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
hyprduel_state *state = machine.driver_data<hyprduel_state>();
UINT8 *base_gfx = machine.region("gfx1")->base();
@@ -634,7 +634,7 @@ WRITE16_HANDLER( hyprduel_scrollreg_init_w )
}
-static void draw_layers( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri, int layers_ctrl )
+static void draw_layers( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int layers_ctrl )
{
hyprduel_state *state = machine.driver_data<hyprduel_state>();
UINT16 layers_pri = state->m_videoregs[0x10/2];
@@ -671,7 +671,7 @@ static void dirty_tiles( running_machine &machine, int layer, UINT16 *vram )
}
-SCREEN_UPDATE( hyprduel )
+SCREEN_UPDATE_IND16( hyprduel )
{
hyprduel_state *state = screen.machine().driver_data<hyprduel_state>();
int i, pri, layers_ctrl = -1;
diff --git a/src/mame/video/ikki.c b/src/mame/video/ikki.c
index f513d4959c6..122ee340635 100644
--- a/src/mame/video/ikki.c
+++ b/src/mame/video/ikki.c
@@ -62,14 +62,14 @@ WRITE8_HANDLER( ikki_scrn_ctrl_w )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ikki_state *state = machine.driver_data<ikki_state>();
UINT8 *spriteram = state->m_spriteram;
int y;
offs_t offs;
- state->m_sprite_bitmap->fill(state->m_punch_through_pen, cliprect);
+ state->m_sprite_bitmap.fill(state->m_punch_through_pen, cliprect);
for (offs = 0; offs < state->m_spriteram_size; offs += 4)
{
@@ -93,7 +93,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
if (y > 240)
y = y - 256;
- drawgfx_transmask(*state->m_sprite_bitmap,cliprect, machine.gfx[1],
+ drawgfx_transmask(state->m_sprite_bitmap,cliprect, machine.gfx[1],
code, color,
state->m_flipscreen,state->m_flipscreen,
x,y,
@@ -107,7 +107,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
{
- UINT16 pen = state->m_sprite_bitmap->pix16(y, x);
+ UINT16 pen = state->m_sprite_bitmap.pix16(y, x);
if (colortable_entry_get_value(machine.colortable, pen) != 0x100)
bitmap.pix16(y, x) = pen;
@@ -119,12 +119,12 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
VIDEO_START( ikki )
{
ikki_state *state = machine.driver_data<ikki_state>();
- state->m_sprite_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->save_item(NAME(*state->m_sprite_bitmap));
+ state->m_sprite_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->save_item(NAME(state->m_sprite_bitmap));
}
-SCREEN_UPDATE( ikki )
+SCREEN_UPDATE_IND16( ikki )
{
ikki_state *state = screen.machine().driver_data<ikki_state>();
offs_t offs;
diff --git a/src/mame/video/inufuku.c b/src/mame/video/inufuku.c
index 850c3302c8d..e57d852c935 100644
--- a/src/mame/video/inufuku.c
+++ b/src/mame/video/inufuku.c
@@ -55,7 +55,7 @@ WRITE16_HANDLER( inufuku_scrollreg_w )
******************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
inufuku_state *state = machine.driver_data<inufuku_state>();
int offs;
@@ -234,7 +234,7 @@ VIDEO_START( inufuku )
******************************************************************************/
-SCREEN_UPDATE( inufuku )
+SCREEN_UPDATE_IND16( inufuku )
{
inufuku_state *state = screen.machine().driver_data<inufuku_state>();
int i;
diff --git a/src/mame/video/iqblock.c b/src/mame/video/iqblock.c
index cb02bc2a843..0df13d2f922 100644
--- a/src/mame/video/iqblock.c
+++ b/src/mame/video/iqblock.c
@@ -90,7 +90,7 @@ WRITE8_HANDLER( iqblock_fgscroll_w )
***************************************************************************/
-SCREEN_UPDATE( iqblock )
+SCREEN_UPDATE_IND16( iqblock )
{
iqblock_state *state = screen.machine().driver_data<iqblock_state>();
if (!state->m_videoenable) return 0;
diff --git a/src/mame/video/irobot.c b/src/mame/video/irobot.c
index 72afe376601..69184db4ba5 100644
--- a/src/mame/video/irobot.c
+++ b/src/mame/video/irobot.c
@@ -346,7 +346,7 @@ void irobot_run_video(running_machine &machine)
-SCREEN_UPDATE( irobot )
+SCREEN_UPDATE_IND16( irobot )
{
irobot_state *state = screen.machine().driver_data<irobot_state>();
UINT8 *videoram = state->m_videoram;
diff --git a/src/mame/video/ironhors.c b/src/mame/video/ironhors.c
index 670bf5baac0..d954f309933 100644
--- a/src/mame/video/ironhors.c
+++ b/src/mame/video/ironhors.c
@@ -155,7 +155,7 @@ VIDEO_START( ironhors )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ironhors_state *state = machine.driver_data<ironhors_state>();
int offs;
@@ -239,7 +239,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( ironhors )
+SCREEN_UPDATE_IND16( ironhors )
{
ironhors_state *state = screen.machine().driver_data<ironhors_state>();
int row;
@@ -271,7 +271,7 @@ VIDEO_START( farwest )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void farwest_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void farwest_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ironhors_state *state = machine.driver_data<ironhors_state>();
int offs;
@@ -352,7 +352,7 @@ static void farwest_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( farwest)
+SCREEN_UPDATE_IND16( farwest)
{
ironhors_state *state = screen.machine().driver_data<ironhors_state>();
int row;
diff --git a/src/mame/video/itech32.c b/src/mame/video/itech32.c
index 6dbeb121005..230d39e3c30 100644
--- a/src/mame/video/itech32.c
+++ b/src/mame/video/itech32.c
@@ -1430,7 +1430,7 @@ READ32_HANDLER( itech020_video_r )
*
*************************************/
-SCREEN_UPDATE( itech32 )
+SCREEN_UPDATE_IND16( itech32 )
{
itech32_state *state = screen.machine().driver_data<itech32_state>();
int y;
diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c
index 83f0467e215..9f872a01e67 100644
--- a/src/mame/video/itech8.c
+++ b/src/mame/video/itech8.c
@@ -608,7 +608,7 @@ TIMER_DEVICE_CALLBACK( grmatch_palette_update )
*
*************************************/
-SCREEN_UPDATE( itech8_2layer )
+SCREEN_UPDATE_RGB32( itech8_2layer )
{
itech8_state *state = screen.machine().driver_data<itech8_state>();
struct tms34061_display &tms_state = state->m_tms_state;
@@ -646,7 +646,7 @@ SCREEN_UPDATE( itech8_2layer )
}
-SCREEN_UPDATE( itech8_grmatch )
+SCREEN_UPDATE_RGB32( itech8_grmatch )
{
itech8_state *state = screen.machine().driver_data<itech8_state>();
struct tms34061_display &tms_state = state->m_tms_state;
@@ -695,7 +695,7 @@ SCREEN_UPDATE( itech8_grmatch )
}
-SCREEN_UPDATE( itech8_2page )
+SCREEN_UPDATE_RGB32( itech8_2page )
{
itech8_state *state = screen.machine().driver_data<itech8_state>();
struct tms34061_display &tms_state = state->m_tms_state;
@@ -728,7 +728,7 @@ SCREEN_UPDATE( itech8_2page )
}
-SCREEN_UPDATE( itech8_2page_large )
+SCREEN_UPDATE_RGB32( itech8_2page_large )
{
itech8_state *state = screen.machine().driver_data<itech8_state>();
struct tms34061_display &tms_state = state->m_tms_state;
diff --git a/src/mame/video/jack.c b/src/mame/video/jack.c
index 88ca80622db..0d79c31d06a 100644
--- a/src/mame/video/jack.c
+++ b/src/mame/video/jack.c
@@ -64,7 +64,7 @@ VIDEO_START( jack )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols_flipy, 8, 8, 32, 32);
}
-static void jack_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void jack_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
jack_state *state = machine.driver_data<jack_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -97,7 +97,7 @@ static void jack_draw_sprites( running_machine &machine, bitmap_t &bitmap, const
}
}
-SCREEN_UPDATE( jack )
+SCREEN_UPDATE_IND16( jack )
{
jack_state *state = screen.machine().driver_data<jack_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -149,7 +149,7 @@ VIDEO_START( joinem )
state->m_bg_tilemap = tilemap_create(machine, joinem_get_bg_tile_info, tilemap_scan_cols_flipy, 8, 8, 32, 32);
}
-static void joinem_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void joinem_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
jack_state *state = machine.driver_data<jack_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -182,7 +182,7 @@ static void joinem_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-SCREEN_UPDATE( joinem )
+SCREEN_UPDATE_IND16( joinem )
{
jack_state *state = screen.machine().driver_data<jack_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/jackal.c b/src/mame/video/jackal.c
index e77559403fe..4670b3dd4b5 100644
--- a/src/mame/video/jackal.c
+++ b/src/mame/video/jackal.c
@@ -79,7 +79,7 @@ VIDEO_START( jackal )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
jackal_state *state = machine.driver_data<jackal_state>();
UINT8 *RAM = machine.region("master")->base();
@@ -117,7 +117,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
#define DRAW_SPRITE(bank, code, sx, sy) drawgfx_transpen(bitmap, cliprect, machine.gfx[bank], code, color, flipx, flipy, sx, sy, 0);
-static void draw_sprites_region( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *sram, int length, int bank )
+static void draw_sprites_region( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *sram, int length, int bank )
{
int offs;
@@ -201,7 +201,7 @@ static void draw_sprites_region( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
jackal_state *state = machine.driver_data<jackal_state>();
UINT8 *RAM = machine.region("master")->base();
@@ -222,7 +222,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
draw_sprites_region(machine, bitmap, cliprect, sr, 0x500, 1);
}
-SCREEN_UPDATE( jackal )
+SCREEN_UPDATE_IND16( jackal )
{
set_pens(screen.machine());
draw_background(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/jaguar.c b/src/mame/video/jaguar.c
index 753259bf3a8..baeeb5d2854 100644
--- a/src/mame/video/jaguar.c
+++ b/src/mame/video/jaguar.c
@@ -196,7 +196,7 @@ static UINT16 gpu_regs[GPU_REGS];
static emu_timer *object_timer;
static UINT8 cpu_irq_state;
-static bitmap_t *screen_bitmap;
+static bitmap_rgb32 *screen_bitmap;
static pen_t *pen_table;
static int pixel_clock;
@@ -895,7 +895,7 @@ VIDEO_START( cojag )
object_timer = machine.scheduler().timer_alloc(FUNC(cojag_scanline_update));
adjust_object_timer(machine, 0);
- screen_bitmap = auto_bitmap_alloc(machine, 760, 512, BITMAP_FORMAT_RGB32);
+ screen_bitmap = auto_bitmap_rgb32_alloc(machine, 760, 512);
jagobj_init(machine);
@@ -922,7 +922,7 @@ VIDEO_START( jaguar )
*
*************************************/
-SCREEN_UPDATE( cojag )
+SCREEN_UPDATE_RGB32( cojag )
{
/* if not enabled, just blank */
if (!(gpu_regs[VMODE] & 1))
diff --git a/src/mame/video/jailbrek.c b/src/mame/video/jailbrek.c
index 77a86e2cf0f..6e1723109d9 100644
--- a/src/mame/video/jailbrek.c
+++ b/src/mame/video/jailbrek.c
@@ -65,7 +65,7 @@ VIDEO_START( jailbrek )
tilemap_set_scrolldx(state->m_bg_tilemap, 0, 396 - 256);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
jailbrek_state *state = machine.driver_data<jailbrek_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -95,7 +95,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( jailbrek )
+SCREEN_UPDATE_IND16( jailbrek )
{
jailbrek_state *state = screen.machine().driver_data<jailbrek_state>();
int i;
diff --git a/src/mame/video/jalblend.c b/src/mame/video/jalblend.c
index e0c06c7fddf..dd3194ed8bf 100644
--- a/src/mame/video/jalblend.c
+++ b/src/mame/video/jalblend.c
@@ -84,7 +84,8 @@ rgb_t jal_blend_func(rgb_t dest, rgb_t addMe, UINT8 alpha)
return MAKE_RGB(r,g,b);
}
-void jal_blend_drawgfx(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+template<class _BitmapClass>
+void jal_blend_drawgfx_common(_BitmapClass &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
int transparent_color)
{
@@ -143,67 +144,41 @@ void jal_blend_drawgfx(bitmap_t &dest_bmp,const rectangle &clip,const gfx_elemen
{ /* skip if inner loop doesn't draw anything */
int x, y;
- /* 32-bit destination bitmap */
- if (dest_bmp.bpp() == 32)
+ /* taken from case 7: TRANSPARENCY_ALPHARANGE */
+ for (y = sy; y < ey; y++)
{
- /* taken from case 7: TRANSPARENCY_ALPHARANGE */
- for (y = sy; y < ey; y++)
+ const UINT8 *source = source_base + y_index*gfx->line_modulo;
+ typename _BitmapClass::pixel_t *dest = &dest_bmp.pix(y);
+ int x_index = x_index_base;
+ for (x = sx; x < ex; x++)
{
- const UINT8 *source = source_base + y_index*gfx->line_modulo;
- UINT32 *dest = &dest_bmp.pix32(y);
- int x_index = x_index_base;
- for (x = sx; x < ex; x++)
+ int c = source[x_index];
+ if (c != transparent_color)
{
- int c = source[x_index];
- if (c != transparent_color)
+ if (alpha[c] & 8)
{
- if (alpha[c] & 8)
- {
- /* Comp with clamp */
- dest[x] = jal_blend_func(dest[x], pal[c], alpha[c]);
- }
- else
- {
- /* Skip the costly alpha step altogether */
- dest[x] = pal[c];
- }
+ /* Comp with clamp */
+ dest[x] = jal_blend_func(dest[x], pal[c], alpha[c]);
}
- x_index += xinc;
- }
- y_index += yinc;
- }
- }
-
- /* 16-bit destination bitmap */
- else
- {
- /* taken from case 7: TRANSPARENCY_ALPHARANGE */
- for (y = sy; y < ey; y++)
- {
- const UINT8 *source = source_base + y_index*gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
- int x_index = x_index_base;
- for (x = sx; x < ex; x++)
- {
- int c = source[x_index];
- if (c != transparent_color)
+ else
{
- if (alpha[c] & 8)
- {
- /* Comp with clamp */
- dest[x] = jal_blend_func(dest[x], pal[c], alpha[c]);
- }
- else
- {
- /* Skip the costly alpha step altogether */
- dest[x] = pal[c];
- }
+ /* Skip the costly alpha step altogether */
+ dest[x] = pal[c];
}
- x_index += xinc;
}
- y_index += yinc;
+ x_index += xinc;
}
+ y_index += yinc;
}
}
}
}
+
+void jal_blend_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
+ int transparent_color)
+{ jal_blend_drawgfx_common(dest_bmp, clip, gfx, code, color, flipx, flipy, offsx, offsy, transparent_color); }
+void jal_blend_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
+ int transparent_color)
+{ jal_blend_drawgfx_common(dest_bmp, clip, gfx, code, color, flipx, flipy, offsx, offsy, transparent_color); }
diff --git a/src/mame/video/jalblend.h b/src/mame/video/jalblend.h
index 13fe929f8a2..1cfe6ee5dcc 100644
--- a/src/mame/video/jalblend.h
+++ b/src/mame/video/jalblend.h
@@ -2,6 +2,9 @@ void jal_blend_init(running_machine &machine, int enable);
void jal_blend_set(int color, UINT8 val);
rgb_t jal_blend_func(rgb_t dest, rgb_t addMe, UINT8 alpha);
-void jal_blend_drawgfx(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+void jal_blend_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
+ int transparent_color);
+void jal_blend_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
int transparent_color);
diff --git a/src/mame/video/jedi.c b/src/mame/video/jedi.c
index 5242257e86a..fd95929c451 100644
--- a/src/mame/video/jedi.c
+++ b/src/mame/video/jedi.c
@@ -88,7 +88,7 @@ static void get_pens(jedi_state *state, pen_t *pens)
}
-static void do_pen_lookup(jedi_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void do_pen_lookup(jedi_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int y, x;
pen_t pens[NUM_PENS];
@@ -132,7 +132,7 @@ WRITE8_HANDLER( jedi_hscroll_w )
*
*************************************/
-static void draw_background_and_text(running_machine &machine, jedi_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background_and_text(running_machine &machine, jedi_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int y;
int background_line_buffer[0x200]; /* RAM chip at 2A */
@@ -232,7 +232,7 @@ static void draw_background_and_text(running_machine &machine, jedi_state *state
*
*************************************/
-static void draw_sprites(running_machine &machine, jedi_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, jedi_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
offs_t offs;
UINT8 *spriteram = state->m_spriteram;
@@ -327,7 +327,7 @@ static void draw_sprites(running_machine &machine, jedi_state *state, bitmap_t &
*
*************************************/
-static SCREEN_UPDATE( jedi )
+static SCREEN_UPDATE_RGB32( jedi )
{
jedi_state *state = screen.machine().driver_data<jedi_state>();
@@ -356,11 +356,10 @@ static SCREEN_UPDATE( jedi )
MACHINE_CONFIG_FRAGMENT( jedi_video )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(64*8, 262) /* verify vert size */
MCFG_SCREEN_VISIBLE_AREA(0*8, 37*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(jedi)
+ MCFG_SCREEN_UPDATE_STATIC(jedi)
MCFG_VIDEO_START(jedi)
MACHINE_CONFIG_END
diff --git a/src/mame/video/jpmimpct.c b/src/mame/video/jpmimpct.c
index 83ce47cff06..74711885062 100644
--- a/src/mame/video/jpmimpct.c
+++ b/src/mame/video/jpmimpct.c
@@ -106,7 +106,7 @@ void jpmimpct_from_shiftreg(address_space *space, UINT32 address, UINT16 *shiftr
*
*************************************/
-void jpmimpct_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void jpmimpct_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
{
jpmimpct_state *state = screen.machine().driver_data<jpmimpct_state>();
UINT16 *vram = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
diff --git a/src/mame/video/kan_panb.c b/src/mame/video/kan_panb.c
index ede7eef93e7..68cf4873044 100644
--- a/src/mame/video/kan_panb.c
+++ b/src/mame/video/kan_panb.c
@@ -4,7 +4,7 @@
#include "kan_panb.h"
#include "includes/snowbros.h"
-SCREEN_UPDATE( honeydol )
+SCREEN_UPDATE_IND16( honeydol )
{
snowbros_state *state = screen.machine().driver_data<snowbros_state>();
UINT16 *spriteram16 = state->m_bootleg_spriteram16;
@@ -90,7 +90,7 @@ SCREEN_UPDATE( honeydol )
}
-SCREEN_UPDATE( twinadv )
+SCREEN_UPDATE_IND16( twinadv )
{
snowbros_state *state = screen.machine().driver_data<snowbros_state>();
UINT16 *spriteram16 = state->m_bootleg_spriteram16;
@@ -146,7 +146,7 @@ SCREEN_UPDATE( twinadv )
}
-SCREEN_UPDATE( wintbob )
+SCREEN_UPDATE_IND16( wintbob )
{
snowbros_state *state = screen.machine().driver_data<snowbros_state>();
UINT16 *spriteram16 = state->m_bootleg_spriteram16;
@@ -190,7 +190,7 @@ SCREEN_UPDATE( wintbob )
}
-SCREEN_UPDATE( snowbro3 )
+SCREEN_UPDATE_IND16( snowbro3 )
{
snowbros_state *state = screen.machine().driver_data<snowbros_state>();
UINT16 *spriteram16 = state->m_bootleg_spriteram16;
diff --git a/src/mame/video/kan_panb.h b/src/mame/video/kan_panb.h
index 44d5a083038..179f73a63e3 100644
--- a/src/mame/video/kan_panb.h
+++ b/src/mame/video/kan_panb.h
@@ -1,4 +1,4 @@
-SCREEN_UPDATE( honeydol );
-SCREEN_UPDATE( twinadv );
-SCREEN_UPDATE( wintbob );
-SCREEN_UPDATE( snowbro3 );
+SCREEN_UPDATE_IND16( honeydol );
+SCREEN_UPDATE_IND16( twinadv );
+SCREEN_UPDATE_IND16( wintbob );
+SCREEN_UPDATE_IND16( snowbro3 );
diff --git a/src/mame/video/kan_pand.c b/src/mame/video/kan_pand.c
index 0d4f505c5aa..ca44d44e070 100644
--- a/src/mame/video/kan_pand.c
+++ b/src/mame/video/kan_pand.c
@@ -55,7 +55,7 @@ struct _kaneko_pandora_state
{
screen_device *screen;
UINT8 * spriteram;
- bitmap_t *sprites_bitmap; /* bitmap to render sprites to, Pandora seems to be frame'buffered' */
+ bitmap_ind16 *sprites_bitmap; /* bitmap to render sprites to, Pandora seems to be frame'buffered' */
int clear_bitmap;
UINT8 region;
int xoffset, yoffset;
@@ -97,7 +97,7 @@ void pandora_set_clear_bitmap( device_t *device, int clear )
pandora->clear_bitmap = clear;
}
-void pandora_update( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void pandora_update( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kaneko_pandora_state *pandora = get_safe_token(device);
@@ -111,7 +111,7 @@ void pandora_update( device_t *device, bitmap_t &bitmap, const rectangle &clipre
}
-static void pandora_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+static void pandora_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kaneko_pandora_state *pandora = get_safe_token(device);
int sx = 0, sy = 0, x = 0, y = 0, offs;
@@ -309,7 +309,7 @@ static DEVICE_START( kaneko_pandora )
pandora->spriteram = auto_alloc_array(device->machine(), UINT8, 0x1000);
- pandora->sprites_bitmap = pandora->screen->alloc_compatible_bitmap();
+ pandora->sprites_bitmap = auto_bitmap_ind16_alloc(device->machine(), pandora->screen->width(), pandora->screen->height());
device->save_item(NAME(pandora->clear_bitmap));
device->save_pointer(NAME(pandora->spriteram), 0x1000);
diff --git a/src/mame/video/kan_pand.h b/src/mame/video/kan_pand.h
index 35518836161..bebd61ebdce 100644
--- a/src/mame/video/kan_pand.h
+++ b/src/mame/video/kan_pand.h
@@ -39,7 +39,7 @@ DECLARE_LEGACY_DEVICE(KANEKO_PANDORA, kaneko_pandora);
DEVICE I/O FUNCTIONS
***************************************************************************/
-void pandora_update(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+void pandora_update(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
void pandora_eof(device_t *device);
void pandora_set_clear_bitmap(device_t *device, int clear);
void pandora_set_bg_pen( device_t *device, int pen );
diff --git a/src/mame/video/kaneko16.c b/src/mame/video/kaneko16.c
index c69aa7ff934..46f93016f7f 100644
--- a/src/mame/video/kaneko16.c
+++ b/src/mame/video/kaneko16.c
@@ -122,7 +122,7 @@ VIDEO_START( kaneko16_1xVIEW2_tilemaps )
state->m_tmap[3] = 0;
- state->m_sprites_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_sprites_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
{
int dx, dy;
@@ -241,7 +241,7 @@ VIDEO_START( berlwall )
/* Render the hi-color static backgrounds held in the ROMs */
- state->m_bg15_bitmap = auto_bitmap_alloc(machine, 256 * 32, 256 * 1, BITMAP_FORMAT_INDEXED16);
+ state->m_bg15_bitmap.allocate(256 * 32, 256 * 1);
/*
8aba is used as background color
@@ -274,7 +274,7 @@ VIDEO_START( berlwall )
if ((r & 0x10) && (b & 0x10))
g = (g - 1) & 0x1f; /* decrease with wraparound */
- state->m_bg15_bitmap->pix16(y, sx * 256 + x) = 2048 + ((g << 10) | (r << 5) | b);
+ state->m_bg15_bitmap.pix16(y, sx * 256 + x) = 2048 + ((g << 10) | (r << 5) | b);
}
VIDEO_START_CALL(kaneko16_1xVIEW2);
@@ -294,7 +294,7 @@ VIDEO_START( galsnew )
state->m_tmap[3] = 0;
- state->m_sprites_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_sprites_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
{
int dx = 0x5b, dy = 8;
@@ -420,13 +420,13 @@ else
}
// custom function to draw a single sprite. needed to keep correct sprites - sprites and sprites - tilemaps priorities
-static void kaneko16_draw_sprites_custom(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+static void kaneko16_draw_sprites_custom(bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int priority)
{
pen_t pen_base = gfx->color_base + gfx->color_granularity * (color % gfx->total_colors);
const UINT8 *source_base = gfx_element_get_data(gfx, code % gfx->total_elements);
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
int sprite_screen_height = ((1<<16)*gfx->height+0x8000)>>16;
int sprite_screen_width = ((1<<16)*gfx->width+0x8000)>>16;
@@ -517,7 +517,7 @@ static void kaneko16_draw_sprites_custom(bitmap_t &dest_bmp,const rectangle &cli
/* Build a list of sprites to display & draw them */
-void kaneko16_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+void kaneko16_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
/* Sprites *must* be parsed from the first in RAM to the last,
@@ -852,7 +852,7 @@ WRITE16_HANDLER( kaneko16_bg15_reg_w )
***************************************************************************/
-static void kaneko16_prepare_first_tilemap_chip(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kaneko16_prepare_first_tilemap_chip(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
/* Set Up FIRST Tilemap chip */
@@ -893,7 +893,7 @@ static void kaneko16_prepare_first_tilemap_chip(running_machine &machine, bitmap
}
-static void kaneko16_prepare_second_tilemap_chip(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kaneko16_prepare_second_tilemap_chip(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
/* Set Up SECOND Tilemap chip */
@@ -933,14 +933,14 @@ static void kaneko16_prepare_second_tilemap_chip(running_machine &machine, bitma
}
}
-static void kaneko16_render_first_tilemap_chip(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri)
+static void kaneko16_render_first_tilemap_chip(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
tilemap_draw_primask(bitmap,cliprect, state->m_tmap[0], pri, pri, 0);
tilemap_draw_primask(bitmap,cliprect, state->m_tmap[1], pri, pri, 0);
}
-static void kaneko16_render_second_tilemap_chip(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri)
+static void kaneko16_render_second_tilemap_chip(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
if (state->m_tmap[2])
@@ -950,7 +950,7 @@ static void kaneko16_render_second_tilemap_chip(running_machine &machine, bitmap
}
}
-static void kaneko16_render_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kaneko16_render_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
/* Sprites last (rendered with pdrawgfx, so they can slip
@@ -959,20 +959,20 @@ static void kaneko16_render_sprites(running_machine &machine, bitmap_t &bitmap,
if(state->m_keep_sprites)
{
/* keep sprites on screen */
- kaneko16_draw_sprites(machine,*state->m_sprites_bitmap,cliprect);
- copybitmap_trans(bitmap,*state->m_sprites_bitmap,0,0,0,0,cliprect,0);
+ kaneko16_draw_sprites(machine,state->m_sprites_bitmap,cliprect);
+ copybitmap_trans(bitmap,state->m_sprites_bitmap,0,0,0,0,cliprect,0);
}
else
{
- state->m_sprites_bitmap->fill(0, cliprect);
+ state->m_sprites_bitmap.fill(0, cliprect);
kaneko16_draw_sprites(machine,bitmap,cliprect);
}
}
-static void kaneko16_render_15bpp_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kaneko16_render_15bpp_bitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
- if (state->m_bg15_bitmap)
+ if (state->m_bg15_bitmap.valid())
{
int select = state->m_bg15_select[ 0 ];
// int reg = state->m_bg15_reg[ 0 ];
@@ -984,13 +984,13 @@ static void kaneko16_render_15bpp_bitmap(running_machine &machine, bitmap_t &bit
sx = (select & 0x1f) * 256;
sy = 0;
- copybitmap(bitmap, *state->m_bg15_bitmap, flip, flip, -sx, -sy, cliprect);
+ copybitmap(bitmap, state->m_bg15_bitmap, flip, flip, -sx, -sy, cliprect);
// flag = 0;
}
}
-static void kaneko16_fill_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kaneko16_fill_bitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
if(state->m_sprite_type == 1)
@@ -1002,7 +1002,7 @@ static void kaneko16_fill_bitmap(running_machine &machine, bitmap_t &bitmap, con
bitmap.fill(0, cliprect);
}
-static SCREEN_UPDATE( common )
+static SCREEN_UPDATE_IND16( common )
{
int i;
@@ -1020,7 +1020,7 @@ static SCREEN_UPDATE( common )
return 0;
}
-SCREEN_UPDATE(berlwall)
+SCREEN_UPDATE_IND16(berlwall)
{
kaneko16_state *state = screen.machine().driver_data<kaneko16_state>();
// berlwall uses a 15bpp bitmap as a bg, not a solid fill
@@ -1029,18 +1029,18 @@ SCREEN_UPDATE(berlwall)
// if the display is disabled, do nothing?
if (!state->m_disp_enable) return 0;
- SCREEN_UPDATE_CALL(common);
+ SCREEN_UPDATE16_CALL(common);
kaneko16_render_sprites(screen.machine(),bitmap,cliprect);
return 0;
}
-SCREEN_UPDATE( jchan_view2 )
+SCREEN_UPDATE_IND16( jchan_view2 )
{
kaneko16_state *state = screen.machine().driver_data<kaneko16_state>();
int dx,dy;
- SCREEN_UPDATE_CALL(common);
+ SCREEN_UPDATE16_CALL(common);
/* override the offsets set in common - tuned to char select in jchan2 */
dx = 25;dy = 11;
@@ -1055,7 +1055,7 @@ SCREEN_UPDATE( jchan_view2 )
}
-SCREEN_UPDATE( kaneko16 )
+SCREEN_UPDATE_IND16( kaneko16 )
{
kaneko16_state *state = screen.machine().driver_data<kaneko16_state>();
kaneko16_fill_bitmap(screen.machine(),bitmap,cliprect);
@@ -1063,12 +1063,12 @@ SCREEN_UPDATE( kaneko16 )
// if the display is disabled, do nothing?
if (!state->m_disp_enable) return 0;
- SCREEN_UPDATE_CALL(common);
+ SCREEN_UPDATE16_CALL(common);
kaneko16_render_sprites(screen.machine(),bitmap,cliprect);
return 0;
}
-SCREEN_UPDATE( galsnew )
+SCREEN_UPDATE_IND16( galsnew )
{
kaneko16_state *state = screen.machine().driver_data<kaneko16_state>();
// kaneko16_fill_bitmap(screen.machine(),bitmap,cliprect);
@@ -1110,14 +1110,14 @@ SCREEN_UPDATE( galsnew )
// if the display is disabled, do nothing?
if (!state->m_disp_enable) return 0;
- SCREEN_UPDATE_CALL(common);
+ SCREEN_UPDATE16_CALL(common);
kaneko16_render_sprites(screen.machine(),bitmap,cliprect);
return 0;
}
-SCREEN_UPDATE( sandscrp )
+SCREEN_UPDATE_IND16( sandscrp )
{
kaneko16_state *state = screen.machine().driver_data<kaneko16_state>();
device_t *pandora = screen.machine().device("pandora");
@@ -1126,7 +1126,7 @@ SCREEN_UPDATE( sandscrp )
// if the display is disabled, do nothing?
if (!state->m_disp_enable) return 0;
- SCREEN_UPDATE_CALL(common);
+ SCREEN_UPDATE16_CALL(common);
// copy sprite bitmap to screen
pandora_update(pandora, bitmap, cliprect);
diff --git a/src/mame/video/kangaroo.c b/src/mame/video/kangaroo.c
index ccf9adf1ce2..57dcf5e0ada 100644
--- a/src/mame/video/kangaroo.c
+++ b/src/mame/video/kangaroo.c
@@ -136,7 +136,7 @@ static void blitter_execute( running_machine &machine )
*
*************************************/
-SCREEN_UPDATE( kangaroo )
+SCREEN_UPDATE_RGB32( kangaroo )
{
kangaroo_state *state = screen.machine().driver_data<kangaroo_state>();
UINT8 scrolly = state->m_video_control[6];
diff --git a/src/mame/video/karnov.c b/src/mame/video/karnov.c
index 2e6d2c43426..4364a262057 100644
--- a/src/mame/video/karnov.c
+++ b/src/mame/video/karnov.c
@@ -72,7 +72,7 @@ void karnov_flipscreen_w( running_machine &machine, int data )
tilemap_set_flip_all(machine, state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
karnov_state *state = machine.driver_data<karnov_state>();
int my, mx, offs, color, tile, fx, fy;
@@ -123,7 +123,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
/******************************************************************************/
-SCREEN_UPDATE( karnov )
+SCREEN_UPDATE_IND16( karnov )
{
karnov_state *state = screen.machine().driver_data<karnov_state>();
draw_background(screen.machine(), bitmap, cliprect);
@@ -166,7 +166,7 @@ VIDEO_START( karnov )
karnov_state *state = machine.driver_data<karnov_state>();
/* Allocate bitmap & tilemap */
- state->m_bitmap_f = auto_bitmap_alloc(machine, 512, 512, machine.primary_screen->format());
+ state->m_bitmap_f = auto_bitmap_ind16_alloc(machine, 512, 512);
state->m_fix_tilemap = tilemap_create(machine, get_fix_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
state->save_item(NAME(*state->m_bitmap_f));
@@ -179,7 +179,7 @@ VIDEO_START( wndrplnt )
karnov_state *state = machine.driver_data<karnov_state>();
/* Allocate bitmap & tilemap */
- state->m_bitmap_f = auto_bitmap_alloc(machine, 512, 512, machine.primary_screen->format());
+ state->m_bitmap_f = auto_bitmap_ind16_alloc(machine, 512, 512);
state->m_fix_tilemap = tilemap_create(machine, get_fix_tile_info, tilemap_scan_cols, 8, 8, 32, 32);
state->save_item(NAME(*state->m_bitmap_f));
diff --git a/src/mame/video/kchamp.c b/src/mame/video/kchamp.c
index 248ea7da5ba..54c8baf11af 100644
--- a/src/mame/video/kchamp.c
+++ b/src/mame/video/kchamp.c
@@ -68,7 +68,7 @@ VIDEO_START( kchamp )
3 XXXXXXXX
*/
-static void kchamp_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void kchamp_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kchamp_state *state = machine.driver_data<kchamp_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -97,7 +97,7 @@ static void kchamp_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void kchampvs_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void kchampvs_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kchamp_state *state = machine.driver_data<kchamp_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -127,7 +127,7 @@ static void kchampvs_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
-SCREEN_UPDATE( kchamp )
+SCREEN_UPDATE_IND16( kchamp )
{
kchamp_state *state = screen.machine().driver_data<kchamp_state>();
@@ -136,7 +136,7 @@ SCREEN_UPDATE( kchamp )
return 0;
}
-SCREEN_UPDATE( kchampvs )
+SCREEN_UPDATE_IND16( kchampvs )
{
kchamp_state *state = screen.machine().driver_data<kchamp_state>();
diff --git a/src/mame/video/kickgoal.c b/src/mame/video/kickgoal.c
index b45e1fc361b..c59528ac4a8 100644
--- a/src/mame/video/kickgoal.c
+++ b/src/mame/video/kickgoal.c
@@ -92,7 +92,7 @@ VIDEO_START( kickgoal )
-static void kickgoal_draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void kickgoal_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
kickgoal_state *state = machine.driver_data<kickgoal_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -122,7 +122,7 @@ static void kickgoal_draw_sprites( running_machine &machine, bitmap_t &bitmap,co
}
-SCREEN_UPDATE( kickgoal )
+SCREEN_UPDATE_IND16( kickgoal )
{
kickgoal_state *state = screen.machine().driver_data<kickgoal_state>();
@@ -225,7 +225,7 @@ VIDEO_START( actionhw )
}
-static void actionhw_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void actionhw_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
kickgoal_state *state = machine.driver_data<kickgoal_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -253,7 +253,7 @@ static void actionhw_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
}
-SCREEN_UPDATE( actionhw )
+SCREEN_UPDATE_IND16( actionhw )
{
kickgoal_state *state = screen.machine().driver_data<kickgoal_state>();
/* set scroll */
diff --git a/src/mame/video/kingobox.c b/src/mame/video/kingobox.c
index c3b7e9ef881..3b569bf1c7d 100644
--- a/src/mame/video/kingobox.c
+++ b/src/mame/video/kingobox.c
@@ -208,7 +208,7 @@ VIDEO_START( kingofb )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void kingofb_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void kingofb_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kingofb_state *state = machine.driver_data<kingofb_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -246,7 +246,7 @@ static void kingofb_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
}
}
-SCREEN_UPDATE( kingofb )
+SCREEN_UPDATE_IND16( kingofb )
{
kingofb_state *state = screen.machine().driver_data<kingofb_state>();
@@ -277,7 +277,7 @@ VIDEO_START( ringking )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void ringking_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void ringking_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kingofb_state *state = machine.driver_data<kingofb_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -308,7 +308,7 @@ static void ringking_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-SCREEN_UPDATE( ringking )
+SCREEN_UPDATE_IND16( ringking )
{
kingofb_state *state = screen.machine().driver_data<kingofb_state>();
diff --git a/src/mame/video/klax.c b/src/mame/video/klax.c
index 57128205175..131a5b76936 100644
--- a/src/mame/video/klax.c
+++ b/src/mame/video/klax.c
@@ -101,11 +101,11 @@ WRITE16_HANDLER( klax_latch_w )
*
*************************************/
-SCREEN_UPDATE( klax )
+SCREEN_UPDATE_IND16( klax )
{
klax_state *state = screen.machine().driver_data<klax_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/kncljoe.c b/src/mame/video/kncljoe.c
index 6df631a97ba..f82a51fe4d9 100644
--- a/src/mame/video/kncljoe.c
+++ b/src/mame/video/kncljoe.c
@@ -180,7 +180,7 @@ WRITE8_HANDLER( kncljoe_scroll_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kncljoe_state *state = machine.driver_data<kncljoe_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -238,7 +238,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( kncljoe )
+SCREEN_UPDATE_IND16( kncljoe )
{
kncljoe_state *state = screen.machine().driver_data<kncljoe_state>();
diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c
index a11fabb2167..866c950f312 100644
--- a/src/mame/video/konamigx.c
+++ b/src/mame/video/konamigx.c
@@ -42,15 +42,15 @@ static int gx_specialrozenable; // type 1 roz, with voxel height-map, rendered f
static int gx_rushingheroes_hack;
static int gx_le2_textcolour_hack;
static tilemap_t *gx_psac_tilemap, *gx_psac_tilemap2;
-static bitmap_t* type3_roz_temp_bitmap;
+static bitmap_ind16* type3_roz_temp_bitmap;
static tilemap_t* gx_psac_tilemap_alt;
static int konamigx_has_dual_screen;
int konamigx_current_frame;
INLINE void set_color_555(running_machine &machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
static int konamigx_palformat;
-static bitmap_t* dualscreen_left_tempbitmap;
-static bitmap_t* dualscreen_right_tempbitmap;
+static bitmap_rgb32* dualscreen_left_tempbitmap;
+static bitmap_rgb32* dualscreen_right_tempbitmap;
/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
the 'voxel' effect to give the pixels height is a post-process operation on the
@@ -69,8 +69,8 @@ static bitmap_t* dualscreen_right_tempbitmap;
*/
-static bitmap_t *gxtype1_roz_dstbitmap;
-static bitmap_t *gxtype1_roz_dstbitmap2;
+static bitmap_ind16 *gxtype1_roz_dstbitmap;
+static bitmap_ind16 *gxtype1_roz_dstbitmap2;
static rectangle gxtype1_roz_dstbitmapclip;
static void (*game_tile_callback)(running_machine &machine, int layer, int *code, int *color, int *flags);
@@ -97,7 +97,7 @@ void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy)
}
INLINE void K053936GP_copyroz32clip( running_machine &machine,
- bitmap_t &dst_bitmap, bitmap_t &src_bitmap,
+ bitmap_rgb32 &dst_bitmap, bitmap_ind16 &src_bitmap,
const rectangle &dst_cliprect, const rectangle &src_cliprect,
UINT32 _startx,UINT32 _starty,int _incxx,int _incxy,int _incyx,int _incyy,
int tilebpp, int blend, int alpha, int clip, int pixeldouble_output )
@@ -280,7 +280,7 @@ INLINE void K053936GP_copyroz32clip( running_machine &machine,
// adapted from generic K053936_zoom_draw()
static void K053936GP_zoom_draw(running_machine &machine,
int chip, UINT16 *ctrl, UINT16 *linectrl,
- bitmap_t &bitmap, const rectangle &cliprect, tilemap_t *tmap,
+ bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tmap,
int tilebpp, int blend, int alpha, int pixeldouble_output)
{
UINT16 *lineaddr;
@@ -289,7 +289,7 @@ static void K053936GP_zoom_draw(running_machine &machine,
UINT32 startx, starty;
int incxx, incxy, incyx, incyy, y, maxy, clip;
- bitmap_t &src_bitmap = tilemap_get_pixmap(tmap);
+ bitmap_ind16 &src_bitmap = tilemap_get_pixmap(tmap);
rectangle &src_cliprect = K053936_cliprect[chip];
clip = K053936_clip_enabled[chip];
@@ -348,13 +348,13 @@ static void K053936GP_zoom_draw(running_machine &machine,
}
}
-static void K053936GP_0_zoom_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void K053936GP_0_zoom_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect,
tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output)
{
K053936GP_zoom_draw(machine, 0,K053936_0_ctrl,K053936_0_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha, pixeldouble_output);
}
-static void K053936GP_1_zoom_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void K053936GP_1_zoom_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect,
tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output)
{
K053936GP_zoom_draw(machine, 1,K053936_1_ctrl,K053936_1_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha, pixeldouble_output);
@@ -380,7 +380,7 @@ static void K053936GP_1_zoom_draw(running_machine &machine, bitmap_t &bitmap, co
INLINE void zdrawgfxzoom32GP(
- bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx,
+ bitmap_rgb32 &bitmap, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy,
int scalex, int scaley, int alpha, int drawmode, int zcode, int pri)
{
@@ -1158,10 +1158,10 @@ void konamigx_objdma(void)
if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000);
}
-void konamigx_mixer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+void konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect,
tilemap_t *sub1, int sub1flags,
tilemap_t *sub2, int sub2flags,
- int mixerflags, bitmap_t *extra_bitmap, int rushingheroes_hack)
+ int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack)
{
static const int xoffset[8] = { 0, 1, 4, 5, 16, 17, 20, 21 };
static const int yoffset[8] = { 0, 2, 8, 10, 32, 34, 40, 42 };
@@ -2151,8 +2151,8 @@ VIDEO_START(konamigx_type3)
K056832_vh_start(machine, "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 1);
K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -132, -23, konamigx_type2_sprite_callback);
- dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
- dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
+ dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
+ dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
_gxcommoninitnosprites(machine);
@@ -2164,7 +2164,7 @@ VIDEO_START(konamigx_type3)
/* set up tile layers */
- type3_roz_temp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine, width, height);
//tilemap_set_flip(gx_psac_tilemap, TILEMAP_FLIPX| TILEMAP_FLIPY);
@@ -2190,8 +2190,8 @@ VIDEO_START(konamigx_type4)
K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0);
K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -79, -24, konamigx_type2_sprite_callback); // -23 looks better in intro
- dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
- dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
+ dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
+ dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
_gxcommoninitnosprites(machine);
@@ -2221,8 +2221,8 @@ VIDEO_START(konamigx_type4_vsn)
K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 2); // set djmain_hack to 2 to kill layer association or half the tilemaps vanish on screen 0
K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -132, -23, konamigx_type2_sprite_callback);
- dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
- dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
+ dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
+ dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
_gxcommoninitnosprites(machine);
@@ -2251,8 +2251,8 @@ VIDEO_START(konamigx_type4_sd2)
K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0);
K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -81, -23, konamigx_type2_sprite_callback);
- dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
- dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
+ dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
+ dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine, width, height);
_gxcommoninitnosprites(machine);
@@ -2315,8 +2315,8 @@ VIDEO_START(opengolf)
gx_rozenable = 0;
gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_alloc(machine,512,512,BITMAP_FORMAT_INDEXED16); // BITMAP_FORMAT_INDEXED16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_alloc(machine,512,512,BITMAP_FORMAT_INDEXED16); // BITMAP_FORMAT_INDEXED16 because we NEED the raw pen data for post-processing
+ gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine,512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine,512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
gxtype1_roz_dstbitmapclip.min_x = 0;
@@ -2330,7 +2330,7 @@ VIDEO_START(opengolf)
// urgh.. the priority bitmap is global, and because our temp bitmaps are bigger than the screen, this causes issues.. so just allocate something huge
// until there is a better solution, or priority bitmap can be specified manually.
- machine.priority_bitmap.allocate(2048,2048,BITMAP_FORMAT_INDEXED16);
+ machine.priority_bitmap.allocate(2048,2048);
}
@@ -2356,8 +2356,8 @@ VIDEO_START(racinfrc)
gx_rozenable = 0;
gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_alloc(machine,512,512,BITMAP_FORMAT_INDEXED16); // BITMAP_FORMAT_INDEXED16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_alloc(machine,512,512,BITMAP_FORMAT_INDEXED16); // BITMAP_FORMAT_INDEXED16 because we NEED the raw pen data for post-processing
+ gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine,512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine,512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
gxtype1_roz_dstbitmapclip.min_x = 0;
@@ -2371,12 +2371,12 @@ VIDEO_START(racinfrc)
// urgh.. the priority bitmap is global, and because our temp bitmaps are bigger than the screen, this causes issues.. so just allocate something huge
// until there is a better solution, or priority bitmap can be specified manually.
- machine.priority_bitmap.allocate(2048,2048,BITMAP_FORMAT_INDEXED16);
+ machine.priority_bitmap.allocate(2048,2048);
}
-SCREEN_UPDATE(konamigx)
+SCREEN_UPDATE_RGB32(konamigx)
{
int i, newbank, newbase, dirty, unchained;
@@ -2503,7 +2503,7 @@ SCREEN_UPDATE(konamigx)
return 0;
}
-SCREEN_UPDATE(konamigx_left)
+SCREEN_UPDATE_RGB32(konamigx_left)
{
/* the video gets demuxed by a board which plugs into the jamma connector */
konamigx_current_frame^=1;
@@ -2536,7 +2536,7 @@ SCREEN_UPDATE(konamigx_left)
}
}
- SCREEN_UPDATE_NAME(konamigx)(screen, *dualscreen_left_tempbitmap, cliprect);
+ SCREEN_UPDATE_NAME(konamigx)(__dummy, screen, downcast<bitmap_rgb32 &>(*dualscreen_left_tempbitmap), cliprect);
copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
}
else
@@ -2547,7 +2547,7 @@ SCREEN_UPDATE(konamigx_left)
return 0;
}
-SCREEN_UPDATE(konamigx_right)
+SCREEN_UPDATE_RGB32(konamigx_right)
{
if (konamigx_current_frame==1)
{
@@ -2582,7 +2582,7 @@ SCREEN_UPDATE(konamigx_right)
}
}
- SCREEN_UPDATE_NAME(konamigx)(screen, *dualscreen_right_tempbitmap, cliprect);
+ SCREEN_UPDATE_NAME(konamigx)(__dummy, screen, downcast<bitmap_rgb32 &>(*dualscreen_right_tempbitmap), cliprect);
copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
}
diff --git a/src/mame/video/konamiic.c b/src/mame/video/konamiic.c
index 9d845fbca1e..ee76732ee92 100644
--- a/src/mame/video/konamiic.c
+++ b/src/mame/video/konamiic.c
@@ -1518,7 +1518,7 @@ static int K053936_wraparound[K053936_MAX_CHIPS];
// there is another implementation of this in machine/konamigx.c (!)
// why?
-static void K053936_zoom_draw(int chip,UINT16 *ctrl,UINT16 *linectrl, bitmap_t &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack)
+static void K053936_zoom_draw(int chip,UINT16 *ctrl,UINT16 *linectrl, bitmap_ind16 &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack)
{
if (!tmap)
return;
@@ -1639,7 +1639,7 @@ if (machine.input().code_pressed(KEYCODE_D))
}
-void K053936_0_zoom_draw(bitmap_t &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack)
+void K053936_0_zoom_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack)
{
K053936_zoom_draw(0,K053936_0_ctrl,K053936_0_linectrl,bitmap,cliprect,tmap,flags,priority, glfgreat_hack);
}
@@ -1735,7 +1735,7 @@ WRITE16_HANDLER( K054000_lsb_w )
#define K056832_PAGE_COUNT 16
static tilemap_t *K056832_tilemap[K056832_PAGE_COUNT];
-static bitmap_t *K056832_pixmap[K056832_PAGE_COUNT];
+static bitmap_ind16 *K056832_pixmap[K056832_PAGE_COUNT];
static UINT16 K056832_regs[0x20]; // 157/832 regs group 1
static UINT16 K056832_regsb[4]; // 157/832 regs group 2, board dependent
@@ -2563,7 +2563,7 @@ WRITE16_HANDLER( K056832_b_word_w )
}
-static int K056832_update_linemap(running_machine &machine, bitmap_t &bitmap, int page, int flags)
+static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap, int page, int flags)
{
if (K056832_PageTileMode[page]) return(0);
@@ -2579,7 +2579,7 @@ static int K056832_update_linemap(running_machine &machine, bitmap_t &bitmap, in
UINT8 *xprdata;
tmap = K056832_tilemap[page];
- bitmap_t &xprmap = tilemap_get_flagsmap(tmap);
+ bitmap_ind8 &xprmap = tilemap_get_flagsmap(tmap);
xprdata = tilemap_get_tile_flags(tmap);
dirty = K056832_LineDirty[page];
@@ -2610,7 +2610,7 @@ static int K056832_update_linemap(running_machine &machine, bitmap_t &bitmap, in
{
- bitmap_t *pixmap;
+ bitmap_ind16 *pixmap;
UINT8 code_transparent, code_opaque;
const pen_t *pal_ptr;
@@ -2686,7 +2686,7 @@ static int K056832_update_linemap(running_machine &machine, bitmap_t &bitmap, in
return(0);
}
-void K056832_tilemap_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority)
+void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority)
{
static int last_colorbase[K056832_PAGE_COUNT];
@@ -3153,7 +3153,7 @@ void K054338_update_all_shadows(running_machine &machine, int rushingheroes_hack
#ifdef UNUSED_FUNCTION
// K054338 BG color fill
-void K054338_fill_solid_bg(bitmap_t &bitmap)
+void K054338_fill_solid_bg(bitmap_ind16 &bitmap)
{
UINT32 bgcolor;
UINT32 *pLine;
@@ -3174,7 +3174,7 @@ void K054338_fill_solid_bg(bitmap_t &bitmap)
#endif
// Unified K054338/K055555 BG color fill
-void K054338_fill_backcolor(running_machine &machine, bitmap_t &bitmap, int mode) // (see p.67)
+void K054338_fill_backcolor(running_machine &machine, bitmap_rgb32 &bitmap, int mode) // (see p.67)
{
int clipx, clipy, clipw, cliph, i, dst_pitch;
int BGC_CBLK, BGC_SET;
diff --git a/src/mame/video/konamiic.h b/src/mame/video/konamiic.h
index c0da27c0e52..bef3388e650 100644
--- a/src/mame/video/konamiic.h
+++ b/src/mame/video/konamiic.h
@@ -37,7 +37,7 @@ int K053246_read_register(int regnum);
extern UINT16 *K053936_0_ctrl,*K053936_0_linectrl;
extern UINT16 *K053936_1_ctrl,*K053936_1_linectrl;
-void K053936_0_zoom_draw(bitmap_t &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack);
+void K053936_0_zoom_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,UINT32 priority, int glfgreat_hack);
void K053936_wraparound_enable(int chip, int status);
void K053936_set_offset(int chip, int xoffs, int yoffs);
@@ -76,7 +76,7 @@ WRITE16_HANDLER( K056832_word_w ); // "VRAM" registers
WRITE16_HANDLER( K056832_b_word_w );
void K056832_mark_plane_dirty(int num);
void K056832_MarkAllTilemapsDirty(void);
-void K056832_tilemap_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
+void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
int K056832_get_LayerAssociation(void);
void K056832_set_LayerOffset(int layer, int offsx, int offsy);
void K056832_set_UpdateMode(int mode);
@@ -173,8 +173,8 @@ WRITE16_HANDLER( K054338_word_w ); // "CLCT" registers
WRITE32_HANDLER( K054338_long_w );
int K054338_read_register(int reg);
void K054338_update_all_shadows(running_machine &machine, int rushingheroes_hack); // called at the beginning of SCREEN_UPDATE()
-void K054338_fill_solid_bg(bitmap_t &bitmap); // solid backcolor fill
-void K054338_fill_backcolor(running_machine &machine, bitmap_t &bitmap, int mode); // unified fill, 0=solid, 1=gradient
+void K054338_fill_solid_bg(bitmap_ind16 &bitmap); // solid backcolor fill
+void K054338_fill_backcolor(running_machine &machine, bitmap_rgb32 &bitmap, int mode); // unified fill, 0=solid, 1=gradient
int K054338_set_alpha_level(int pblend); // blend style 0-2
void K054338_invert_alpha(int invert); // 0=0x00(invis)-0x1f(solid), 1=0x1f(invis)-0x00(solod)
void K054338_export_config(int **shdRGB);
diff --git a/src/mame/video/konicdev.c b/src/mame/video/konicdev.c
index bd519fb7a6e..d95a2555669 100644
--- a/src/mame/video/konicdev.c
+++ b/src/mame/video/konicdev.c
@@ -1422,12 +1422,12 @@ WRITE8_DEVICE_HANDLER( k007121_ctrl_w )
*
*/
-void k007121_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, gfx_element *gfx, colortable_t *ctable,
+void k007121_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, colortable_t *ctable,
const UINT8 *source, int base_color, int global_x_offset, int bank_base, UINT32 pri_mask )
{
k007121_state *k007121 = k007121_get_safe_token(device);
// const gfx_element *gfx = gfxs[chip];
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
int flipscreen = k007121->flipscreen;
int i, num, inc, offs[5];
int is_flakatck = (ctable == NULL);
@@ -1749,7 +1749,7 @@ void k007342_tilemap_update( device_t *device )
#endif
}
-void k007342_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int num, int flags, UINT32 priority )
+void k007342_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int num, int flags, UINT32 priority )
{
k007342_state *k007342 = k007342_get_safe_token(device);
tilemap_draw(bitmap, cliprect, k007342->tilemap[num], flags, priority);
@@ -1942,7 +1942,7 @@ WRITE8_DEVICE_HANDLER( k007420_w )
* 7 | xxxxxxxx | unused
*/
-void k007420_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, gfx_element *gfx )
+void k007420_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx )
{
k007420_state *k007420 = k007420_get_safe_token(device);
int offs;
@@ -2561,7 +2561,7 @@ if (machine.input().code_pressed(KEYCODE_F))
#endif
}
-void k052109_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int tmap_num, UINT32 flags, UINT8 priority )
+void k052109_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, UINT32 flags, UINT8 priority )
{
k052109_state *k052109 = k052109_get_safe_token(device);
tilemap_draw(bitmap, cliprect, k052109->tilemap[tmap_num], flags, priority);
@@ -3003,7 +3003,7 @@ WRITE16_DEVICE_HANDLER( k051937_word_w )
* Note that Aliens also uses the shadow bit to select the second sprite bank.
*/
-void k051960_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int min_priority, int max_priority )
+void k051960_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int min_priority, int max_priority )
{
#define NUM_SPRITES 128
k051960_state *k051960 = k051960_get_safe_token(device);
@@ -3529,7 +3529,7 @@ void k053244_bankselect( device_t *device, int bank )
* The rest of the sprite remains normal.
*/
-void k053245_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k053245_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
#define NUM_SPRITES 128
k05324x_state *k053245 = k05324x_get_safe_token(device);
@@ -3783,7 +3783,7 @@ if (machine.input().code_pressed(KEYCODE_D))
/* Lethal Enforcers has 2 of these chips hooked up in parallel to give 6bpp gfx.. lets cheat a
bit and make emulating it a little less messy by using a custom function instead */
-void k053245_sprites_draw_lethal( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k053245_sprites_draw_lethal( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
#define NUM_SPRITES 128
k05324x_state *k053245 = k05324x_get_safe_token(device);
@@ -4450,7 +4450,8 @@ int k053246_is_irq_enabled( device_t *device )
* The rest of the sprite remains normal.
*/
-void k053247_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+template<class _BitmapClass>
+void k053247_sprites_draw_common( device_t *device, _BitmapClass &bitmap, const rectangle &cliprect )
{
#define NUM_SPRITES 256
k053247_state *k053246 = k053247_get_safe_token(device);
@@ -4496,7 +4497,7 @@ void k053247_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &
*/
if (machine.config().m_video_attributes & VIDEO_HAS_SHADOWS)
{
- if (bitmap.bpp() == 32 && (machine.config().m_video_attributes & VIDEO_HAS_HIGHLIGHTS))
+ if (sizeof(typename _BitmapClass::pixel_t) == 4 && (machine.config().m_video_attributes & VIDEO_HAS_HIGHLIGHTS))
shdmask = 3; // enable all shadows and highlights
else
shdmask = 0; // enable default shadows
@@ -4848,6 +4849,12 @@ void k053247_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &
#undef NUM_SPRITES
}
+void k053247_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{ k053247_sprites_draw_common(device, bitmap, cliprect); }
+
+void k053247_sprites_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect )
+{ k053247_sprites_draw_common(device, bitmap, cliprect); }
+
/*****************************************************************************
DEVICE INTERFACE
@@ -5221,7 +5228,7 @@ INLINE void k051316_get_tile_info( device_t *device, tile_data *tileinfo, int ti
static TILE_GET_INFO_DEVICE( k051316_get_tile_info0 ) { k051316_get_tile_info(device, tileinfo, tile_index); }
-void k051316_zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+void k051316_zoom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
{
k051316_state *k051316= k051316_get_safe_token(device);
UINT32 startx, starty;
@@ -5459,7 +5466,7 @@ READ16_DEVICE_HANDLER( k053936_linectrl_r )
// there is another implementation of this in video/konamigx.c (!)
// why? shall they be merged?
-void k053936_zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, tilemap_t *tmap, int flags, UINT32 priority, int glfgreat_hack )
+void k053936_zoom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *tmap, int flags, UINT32 priority, int glfgreat_hack )
{
k053936_state *k053936= k053936_get_safe_token(device);
if (!tmap)
@@ -6053,7 +6060,7 @@ typedef struct _k056832_state k056832_state;
struct _k056832_state
{
tilemap_t *tilemap[K056832_PAGE_COUNT];
- bitmap_t *pixmap[K056832_PAGE_COUNT];
+ bitmap_ind16 *pixmap[K056832_PAGE_COUNT];
UINT16 regs[0x20]; // 157/832 regs group 1
UINT16 regsb[4]; // 157/832 regs group 2, board dependent
@@ -6966,7 +6973,8 @@ WRITE32_DEVICE_HANDLER( k056832_b_long_w )
}
}
-static int k056832_update_linemap( device_t *device, bitmap_t &bitmap, int page, int flags )
+template<class _BitmapClass>
+static int k056832_update_linemap( device_t *device, _BitmapClass &bitmap, int page, int flags )
{
k056832_state *k056832 = k056832_get_safe_token(device);
@@ -6983,7 +6991,7 @@ static int k056832_update_linemap( device_t *device, bitmap_t &bitmap, int page,
UINT8 *xprdata;
tmap = k056832->tilemap[page];
- bitmap_t &xprmap = tilemap_get_flagsmap(tmap);
+ bitmap_ind8 &xprmap = tilemap_get_flagsmap(tmap);
xprdata = tilemap_get_tile_flags(tmap);
dirty = k056832->line_dirty[page];
@@ -7014,7 +7022,7 @@ static int k056832_update_linemap( device_t *device, bitmap_t &bitmap, int page,
*/
{
- bitmap_t *pixmap;
+ bitmap_ind16 *pixmap;
running_machine &machine = device->machine();
UINT8 code_transparent, code_opaque;
@@ -7089,7 +7097,8 @@ static int k056832_update_linemap( device_t *device, bitmap_t &bitmap, int page,
return(0);
}
-void k056832_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
+template<class _BitmapClass>
+void k056832_tilemap_draw_common( device_t *device, _BitmapClass &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
{
k056832_state *k056832 = k056832_get_safe_token(device);
UINT32 last_dx, last_visible, new_colorbase, last_active;
@@ -7411,8 +7420,14 @@ printf("\nend\n");
k056832->active_layer = last_active;
} // end of function
+void k056832_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
+{ k056832_tilemap_draw_common(device, bitmap, cliprect, layer, flags, priority); }
+
+void k056832_tilemap_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
+{ k056832_tilemap_draw_common(device, bitmap, cliprect, layer, flags, priority); }
+
-void k056832_tilemap_draw_dj( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
+void k056832_tilemap_draw_dj( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority )
{
k056832_state *k056832 = k056832_get_safe_token(device);
UINT32 last_dx, last_visible, new_colorbase, last_active;
@@ -8208,7 +8223,7 @@ void k054338_update_all_shadows( device_t *device, int rushingheroes_hack )
}
// k054338 BG color fill
-void k054338_fill_solid_bg( device_t *device, bitmap_t &bitmap )
+void k054338_fill_solid_bg( device_t *device, bitmap_rgb32 &bitmap )
{
UINT32 bgcolor;
UINT32 *pLine;
@@ -8227,7 +8242,7 @@ void k054338_fill_solid_bg( device_t *device, bitmap_t &bitmap )
}
// Unified k054338/K055555 BG color fill
-void k054338_fill_backcolor( device_t *device, bitmap_t &bitmap, int mode ) // (see p.67)
+void k054338_fill_backcolor( device_t *device, bitmap_rgb32 &bitmap, int mode ) // (see p.67)
{
k054338_state *k054338 = k054338_get_safe_token(device);
int clipx, clipy, clipw, cliph, i, dst_pitch;
@@ -8631,8 +8646,8 @@ struct _k001005_state
UINT32 * _3d_fifo;
UINT32 status;
- bitmap_t *bitmap[2];
- bitmap_t *zbuffer;
+ bitmap_rgb32 *bitmap[2];
+ bitmap_ind32 *zbuffer;
rectangle cliprect;
int ram_ptr;
int fifo_read_ptr;
@@ -8917,7 +8932,7 @@ static void draw_scanline( device_t *device, void *dest, INT32 scanline, const p
{
k001005_state *k001005 = k001005_get_safe_token(device);
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
float z = extent->param[0].start;
float dz = extent->param[0].dpdx;
UINT32 *fb = &destmap->pix32(scanline);
@@ -8948,7 +8963,7 @@ static void draw_scanline_tex( device_t *device, void *dest, INT32 scanline, con
{
k001005_state *k001005 = k001005_get_safe_token(device);
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT8 *texrom = k001005->gfxrom + (extra->texture_page * 0x40000);
device_t *pal_device = (extra->texture_palette & 0x8) ? k001005->k001006_2 : k001005->k001006_1;
int palette_index = (extra->texture_palette & 0x7) * 256;
@@ -9415,7 +9430,7 @@ static void k001005_render_polygons( device_t *device )
}
}
-void k001005_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k001005_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
k001005_state *k001005 = k001005_get_safe_token(device);
int i, j;
@@ -9455,12 +9470,12 @@ static DEVICE_START( k001005 )
k001005->screen = device->machine().device<screen_device>(intf->screen);
width = k001005->screen->width();
height = k001005->screen->height();
- k001005->zbuffer = auto_bitmap_alloc(device->machine(), width, height, BITMAP_FORMAT_INDEXED32);
+ k001005->zbuffer = auto_bitmap_ind32_alloc(device->machine(), width, height);
k001005->gfxrom = device->machine().region(intf->gfx_memory_region)->base();
- k001005->bitmap[0] = k001005->screen->alloc_compatible_bitmap();
- k001005->bitmap[1] = k001005->screen->alloc_compatible_bitmap();
+ k001005->bitmap[0] = auto_bitmap_rgb32_alloc(device->machine(), k001005->screen->width(), k001005->screen->height());
+ k001005->bitmap[1] = auto_bitmap_rgb32_alloc(device->machine(), k001005->screen->width(), k001005->screen->height());
k001005->texture = auto_alloc_array(device->machine(), UINT8, 0x800000);
@@ -9694,7 +9709,7 @@ static TILE_GET_INFO_DEVICE( k001604_tile_info_layer_roz )
}
-void k001604_draw_back_layer( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k001604_draw_back_layer( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
k001604_state *k001604 = k001604_get_safe_token(device);
int layer;
@@ -9729,7 +9744,7 @@ void k001604_draw_back_layer( device_t *device, bitmap_t &bitmap, const rectangl
}
}
-void k001604_draw_front_layer( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k001604_draw_front_layer( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
k001604_state *k001604 = k001604_get_safe_token(device);
@@ -10030,7 +10045,7 @@ static TILE_GET_INFO_DEVICE( k037122_tile_info_layer1 )
}
-void k037122_tile_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect )
+void k037122_tile_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
k037122_state *k037122 = k037122_get_safe_token(device);
const rectangle &visarea = k037122->screen->visible_area();
diff --git a/src/mame/video/konicdev.h b/src/mame/video/konicdev.h
index 7adb3a6b095..3eaa43f59e9 100644
--- a/src/mame/video/konicdev.h
+++ b/src/mame/video/konicdev.h
@@ -309,7 +309,7 @@ WRITE8_DEVICE_HANDLER( k007121_ctrl_w );
/* shall we move source in the interface? */
/* also notice that now we directly pass *gfx[chip] instead of **gfx !! */
-void k007121_sprites_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, gfx_element *gfx, colortable_t *ctable,
+void k007121_sprites_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, colortable_t *ctable,
const UINT8 *source, int base_color, int global_x_offset, int bank_base, UINT32 pri_mask );
@@ -321,7 +321,7 @@ WRITE8_DEVICE_HANDLER( k007342_scroll_w );
WRITE8_DEVICE_HANDLER( k007342_vreg_w );
void k007342_tilemap_update(device_t *device);
-void k007342_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int num, int flags, UINT32 priority);
+void k007342_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int num, int flags, UINT32 priority);
int k007342_is_int_enabled(device_t *device);
@@ -330,7 +330,7 @@ int k007342_is_int_enabled(device_t *device);
READ8_DEVICE_HANDLER( k007420_r );
WRITE8_DEVICE_HANDLER( k007420_w );
-void k007420_sprites_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, gfx_element *gfx);
+void k007420_sprites_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
/** Konami 052109 **/
@@ -376,7 +376,7 @@ void k052109_tilemap_update(device_t *device);
int k052109_is_irq_enabled(device_t *device);
void k052109_set_layer_offsets(device_t *device, int layer, int dx, int dy);
void k052109_tilemap_mark_dirty(device_t *device, int tmap_num);
-void k052109_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int tmap_num, UINT32 flags, UINT8 priority);
+void k052109_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, UINT32 flags, UINT8 priority);
/** Konami 051960 / 051937 **/
@@ -404,7 +404,7 @@ WRITE8_DEVICE_HANDLER( k051937_w );
READ16_DEVICE_HANDLER( k051937_word_r );
WRITE16_DEVICE_HANDLER( k051937_word_w );
-void k051960_sprites_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int min_priority, int max_priority);
+void k051960_sprites_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int min_priority, int max_priority);
int k051960_is_irq_enabled(device_t *device);
int k051960_is_nmi_enabled(device_t *device);
void k051960_set_sprite_offsets(device_t *device, int dx, int dy);
@@ -428,8 +428,8 @@ WRITE16_DEVICE_HANDLER( k053244_lsb_w );
READ16_DEVICE_HANDLER( k053244_word_r );
WRITE16_DEVICE_HANDLER( k053244_word_w );
void k053244_bankselect(device_t *device, int bank); /* used by TMNT2, Asterix and Premier Soccer for ROM testing */
-void k053245_sprites_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void k053245_sprites_draw_lethal(device_t *device, bitmap_t &bitmap, const rectangle &cliprect); /* for lethal enforcers */
+void k053245_sprites_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void k053245_sprites_draw_lethal(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect); /* for lethal enforcers */
void k053245_clear_buffer(device_t *device);
void k053245_set_sprite_offs(device_t *device, int offsx, int offsy);
@@ -463,7 +463,8 @@ WRITE32_DEVICE_HANDLER( k053247_long_w );
WRITE16_DEVICE_HANDLER( k053247_reg_word_w ); // "OBJSET2" registers
WRITE32_DEVICE_HANDLER( k053247_reg_long_w );
-void k053247_sprites_draw(device_t *device, bitmap_t &bitmap,const rectangle &cliprect);
+void k053247_sprites_draw(device_t *device, bitmap_ind16 &bitmap,const rectangle &cliprect);
+void k053247_sprites_draw(device_t *device, bitmap_rgb32 &bitmap,const rectangle &cliprect);
int k053247_read_register(device_t *device, int regnum);
void k053247_set_sprite_offs(device_t *device, int offsx, int offsy);
void k053247_wraparound_enable(device_t *device, int status);
@@ -501,7 +502,7 @@ READ8_DEVICE_HANDLER( k051316_r );
WRITE8_DEVICE_HANDLER( k051316_w );
READ8_DEVICE_HANDLER( k051316_rom_r );
WRITE8_DEVICE_HANDLER( k051316_ctrl_w );
-void k051316_zoom_draw(device_t *device, bitmap_t &bitmap,const rectangle &cliprect,int flags,UINT32 priority);
+void k051316_zoom_draw(device_t *device, bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT32 priority);
void k051316_wraparound_enable(device_t *device, int status);
@@ -510,7 +511,7 @@ WRITE16_DEVICE_HANDLER( k053936_ctrl_w );
READ16_DEVICE_HANDLER( k053936_ctrl_r ); // FIXME: this is probably unused... to be checked!
WRITE16_DEVICE_HANDLER( k053936_linectrl_w );
READ16_DEVICE_HANDLER( k053936_linectrl_r );
-void k053936_zoom_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, tilemap_t *tmap, int flags, UINT32 priority, int glfgreat_hack);
+void k053936_zoom_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *tmap, int flags, UINT32 priority, int glfgreat_hack);
void k053936_wraparound_enable(device_t *device, int status); // shall we merge this into the configuration intf?
void k053936_set_offset(device_t *device, int xoffs, int yoffs); // shall we merge this into the configuration intf?
@@ -579,8 +580,9 @@ WRITE8_DEVICE_HANDLER( k056832_w );
WRITE8_DEVICE_HANDLER( k056832_b_w );
void k056832_mark_plane_dirty(device_t *device, int num);
void k056832_mark_all_tmaps_dirty(device_t *device);
-void k056832_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
-void k056832_tilemap_draw_dj(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority);
+void k056832_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
+void k056832_tilemap_draw(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
+void k056832_tilemap_draw_dj(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority);
void k056832_set_layer_association(device_t *device, int status);
int k056832_get_layer_association(device_t *device);
void k056832_set_layer_offs(device_t *device, int layer, int offsx, int offsy);
@@ -691,8 +693,8 @@ WRITE16_DEVICE_HANDLER( k054338_word_w ); // "CLCT" registers
WRITE32_DEVICE_HANDLER( k054338_long_w );
int k054338_register_r(device_t *device, int reg);
void k054338_update_all_shadows(device_t *device, int rushingheroes_hack); // called at the beginning of SCREEN_UPDATE()
-void k054338_fill_solid_bg(device_t *device, bitmap_t &bitmap); // solid backcolor fill
-void k054338_fill_backcolor(device_t *device, bitmap_t &bitmap, int mode); // unified fill, 0=solid, 1=gradient (by using a k055555)
+void k054338_fill_solid_bg(device_t *device, bitmap_ind16 &bitmap); // solid backcolor fill
+void k054338_fill_backcolor(device_t *device, bitmap_rgb32 &bitmap, int mode); // unified fill, 0=solid, 1=gradient (by using a k055555)
int k054338_set_alpha_level(device_t *device, int pblend); // blend style 0-2
void k054338_invert_alpha(device_t *device, int invert); // 0=0x00(invis)-0x1f(solid), 1=0x1f(invis)-0x00(solod)
//void K054338_export_config(device_t *device, int **shdRGB);
@@ -720,7 +722,7 @@ WRITE32_DEVICE_HANDLER( k001006_w );
/** Konami 001005 **/
-void k001005_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+void k001005_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
void k001005_swap_buffers(device_t *device);
void k001005_preprocess_texture_data(UINT8 *rom, int length, int gticlub);
@@ -729,8 +731,8 @@ WRITE32_DEVICE_HANDLER( k001005_w );
/** Konami 001604 **/
-void k001604_draw_back_layer( device_t *device, bitmap_t &bitmap, const rectangle &cliprect );
-void k001604_draw_front_layer( device_t *device, bitmap_t &bitmap, const rectangle &cliprect );
+void k001604_draw_back_layer( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect );
+void k001604_draw_front_layer( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect );
WRITE32_DEVICE_HANDLER( k001604_tile_w );
READ32_DEVICE_HANDLER( k001604_tile_r );
WRITE32_DEVICE_HANDLER( k001604_char_w );
@@ -740,7 +742,7 @@ READ32_DEVICE_HANDLER( k001604_reg_r );
/** Konami 037122 **/
-void k037122_tile_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect );
+void k037122_tile_draw( device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect );
READ32_DEVICE_HANDLER( k037122_sram_r );
WRITE32_DEVICE_HANDLER( k037122_sram_w );
READ32_DEVICE_HANDLER( k037122_char_r );
diff --git a/src/mame/video/kopunch.c b/src/mame/video/kopunch.c
index 18a54bd2d7e..4f412a4cce4 100644
--- a/src/mame/video/kopunch.c
+++ b/src/mame/video/kopunch.c
@@ -97,7 +97,7 @@ VIDEO_START( kopunch )
tilemap_set_scrolldx(state->m_bg_tilemap, 16, 16);
}
-SCREEN_UPDATE( kopunch )
+SCREEN_UPDATE_IND16( kopunch )
{
kopunch_state *state = screen.machine().driver_data<kopunch_state>();
diff --git a/src/mame/video/ksayakyu.c b/src/mame/video/ksayakyu.c
index 2221cf4644a..2285acab010 100644
--- a/src/mame/video/ksayakyu.c
+++ b/src/mame/video/ksayakyu.c
@@ -81,7 +81,7 @@ static TILE_GET_INFO( get_text_tile_info )
[3]
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ksayakyu_state *state = machine.driver_data<ksayakyu_state>();
const UINT8 *source = state->m_spriteram + state->m_spriteram_size - 4;
@@ -124,7 +124,7 @@ VIDEO_START(ksayakyu)
tilemap_set_transparent_pen(state->m_textmap, 0);
}
-SCREEN_UPDATE(ksayakyu)
+SCREEN_UPDATE_IND16(ksayakyu)
{
ksayakyu_state *state = screen.machine().driver_data<ksayakyu_state>();
diff --git a/src/mame/video/kyugo.c b/src/mame/video/kyugo.c
index 60894f91d94..a48cff64019 100644
--- a/src/mame/video/kyugo.c
+++ b/src/mame/video/kyugo.c
@@ -160,7 +160,7 @@ WRITE8_HANDLER( kyugo_flipscreen_w )
*
*************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
kyugo_state *state = machine.driver_data<kyugo_state>();
@@ -220,7 +220,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( kyugo )
+SCREEN_UPDATE_IND16( kyugo )
{
kyugo_state *state = screen.machine().driver_data<kyugo_state>();
diff --git a/src/mame/video/labyrunr.c b/src/mame/video/labyrunr.c
index df257ccb0d0..d7d914e032b 100644
--- a/src/mame/video/labyrunr.c
+++ b/src/mame/video/labyrunr.c
@@ -180,7 +180,7 @@ WRITE8_HANDLER( labyrunr_vram2_w )
***************************************************************************/
-SCREEN_UPDATE( labyrunr )
+SCREEN_UPDATE_IND16( labyrunr )
{
labyrunr_state *state = screen.machine().driver_data<labyrunr_state>();
UINT8 ctrl_0 = k007121_ctrlram_r(state->m_k007121, 0);
diff --git a/src/mame/video/ladybug.c b/src/mame/video/ladybug.c
index afd37d2adb8..7c2b4fc9248 100644
--- a/src/mame/video/ladybug.c
+++ b/src/mame/video/ladybug.c
@@ -231,7 +231,7 @@ VIDEO_START( sraider )
tilemap_set_transparent_pen(state->m_bg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ladybug_state *state = machine.driver_data<ladybug_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -282,7 +282,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( ladybug )
+SCREEN_UPDATE_IND16( ladybug )
{
ladybug_state *state = screen.machine().driver_data<ladybug_state>();
int offs;
@@ -311,7 +311,7 @@ SCREEN_EOF( sraider ) /* update starfield position */
redclash_update_stars_state(screen.machine());
}
-SCREEN_UPDATE( sraider )
+SCREEN_UPDATE_IND16( sraider )
{
ladybug_state *state = screen.machine().driver_data<ladybug_state>();
diff --git a/src/mame/video/ladyfrog.c b/src/mame/video/ladyfrog.c
index 8a81e31629d..beba5998472 100644
--- a/src/mame/video/ladyfrog.c
+++ b/src/mame/video/ladyfrog.c
@@ -103,7 +103,7 @@ WRITE8_HANDLER( ladyfrog_scrlram_w )
tilemap_set_scrolly(state->m_bg_tilemap, offset, data);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ladyfrog_state *state = machine.driver_data<ladyfrog_state>();
int i;
@@ -173,7 +173,7 @@ VIDEO_START( toucheme )
}
-SCREEN_UPDATE( ladyfrog )
+SCREEN_UPDATE_IND16( ladyfrog )
{
ladyfrog_state *state = screen.machine().driver_data<ladyfrog_state>();
diff --git a/src/mame/video/lasso.c b/src/mame/video/lasso.c
index 30f77db4d34..6a8536d087b 100644
--- a/src/mame/video/lasso.c
+++ b/src/mame/video/lasso.c
@@ -272,7 +272,7 @@ WRITE8_HANDLER( pinbo_video_control_w )
*
*************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int reverse )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int reverse )
{
lasso_state *state = machine.driver_data<lasso_state>();
const UINT8 *finish, *source;
@@ -326,7 +326,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_lasso( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_lasso( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lasso_state *state = machine.driver_data<lasso_state>();
offs_t offs;
@@ -367,7 +367,7 @@ static void draw_lasso( running_machine &machine, bitmap_t &bitmap, const rectan
}
-SCREEN_UPDATE( lasso )
+SCREEN_UPDATE_IND16( lasso )
{
lasso_state *state = screen.machine().driver_data<lasso_state>();
palette_set_color(screen.machine(), 0, get_color(*state->m_back_color));
@@ -380,7 +380,7 @@ SCREEN_UPDATE( lasso )
return 0;
}
-SCREEN_UPDATE( chameleo )
+SCREEN_UPDATE_IND16( chameleo )
{
lasso_state *state = screen.machine().driver_data<lasso_state>();
palette_set_color(screen.machine(), 0, get_color(*state->m_back_color));
@@ -393,7 +393,7 @@ SCREEN_UPDATE( chameleo )
}
-SCREEN_UPDATE( wwjgtin )
+SCREEN_UPDATE_IND16( wwjgtin )
{
lasso_state *state = screen.machine().driver_data<lasso_state>();
colortable_palette_set_color(screen.machine().colortable, 0, get_color(*state->m_back_color));
diff --git a/src/mame/video/lastduel.c b/src/mame/video/lastduel.c
index 0ad5ebc1501..3b5eed35573 100644
--- a/src/mame/video/lastduel.c
+++ b/src/mame/video/lastduel.c
@@ -218,7 +218,7 @@ WRITE16_HANDLER( lastduel_palette_word_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
lastduel_state *state = machine.driver_data<lastduel_state>();
@@ -269,7 +269,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( lastduel )
+SCREEN_UPDATE_IND16( lastduel )
{
lastduel_state *state = screen.machine().driver_data<lastduel_state>();
@@ -282,7 +282,7 @@ SCREEN_UPDATE( lastduel )
return 0;
}
-SCREEN_UPDATE( madgear )
+SCREEN_UPDATE_IND16( madgear )
{
lastduel_state *state = screen.machine().driver_data<lastduel_state>();
diff --git a/src/mame/video/lazercmd.c b/src/mame/video/lazercmd.c
index b1d36c79311..4f9015c01f7 100644
--- a/src/mame/video/lazercmd.c
+++ b/src/mame/video/lazercmd.c
@@ -24,7 +24,7 @@ static int vert_scale(int data)
/* plot a bitmap marker */
/* hardware has 2 marker sizes 2x2 and 4x2 selected by jumper */
/* meadows lanes normaly use 2x2 pixels and lazer command uses either */
-static void plot_pattern( running_machine &machine, bitmap_t &bitmap, int x, int y )
+static void plot_pattern( running_machine &machine, bitmap_ind16 &bitmap, int x, int y )
{
int xbit, ybit, size;
@@ -50,7 +50,7 @@ static void plot_pattern( running_machine &machine, bitmap_t &bitmap, int x, int
}
-SCREEN_UPDATE( lazercmd )
+SCREEN_UPDATE_IND16( lazercmd )
{
lazercmd_state *state = screen.machine().driver_data<lazercmd_state>();
int i, x, y;
diff --git a/src/mame/video/legionna.c b/src/mame/video/legionna.c
index ee6b9dc1f4c..e3b22e1e002 100644
--- a/src/mame/video/legionna.c
+++ b/src/mame/video/legionna.c
@@ -251,7 +251,7 @@ VIDEO_START(godzilla)
*************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
legionna_state *state = machine.driver_data<legionna_state>();
UINT16 *spriteram16 = machine.generic.spriteram.u16;
@@ -415,7 +415,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
#define LAYER_DB 0
-SCREEN_UPDATE( legionna )
+SCREEN_UPDATE_IND16( legionna )
{
legionna_state *state = screen.machine().driver_data<legionna_state>();
/* Setup the tilemaps */
@@ -445,7 +445,7 @@ SCREEN_UPDATE( legionna )
}
-SCREEN_UPDATE( godzilla )
+SCREEN_UPDATE_IND16( godzilla )
{
legionna_state *state = screen.machine().driver_data<legionna_state>();
// tilemap_set_scrollx( state->m_text_layer, 0, 0 );
@@ -474,7 +474,7 @@ SCREEN_UPDATE( godzilla )
return 0;
}
-SCREEN_UPDATE( grainbow )
+SCREEN_UPDATE_IND16( grainbow )
{
legionna_state *state = screen.machine().driver_data<legionna_state>();
/* Setup the tilemaps */
diff --git a/src/mame/video/leland.c b/src/mame/video/leland.c
index 80edd9646d5..3f389180710 100644
--- a/src/mame/video/leland.c
+++ b/src/mame/video/leland.c
@@ -388,7 +388,7 @@ READ8_HANDLER( ataxx_svram_port_r )
*
*************************************/
-static SCREEN_UPDATE( leland )
+static SCREEN_UPDATE_IND16( leland )
{
leland_state *state = screen.machine().driver_data<leland_state>();
int y;
@@ -457,7 +457,7 @@ static SCREEN_UPDATE( leland )
*
*************************************/
-static SCREEN_UPDATE( ataxx )
+static SCREEN_UPDATE_IND16( ataxx )
{
leland_state *state = screen.machine().driver_data<leland_state>();
int y;
@@ -531,16 +531,15 @@ MACHINE_CONFIG_FRAGMENT( leland_video )
MCFG_PALETTE_LENGTH(1024)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_UPDATE(leland)
+ MCFG_SCREEN_UPDATE_STATIC(leland)
MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( ataxx_video, leland_video )
MCFG_VIDEO_START(ataxx)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE(ataxx)
+ MCFG_SCREEN_UPDATE_STATIC(ataxx)
MACHINE_CONFIG_END
diff --git a/src/mame/video/lemmings.c b/src/mame/video/lemmings.c
index 2d37685f806..2011f984140 100644
--- a/src/mame/video/lemmings.c
+++ b/src/mame/video/lemmings.c
@@ -15,7 +15,7 @@
#include "emu.h"
#include "includes/lemmings.h"
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 *spritedata, int gfxbank, UINT16 pri )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 *spritedata, int gfxbank, UINT16 pri )
{
int offs;
@@ -87,7 +87,7 @@ static TILE_GET_INFO( get_tile_info )
VIDEO_START( lemmings )
{
lemmings_state *state = machine.driver_data<lemmings_state>();
- state->m_bitmap0 = auto_bitmap_alloc(machine, 2048, 256, machine.primary_screen->format());
+ state->m_bitmap0 = auto_bitmap_ind16_alloc(machine, 2048, 256);
state->m_vram_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_cols, 8, 8, 64, 32);
state->m_vram_buffer = auto_alloc_array(machine, UINT8, 2048 * 64); /* 64 bytes per VRAM character */
@@ -166,7 +166,7 @@ WRITE16_HANDLER( lemmings_vram_w )
tilemap_mark_tile_dirty(state->m_vram_tilemap, offset);
}
-SCREEN_UPDATE( lemmings )
+SCREEN_UPDATE_IND16( lemmings )
{
lemmings_state *state = screen.machine().driver_data<lemmings_state>();
int x1 = -state->m_control_data[0];
diff --git a/src/mame/video/lethal.c b/src/mame/video/lethal.c
index aae186f8c33..fa1140c2a56 100644
--- a/src/mame/video/lethal.c
+++ b/src/mame/video/lethal.c
@@ -102,7 +102,7 @@ WRITE8_HANDLER(lethalen_palette_control)
}
}
-SCREEN_UPDATE(lethalen)
+SCREEN_UPDATE_IND16(lethalen)
{
lethal_state *state = screen.machine().driver_data<lethal_state>();
diff --git a/src/mame/video/lethalj.c b/src/mame/video/lethalj.c
index 75a44750767..1f20f4d06f9 100644
--- a/src/mame/video/lethalj.c
+++ b/src/mame/video/lethalj.c
@@ -171,7 +171,7 @@ WRITE16_HANDLER( lethalj_blitter_w )
*
*************************************/
-void lethalj_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void lethalj_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
lethalj_state *state = screen.machine().driver_data<lethalj_state>();
UINT16 *src = &state->m_screenram[(state->m_vispage << 17) | ((params->rowaddr << 9) & 0x3fe00)];
diff --git a/src/mame/video/liberate.c b/src/mame/video/liberate.c
index 87e6d808847..f2465640149 100644
--- a/src/mame/video/liberate.c
+++ b/src/mame/video/liberate.c
@@ -14,7 +14,7 @@
#include "includes/liberate.h"
#if 0
-void debug_print(bitmap_t &bitmap)
+void debug_print(bitmap_ind16 &bitmap)
{
int i, j;
char buf[20 * 16];
@@ -290,7 +290,7 @@ PALETTE_INIT( liberate )
/***************************************************************************/
-static void liberate_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void liberate_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
liberate_state *state = machine.driver_data<liberate_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -359,7 +359,7 @@ static void liberate_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void prosport_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void prosport_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
liberate_state *state = machine.driver_data<liberate_state>();
int offs, multi, fx, fy, sx, sy, sy2, code, code2, color, gfx_region;
@@ -424,7 +424,7 @@ static void prosport_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void boomrang_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void boomrang_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
liberate_state *state = machine.driver_data<liberate_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -485,7 +485,7 @@ static void boomrang_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void prosoccr_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void prosoccr_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
liberate_state *state = machine.driver_data<liberate_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -512,7 +512,7 @@ static void prosoccr_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
/***************************************************************************/
-SCREEN_UPDATE( prosoccr )
+SCREEN_UPDATE_IND16( prosoccr )
{
liberate_state *state = screen.machine().driver_data<liberate_state>();
tilemap_set_scrolly(state->m_back_tilemap, 0, state->m_io_ram[1]);
@@ -529,7 +529,7 @@ SCREEN_UPDATE( prosoccr )
return 0;
}
-SCREEN_UPDATE( prosport )
+SCREEN_UPDATE_IND16( prosport )
{
liberate_state *state = screen.machine().driver_data<liberate_state>();
UINT8 *videoram = state->m_videoram;
@@ -573,7 +573,7 @@ SCREEN_UPDATE( prosport )
return 0;
}
-SCREEN_UPDATE( boomrang )
+SCREEN_UPDATE_IND16( boomrang )
{
liberate_state *state = screen.machine().driver_data<liberate_state>();
tilemap_set_scrolly(state->m_back_tilemap, 0, state->m_io_ram[1]);
@@ -593,7 +593,7 @@ SCREEN_UPDATE( boomrang )
return 0;
}
-SCREEN_UPDATE( liberate )
+SCREEN_UPDATE_IND16( liberate )
{
liberate_state *state = screen.machine().driver_data<liberate_state>();
tilemap_set_scrolly(state->m_back_tilemap, 0, state->m_io_ram[1]);
diff --git a/src/mame/video/liberatr.c b/src/mame/video/liberatr.c
index 08187d1d4f6..8467edd48b4 100644
--- a/src/mame/video/liberatr.c
+++ b/src/mame/video/liberatr.c
@@ -243,7 +243,7 @@ void liberatr_state::get_pens(pen_t *pens)
}
-void liberatr_state::draw_planet(bitmap_t &bitmap, pen_t *pens)
+void liberatr_state::draw_planet(bitmap_rgb32 &bitmap, pen_t *pens)
{
UINT8 latitude;
@@ -279,7 +279,7 @@ void liberatr_state::draw_planet(bitmap_t &bitmap, pen_t *pens)
}
-void liberatr_state::draw_bitmap(bitmap_t &bitmap, pen_t *pens)
+void liberatr_state::draw_bitmap(bitmap_rgb32 &bitmap, pen_t *pens)
{
offs_t offs;
@@ -296,7 +296,7 @@ void liberatr_state::draw_bitmap(bitmap_t &bitmap, pen_t *pens)
}
-bool liberatr_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 liberatr_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
pen_t pens[NUM_PENS];
get_pens(pens);
@@ -305,5 +305,5 @@ bool liberatr_state::screen_update(screen_device &screen, bitmap_t &bitmap, cons
draw_planet(bitmap, pens);
draw_bitmap(bitmap, pens);
- return false;
+ return 0;
}
diff --git a/src/mame/video/lkage.c b/src/mame/video/lkage.c
index 46a87c15b69..aa87013e3d4 100644
--- a/src/mame/video/lkage.c
+++ b/src/mame/video/lkage.c
@@ -104,7 +104,7 @@ VIDEO_START( lkage )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lkage_state *state = machine.driver_data<lkage_state>();
const UINT8 *source = state->m_spriteram;
@@ -172,7 +172,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( lkage )
+SCREEN_UPDATE_IND16( lkage )
{
lkage_state *state = screen.machine().driver_data<lkage_state>();
int bank;
diff --git a/src/mame/video/lockon.c b/src/mame/video/lockon.c
index 7a81d12ff50..f86ee773122 100644
--- a/src/mame/video/lockon.c
+++ b/src/mame/video/lockon.c
@@ -698,7 +698,7 @@ do { \
if (carry) --CNT; \
} while(0)
-static void rotate_draw( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void rotate_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lockon_state *state = machine.driver_data<lockon_state>();
UINT32 y;
@@ -803,7 +803,7 @@ static void rotate_draw( running_machine &machine, bitmap_t &bitmap, const recta
*******************************************************************************************/
-static void hud_draw( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void hud_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lockon_state *state = machine.driver_data<lockon_state>();
UINT8 *tile_rom = machine.region("gfx3")->base();
@@ -911,8 +911,8 @@ VIDEO_START( lockon )
tilemap_set_transparent_pen(state->m_tilemap, 0);
/* Allocate the two frame buffers for rotation */
- state->m_back_buffer = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
- state->m_front_buffer = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
+ state->m_back_buffer = auto_bitmap_ind16_alloc(machine, 512, 512);
+ state->m_front_buffer = auto_bitmap_ind16_alloc(machine, 512, 512);
/* 2kB of object ASIC palette RAM */
state->m_obj_pal_ram = auto_alloc_array(machine, UINT8, 2048);
@@ -929,7 +929,7 @@ VIDEO_START( lockon )
state->save_pointer(NAME(state->m_obj_pal_ram), 2048);
}
-SCREEN_UPDATE( lockon )
+SCREEN_UPDATE_IND16( lockon )
{
lockon_state *state = screen.machine().driver_data<lockon_state>();
@@ -957,7 +957,7 @@ SCREEN_EOF( lockon )
lockon_state *state = screen.machine().driver_data<lockon_state>();
/* Swap the frame buffers */
- bitmap_t *tmp = state->m_front_buffer;
+ bitmap_ind16 *tmp = state->m_front_buffer;
state->m_front_buffer = state->m_back_buffer;
state->m_back_buffer = tmp;
diff --git a/src/mame/video/lordgun.c b/src/mame/video/lordgun.c
index 8edf37097df..12e2e88bb22 100644
--- a/src/mame/video/lordgun.c
+++ b/src/mame/video/lordgun.c
@@ -136,7 +136,7 @@ VIDEO_START( lordgun )
// Buffer bitmaps for 4 tilemaps (0-3) + sprites (4)
for (i = 0; i < 5; i++)
- state->m_bitmaps[i] = auto_bitmap_alloc(machine, w, h, BITMAP_FORMAT_INDEXED16);
+ state->m_bitmaps[i] = auto_bitmap_ind16_alloc(machine, w, h);
}
/***************************************************************************
@@ -243,7 +243,7 @@ void lordgun_update_gun(running_machine &machine, int i)
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
lordgun_state *state = machine.driver_data<lordgun_state>();
UINT16 *s = state->m_spriteram;
@@ -325,7 +325,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( lordgun )
+SCREEN_UPDATE_IND16( lordgun )
{
lordgun_state *state = screen.machine().driver_data<lordgun_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/lsasquad.c b/src/mame/video/lsasquad.c
index edd6a8f9b40..bb726382fa6 100644
--- a/src/mame/video/lsasquad.c
+++ b/src/mame/video/lsasquad.c
@@ -1,7 +1,7 @@
#include "emu.h"
#include "includes/lsasquad.h"
-static void draw_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *scrollram )
+static void draw_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *scrollram )
{
lsasquad_state *state = machine.driver_data<lsasquad_state>();
int offs, scrollx, scrolly;
@@ -48,7 +48,7 @@ static void draw_layer( running_machine &machine, bitmap_t &bitmap, const rectan
}
}
-static int draw_layer_daikaiju( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int offs, int * previd, int type )
+static int draw_layer_daikaiju( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int * previd, int type )
{
lsasquad_state *state = machine.driver_data<lsasquad_state>();
int id, scrollx, scrolly, initoffs, globalscrollx;
@@ -138,7 +138,7 @@ static int draw_layer_daikaiju( running_machine &machine, bitmap_t &bitmap, cons
return offs;
}
-static void drawbg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int type )
+static void drawbg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int type )
{
lsasquad_state *state = machine.driver_data<lsasquad_state>();
int i = 0;
@@ -158,7 +158,7 @@ static void drawbg( running_machine &machine, bitmap_t &bitmap, const rectangle
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lsasquad_state *state = machine.driver_data<lsasquad_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -198,7 +198,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( lsasquad )
+SCREEN_UPDATE_IND16( lsasquad )
{
lsasquad_state *state = screen.machine().driver_data<lsasquad_state>();
bitmap.fill(511, cliprect);
@@ -211,7 +211,7 @@ SCREEN_UPDATE( lsasquad )
}
-SCREEN_UPDATE( daikaiju )
+SCREEN_UPDATE_IND16( daikaiju )
{
bitmap.fill(511, cliprect);
drawbg(screen.machine(), bitmap, cliprect, 0); // bottom
diff --git a/src/mame/video/lucky74.c b/src/mame/video/lucky74.c
index 914ca2e571e..914a5c985d2 100644
--- a/src/mame/video/lucky74.c
+++ b/src/mame/video/lucky74.c
@@ -241,7 +241,7 @@ VIDEO_START( lucky74 )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-SCREEN_UPDATE( lucky74 )
+SCREEN_UPDATE_IND16( lucky74 )
{
lucky74_state *state = screen.machine().driver_data<lucky74_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/lvcards.c b/src/mame/video/lvcards.c
index 1a9f51ef1fa..9d176c7ee9b 100644
--- a/src/mame/video/lvcards.c
+++ b/src/mame/video/lvcards.c
@@ -112,7 +112,7 @@ VIDEO_START( lvcards )
8, 8, 32, 32);
}
-SCREEN_UPDATE( lvcards )
+SCREEN_UPDATE_IND16( lvcards )
{
lvcards_state *state = screen.machine().driver_data<lvcards_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/lwings.c b/src/mame/video/lwings.c
index 01a2cc45fdd..f769e424abd 100644
--- a/src/mame/video/lwings.c
+++ b/src/mame/video/lwings.c
@@ -184,7 +184,7 @@ INLINE int is_sprite_on( UINT8 *buffered_spriteram, int offs )
return sx || sy;
}
-static void lwings_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void lwings_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
int offs;
@@ -220,7 +220,7 @@ static void lwings_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void trojan_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void trojan_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
lwings_state *state = machine.driver_data<lwings_state>();
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
@@ -269,7 +269,7 @@ static void trojan_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-SCREEN_UPDATE( lwings )
+SCREEN_UPDATE_IND16( lwings )
{
lwings_state *state = screen.machine().driver_data<lwings_state>();
@@ -279,7 +279,7 @@ SCREEN_UPDATE( lwings )
return 0;
}
-SCREEN_UPDATE( trojan )
+SCREEN_UPDATE_IND16( trojan )
{
lwings_state *state = screen.machine().driver_data<lwings_state>();
diff --git a/src/mame/video/m10.c b/src/mame/video/m10.c
index e5b3bceb626..46564237940 100644
--- a/src/mame/video/m10.c
+++ b/src/mame/video/m10.c
@@ -92,7 +92,7 @@ WRITE8_HANDLER( m15_chargen_w )
}
-INLINE void plot_pixel_m10( running_machine &machine, bitmap_t &bm, int x, int y, int col )
+INLINE void plot_pixel_m10( running_machine &machine, bitmap_ind16 &bm, int x, int y, int col )
{
m10_state *state = machine.driver_data<m10_state>();
@@ -133,11 +133,11 @@ VIDEO_START( m15 )
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-SCREEN_UPDATE( m10 )
+SCREEN_UPDATE_IND16( m10 )
{
m10_state *state = screen.machine().driver_data<m10_state>();
int offs;
@@ -173,11 +173,11 @@ SCREEN_UPDATE( m10 )
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-SCREEN_UPDATE( m15 )
+SCREEN_UPDATE_IND16( m15 )
{
m10_state *state = screen.machine().driver_data<m10_state>();
int offs;
diff --git a/src/mame/video/m107.c b/src/mame/video/m107.c
index dea733b64e2..f36bbab12c3 100644
--- a/src/mame/video/m107.c
+++ b/src/mame/video/m107.c
@@ -150,7 +150,7 @@ VIDEO_START( m107 )
/*****************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m107_state *state = machine.driver_data<m107_state>();
UINT16 *spriteram = state->m_buffered_spriteram;
@@ -313,7 +313,7 @@ static void m107_update_scroll_positions(running_machine &machine)
/*****************************************************************************/
-static void m107_tilemap_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int laynum, int category,int opaque)
+static void m107_tilemap_draw(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int laynum, int category,int opaque)
{
m107_state *state = machine.driver_data<m107_state>();
int line;
@@ -342,7 +342,7 @@ static void m107_tilemap_draw(running_machine &machine, bitmap_t &bitmap, const
}
-static void m107_screenrefresh(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void m107_screenrefresh(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m107_state *state = machine.driver_data<m107_state>();
machine.priority_bitmap.fill(0, cliprect);
@@ -388,7 +388,7 @@ WRITE16_HANDLER( m107_spritebuffer_w )
/*****************************************************************************/
-SCREEN_UPDATE( m107 )
+SCREEN_UPDATE_IND16( m107 )
{
m107_update_scroll_positions(screen.machine());
m107_screenrefresh(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/m3raster.c b/src/mame/video/m3raster.c
index 28b69c06857..0bf8ab3a1e7 100644
--- a/src/mame/video/m3raster.c
+++ b/src/mame/video/m3raster.c
@@ -2,7 +2,7 @@ static void draw_scanline_normal(void *dest, INT32 scanline, const poly_extent *
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
const cached_texture *texture = extra->texture;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *p = &destmap->pix16(scanline);
UINT32 *d = &extra->zbuffer->pix32(scanline);
float ooz = extent->param[0].start;
@@ -51,7 +51,7 @@ static void draw_scanline_trans(void *dest, INT32 scanline, const poly_extent *e
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
const cached_texture *texture = extra->texture;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *p = &destmap->pix16(scanline);
UINT32 *d = &extra->zbuffer->pix32(scanline);
float ooz = extent->param[0].start;
@@ -106,7 +106,7 @@ static void draw_scanline_alpha(void *dest, INT32 scanline, const poly_extent *e
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
const cached_texture *texture = extra->texture;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *p = &destmap->pix16(scanline);
UINT32 *d = &extra->zbuffer->pix32(scanline);
float ooz = extent->param[0].start;
@@ -167,7 +167,7 @@ static void draw_scanline_alpha_test(void *dest, INT32 scanline, const poly_exte
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
const cached_texture *texture = extra->texture;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *p = &destmap->pix16(scanline);
UINT32 *d = &extra->zbuffer->pix32(scanline);
float ooz = extent->param[0].start;
@@ -226,7 +226,7 @@ static void draw_scanline_alpha_test(void *dest, INT32 scanline, const poly_exte
static void draw_scanline_color(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
UINT16 *p = &destmap->pix16(scanline);
UINT32 *d = &extra->zbuffer->pix32(scanline);
float ooz = extent->param[0].start;
diff --git a/src/mame/video/m52.c b/src/mame/video/m52.c
index ef8e26e3489..fc24a252bef 100644
--- a/src/mame/video/m52.c
+++ b/src/mame/video/m52.c
@@ -303,7 +303,7 @@ WRITE8_HANDLER( alpha1v_flipscreen_w )
*
*************************************/
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int xpos, int ypos, int image)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int xpos, int ypos, int image)
{
rectangle rect;
const rectangle &visarea = machine.primary_screen->visible_area();
@@ -360,7 +360,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
*
*************************************/
-SCREEN_UPDATE( m52 )
+SCREEN_UPDATE_IND16( m52 )
{
m52_state *state = screen.machine().driver_data<m52_state>();
int offs;
diff --git a/src/mame/video/m57.c b/src/mame/video/m57.c
index ebb05d89952..935b8e3a4f8 100644
--- a/src/mame/video/m57.c
+++ b/src/mame/video/m57.c
@@ -177,7 +177,7 @@ WRITE8_HANDLER( m57_flipscreen_w )
*
*************************************/
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m57_state *state = machine.driver_data<m57_state>();
int y,x;
@@ -221,7 +221,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m57_state *state = machine.driver_data<m57_state>();
int offs;
@@ -267,7 +267,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-SCREEN_UPDATE( m57 )
+SCREEN_UPDATE_IND16( m57 )
{
draw_background(screen.machine(), bitmap, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/m58.c b/src/mame/video/m58.c
index f8db6468d8a..1135c4a7e64 100644
--- a/src/mame/video/m58.c
+++ b/src/mame/video/m58.c
@@ -182,14 +182,13 @@ VIDEO_START( yard )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- bitmap_format format = machine.primary_screen->format();
const rectangle &visarea = machine.primary_screen->visible_area();
state->m_bg_tilemap = tilemap_create(machine, yard_get_bg_tile_info, yard_tilemap_scan_rows, 8, 8, 64, 32);
tilemap_set_scrolldx(state->m_bg_tilemap, visarea.min_x, width - (visarea.max_x + 1));
tilemap_set_scrolldy(state->m_bg_tilemap, visarea.min_y - 8, height + 16 - (visarea.max_y + 1));
- state->m_scroll_panel_bitmap = auto_bitmap_alloc(machine, SCROLL_PANEL_WIDTH, height, format);
+ state->m_scroll_panel_bitmap = auto_bitmap_ind16_alloc(machine, SCROLL_PANEL_WIDTH, height);
}
@@ -219,7 +218,7 @@ WRITE8_HANDLER( yard_flipscreen_w )
#define DRAW_SPRITE(code, sy) drawgfx_transmask(bitmap, cliprect, machine.gfx[1], code, color, flipx, flipy, sx, sy, colortable_get_transpen_mask(machine.colortable, machine.gfx[1], color, 512));
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
m58_state *state = machine.driver_data<m58_state>();
int offs;
@@ -274,7 +273,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-static void draw_panel( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_panel( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
m58_state *state = machine.driver_data<m58_state>();
@@ -304,7 +303,7 @@ static void draw_panel( running_machine &machine, bitmap_t &bitmap, const rectan
*
*************************************/
-SCREEN_UPDATE( yard )
+SCREEN_UPDATE_IND16( yard )
{
m58_state *state = screen.machine().driver_data<m58_state>();
diff --git a/src/mame/video/m62.c b/src/mame/video/m62.c
index 1d0e5a06cc7..478c0a08dd0 100644
--- a/src/mame/video/m62.c
+++ b/src/mame/video/m62.c
@@ -353,7 +353,7 @@ WRITE8_HANDLER( m62_textram_w )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority )
{
m62_state *state = machine.driver_data<m62_state>();
int offs;
@@ -472,7 +472,7 @@ VIDEO_START( kungfum )
m62_start(machine, get_kungfum_bg_tile_info, 32, 0, 8, 8, 64, 32);
}
-SCREEN_UPDATE( kungfum )
+SCREEN_UPDATE_IND16( kungfum )
{
m62_state *state = screen.machine().driver_data<m62_state>();
int i;
@@ -521,7 +521,7 @@ VIDEO_START( ldrun )
tilemap_set_transmask(state->m_bg_tilemap, 1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
-SCREEN_UPDATE( ldrun )
+SCREEN_UPDATE_IND16( ldrun )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll);
@@ -569,10 +569,10 @@ WRITE8_HANDLER( ldrun3_topbottom_mask_w )
state->m_ldrun3_topbottom_mask = data & 1;
}
-SCREEN_UPDATE( ldrun3 )
+SCREEN_UPDATE_IND16( ldrun3 )
{
m62_state *state = screen.machine().driver_data<m62_state>();
- SCREEN_UPDATE_CALL(ldrun);
+ SCREEN_UPDATE16_CALL(ldrun);
if (state->m_ldrun3_topbottom_mask)
{
@@ -630,7 +630,7 @@ VIDEO_START( battroad )
tilemap_set_transmask(state->m_bg_tilemap, 1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
-SCREEN_UPDATE( battroad )
+SCREEN_UPDATE_IND16( battroad )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll);
@@ -665,7 +665,7 @@ VIDEO_START( ldrun4 )
m62_start(machine, get_ldrun4_bg_tile_info, 1, 0, 8, 8, 64, 32);
}
-SCREEN_UPDATE( ldrun4 )
+SCREEN_UPDATE_IND16( ldrun4 )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll - 2);
@@ -708,7 +708,7 @@ VIDEO_START( lotlot )
m62_textlayer(machine, get_lotlot_fg_tile_info, 1, 1, 12, 10, 32, 64);
}
-SCREEN_UPDATE( lotlot )
+SCREEN_UPDATE_IND16( lotlot )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll - 64);
@@ -780,7 +780,7 @@ VIDEO_START( kidniki )
m62_textlayer(machine, get_kidniki_fg_tile_info, 1, 1, 12, 8, 32, 64);
}
-SCREEN_UPDATE( kidniki )
+SCREEN_UPDATE_IND16( kidniki )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll);
@@ -834,7 +834,7 @@ VIDEO_START( spelunkr )
m62_textlayer(machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32);
}
-SCREEN_UPDATE( spelunkr )
+SCREEN_UPDATE_IND16( spelunkr )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll);
@@ -879,7 +879,7 @@ VIDEO_START( spelunk2 )
m62_textlayer(machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32);
}
-SCREEN_UPDATE( spelunk2 )
+SCREEN_UPDATE_IND16( spelunk2 )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll - 1);
@@ -928,7 +928,7 @@ VIDEO_START( youjyudn )
tilemap_set_transmask(state->m_bg_tilemap, 1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
-SCREEN_UPDATE( youjyudn )
+SCREEN_UPDATE_IND16( youjyudn )
{
m62_state *state = screen.machine().driver_data<m62_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_m62_background_hscroll);
@@ -973,7 +973,7 @@ VIDEO_START( horizon )
tilemap_set_transmask(state->m_bg_tilemap, 1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
-SCREEN_UPDATE( horizon )
+SCREEN_UPDATE_IND16( horizon )
{
m62_state *state = screen.machine().driver_data<m62_state>();
int i;
diff --git a/src/mame/video/m72.c b/src/mame/video/m72.c
index 93a7fb2b9df..d2c1f6da0b5 100644
--- a/src/mame/video/m72.c
+++ b/src/mame/video/m72.c
@@ -430,7 +430,7 @@ WRITE16_HANDLER( majtitle_gfx_ctrl_w )
***************************************************************************/
-static void m72_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void m72_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m72_state *state = machine.driver_data<m72_state>();
UINT16 *spriteram = state->m_buffered_spriteram;
@@ -484,7 +484,7 @@ static void m72_draw_sprites(running_machine &machine, bitmap_t &bitmap,const re
}
}
-static void majtitle_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void majtitle_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m72_state *state = machine.driver_data<m72_state>();
UINT16 *spriteram16_2 = state->m_spriteram2;
@@ -535,7 +535,7 @@ static void majtitle_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
}
}
-SCREEN_UPDATE( m72 )
+SCREEN_UPDATE_IND16( m72 )
{
m72_state *state = screen.machine().driver_data<m72_state>();
if (state->m_video_off)
@@ -558,7 +558,7 @@ SCREEN_UPDATE( m72 )
return 0;
}
-SCREEN_UPDATE( majtitle )
+SCREEN_UPDATE_IND16( majtitle )
{
m72_state *state = screen.machine().driver_data<m72_state>();
int i;
diff --git a/src/mame/video/m90.c b/src/mame/video/m90.c
index 6dfa4ae5f24..4ca817ed7af 100644
--- a/src/mame/video/m90.c
+++ b/src/mame/video/m90.c
@@ -139,7 +139,7 @@ VIDEO_START( dynablsb )
state_save_register_global_array(machine, state->m_video_control_data);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m90_state *state = machine.driver_data<m90_state>();
UINT16 *spriteram = state->m_video_data + 0xee00/2;;
@@ -193,7 +193,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-static void bomblord_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void bomblord_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m90_state *state = machine.driver_data<m90_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -233,7 +233,7 @@ static void bomblord_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
}
}
-static void dynablsb_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void dynablsb_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m90_state *state = machine.driver_data<m90_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -297,7 +297,7 @@ WRITE16_HANDLER( m90_video_w )
markdirty(state->m_pf2_wide_layer,state->m_video_control_data[6] & 0x2,offset);
}
-SCREEN_UPDATE( m90 )
+SCREEN_UPDATE_IND16( m90 )
{
m90_state *state = screen.machine().driver_data<m90_state>();
UINT8 pf1_base = state->m_video_control_data[5] & 0x3;
@@ -463,7 +463,7 @@ SCREEN_UPDATE( m90 )
return 0;
}
-SCREEN_UPDATE( bomblord )
+SCREEN_UPDATE_IND16( bomblord )
{
m90_state *state = screen.machine().driver_data<m90_state>();
int i;
@@ -516,7 +516,7 @@ SCREEN_UPDATE( bomblord )
return 0;
}
-SCREEN_UPDATE( dynablsb )
+SCREEN_UPDATE_IND16( dynablsb )
{
m90_state *state = screen.machine().driver_data<m90_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/m92.c b/src/mame/video/m92.c
index 08c714f4832..e0bc5d464a4 100644
--- a/src/mame/video/m92.c
+++ b/src/mame/video/m92.c
@@ -323,7 +323,7 @@ VIDEO_START( ppan )
/*****************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m92_state *state = machine.driver_data<m92_state>();
UINT16 *source = machine.generic.buffered_spriteram.u16;
@@ -397,7 +397,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
// This needs a lot of work...
-static void ppan_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void ppan_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m92_state *state = machine.driver_data<m92_state>();
UINT16 *source = machine.generic.spriteram.u16; // sprite buffer control is never triggered
@@ -521,7 +521,7 @@ static void m92_update_scroll_positions(running_machine &machine)
/*****************************************************************************/
-static void m92_draw_tiles(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void m92_draw_tiles(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m92_state *state = machine.driver_data<m92_state>();
@@ -545,7 +545,7 @@ static void m92_draw_tiles(running_machine &machine, bitmap_t &bitmap,const rect
}
-SCREEN_UPDATE( m92 )
+SCREEN_UPDATE_IND16( m92 )
{
screen.machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect);
@@ -562,7 +562,7 @@ SCREEN_UPDATE( m92 )
return 0;
}
-SCREEN_UPDATE( ppan )
+SCREEN_UPDATE_IND16( ppan )
{
screen.machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect);
diff --git a/src/mame/video/macrossp.c b/src/mame/video/macrossp.c
index 7773dacfc21..0db495d3a45 100644
--- a/src/mame/video/macrossp.c
+++ b/src/mame/video/macrossp.c
@@ -173,7 +173,7 @@ VIDEO_START( macrossp )
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int priority )
{
macrossp_state *state = machine.driver_data<macrossp_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -320,7 +320,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer )
+static void draw_layer( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer )
{
macrossp_state *state = machine.driver_data<macrossp_state>();
tilemap_t *tm;
@@ -387,7 +387,7 @@ static void sortlayers(int *layer,int *pri)
SWAP(1,2)
}
-SCREEN_UPDATE( macrossp )
+SCREEN_UPDATE_RGB32( macrossp )
{
macrossp_state *state = screen.machine().driver_data<macrossp_state>();
int layers[3],layerpri[3];
diff --git a/src/mame/video/madalien.c b/src/mame/video/madalien.c
index f9ef99928b4..3b4967d0650 100644
--- a/src/mame/video/madalien.c
+++ b/src/mame/video/madalien.c
@@ -151,7 +151,7 @@ static VIDEO_START( madalien )
tilemap_set_scrolldy(state->m_tilemap_edge2[i], 0, machine.primary_screen->height() - 256);
}
- state->m_headlight_bitmap = auto_bitmap_alloc(machine, 128, 128, BITMAP_FORMAT_INDEXED16);
+ state->m_headlight_bitmap = auto_bitmap_ind16_alloc(machine, 128, 128);
gfx_element_set_source(machine.gfx[0], state->m_charram);
@@ -160,7 +160,7 @@ static VIDEO_START( madalien )
}
-static void draw_edges(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int flip, int scroll_mode)
+static void draw_edges(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip, int scroll_mode)
{
madalien_state *state = machine.driver_data<madalien_state>();
rectangle clip_edge1;
@@ -199,7 +199,7 @@ static void draw_edges(running_machine &machine, bitmap_t &bitmap, const rectang
}
-static void draw_headlight(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int flip)
+static void draw_headlight(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip)
{
madalien_state *state = machine.driver_data<madalien_state>();
if (BIT(*state->m_video_flags, 0))
@@ -235,7 +235,7 @@ static void draw_headlight(running_machine &machine, bitmap_t &bitmap, const rec
}
-static void draw_foreground(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int flip)
+static void draw_foreground(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip)
{
madalien_state *state = machine.driver_data<madalien_state>();
tilemap_set_flip(state->m_tilemap_fg, flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
@@ -251,7 +251,7 @@ WRITE8_HANDLER( madalien_charram_w )
}
-static SCREEN_UPDATE( madalien )
+static SCREEN_UPDATE_IND16( madalien )
{
madalien_state *state = screen.machine().driver_data<madalien_state>();
int flip = BIT(input_port_read(screen.machine(), "DSW"), 6) && BIT(*state->m_video_control, 0);
@@ -398,8 +398,7 @@ static const mc6845_interface mc6845_intf =
MACHINE_CONFIG_FRAGMENT( madalien_video )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 336, 0, 256, 288, 0, 256)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_UPDATE(madalien)
+ MCFG_SCREEN_UPDATE_STATIC(madalien)
MCFG_GFXDECODE(madalien)
MCFG_PALETTE_LENGTH(0x30)
diff --git a/src/mame/video/madmotor.c b/src/mame/video/madmotor.c
index f24ed78d0cd..2bdc5b5eb80 100644
--- a/src/mame/video/madmotor.c
+++ b/src/mame/video/madmotor.c
@@ -22,7 +22,7 @@ VIDEO_START( madmotor )
/******************************************************************************/
-SCREEN_UPDATE( madmotor )
+SCREEN_UPDATE_IND16( madmotor )
{
madmotor_state *state = screen.machine().driver_data<madmotor_state>();
flip_screen_set(screen.machine(), screen.machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
diff --git a/src/mame/video/magmax.c b/src/mame/video/magmax.c
index a58c585f1ba..ea105f98a65 100644
--- a/src/mame/video/magmax.c
+++ b/src/mame/video/magmax.c
@@ -71,6 +71,8 @@ VIDEO_START( magmax )
state_save_register_global(machine, state->m_flipscreen);
state->m_prom_tab = auto_alloc_array(machine, UINT32, 256);
+
+ state->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
/* Allocate temporary bitmap */
for (i=0; i<256; i++)
@@ -82,7 +84,7 @@ VIDEO_START( magmax )
-SCREEN_UPDATE( magmax )
+SCREEN_UPDATE_IND16( magmax )
{
magmax_state *state = screen.machine().driver_data<magmax_state>();
UINT16 *videoram = state->m_videoram;
@@ -103,7 +105,7 @@ SCREEN_UPDATE( magmax )
UINT32 scroll_v = (*state->m_scroll_y) & 0xff;
/*clear background-over-sprites bitmap*/
- screen.default_bitmap().fill(0);
+ state->m_bitmap.fill(0);
for (v = 2*8; v < 30*8; v++) /*only for visible area*/
{
@@ -154,7 +156,7 @@ SCREEN_UPDATE( magmax )
/*priority: background over sprites*/
if (map_v_scr_100 && ((graph_data & 0x0c)==0x0c))
- screen.default_bitmap().pix16(v, h) = line_data[h];
+ state->m_bitmap.pix16(v, h) = line_data[h];
}
if (state->m_flipscreen)
@@ -209,7 +211,7 @@ SCREEN_UPDATE( magmax )
}
if (!(*state->m_vreg & 0x40)) /* background disable */
- copybitmap_trans(bitmap, screen.default_bitmap(), state->m_flipscreen,state->m_flipscreen,0,0, cliprect, 0);
+ copybitmap_trans(bitmap, state->m_bitmap, state->m_flipscreen,state->m_flipscreen,0,0, cliprect, 0);
/* draw the foreground characters */
for (offs = 32*32-1; offs >= 0; offs -= 1)
diff --git a/src/mame/video/mainevt.c b/src/mame/video/mainevt.c
index f726be0fd63..b44b842ca11 100644
--- a/src/mame/video/mainevt.c
+++ b/src/mame/video/mainevt.c
@@ -93,7 +93,7 @@ VIDEO_START( dv )
/*****************************************************************************/
-SCREEN_UPDATE( mainevt )
+SCREEN_UPDATE_IND16( mainevt )
{
mainevt_state *state = screen.machine().driver_data<mainevt_state>();
@@ -109,7 +109,7 @@ SCREEN_UPDATE( mainevt )
return 0;
}
-SCREEN_UPDATE( dv )
+SCREEN_UPDATE_IND16( dv )
{
mainevt_state *state = screen.machine().driver_data<mainevt_state>();
diff --git a/src/mame/video/mainsnk.c b/src/mame/video/mainsnk.c
index 0a99dc9b40b..577bf35078d 100644
--- a/src/mame/video/mainsnk.c
+++ b/src/mame/video/mainsnk.c
@@ -125,7 +125,7 @@ WRITE8_HANDLER( mainsnk_bgram_w )
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int scrollx, int scrolly )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int scrollx, int scrolly )
{
mainsnk_state *state = machine.driver_data<mainsnk_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -168,7 +168,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE(mainsnk)
+SCREEN_UPDATE_IND16(mainsnk)
{
mainsnk_state *state = screen.machine().driver_data<mainsnk_state>();
diff --git a/src/mame/video/malzak.c b/src/mame/video/malzak.c
index 29216eb7771..22bc234411f 100644
--- a/src/mame/video/malzak.c
+++ b/src/mame/video/malzak.c
@@ -18,7 +18,7 @@
#include "includes/malzak.h"
-SCREEN_UPDATE( malzak )
+SCREEN_UPDATE_IND16( malzak )
{
malzak_state *state = screen.machine().driver_data<malzak_state>();
int sx, sy;
@@ -45,8 +45,8 @@ SCREEN_UPDATE( malzak )
}
/* update the S2636 chips */
- bitmap_t &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
- bitmap_t &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
/* copy the S2636 images into the main bitmap */
{
diff --git a/src/mame/video/mappy.c b/src/mame/video/mappy.c
index 53f17b44d84..c1bc7eaadb1 100644
--- a/src/mame/video/mappy.c
+++ b/src/mame/video/mappy.c
@@ -323,7 +323,7 @@ VIDEO_START( superpac )
mappy_state *state = machine.driver_data<mappy_state>();
state->m_bg_tilemap = tilemap_create(machine, superpac_get_tile_info,superpac_tilemap_scan,8,8,36,28);
- state->m_sprite_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_sprite_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
colortable_configure_tilemap_groups(machine.colortable, state->m_bg_tilemap, machine.gfx[0], 31);
}
@@ -399,7 +399,7 @@ WRITE8_HANDLER( mappy_scroll_w )
***************************************************************************/
-static void mappy_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
+static void mappy_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
{
UINT8 *spriteram = spriteram_base + 0x780;
UINT8 *spriteram_2 = spriteram + 0x800;
@@ -479,7 +479,7 @@ spriteram_3
1 -------x X position MSB
*/
-static void phozon_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
+static void phozon_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
{
UINT8 *spriteram = spriteram_base + 0x780;
UINT8 *spriteram_2 = spriteram + 0x800;
@@ -537,27 +537,27 @@ static void phozon_draw_sprites(running_machine &machine, bitmap_t &bitmap, cons
}
-SCREEN_UPDATE( superpac )
+SCREEN_UPDATE_IND16( superpac )
{
mappy_state *state = screen.machine().driver_data<mappy_state>();
- bitmap_t *sprite_bitmap = state->m_sprite_bitmap;
+ bitmap_ind16 &sprite_bitmap = state->m_sprite_bitmap;
int x,y;
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES,0);
- sprite_bitmap->fill(15, cliprect);
- mappy_draw_sprites(screen.machine(),*sprite_bitmap,cliprect,state->m_spriteram);
- copybitmap_trans(bitmap,*sprite_bitmap,0,0,0,0,cliprect,15);
+ sprite_bitmap.fill(15, cliprect);
+ mappy_draw_sprites(screen.machine(),sprite_bitmap,cliprect,state->m_spriteram);
+ copybitmap_trans(bitmap,sprite_bitmap,0,0,0,0,cliprect,15);
/* Redraw the high priority characters */
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,1,0);
/* sprite color 0/1 still has priority over that (ghost eyes in Pac 'n Pal) */
- for (y = 0;y < sprite_bitmap->height();y++)
+ for (y = 0;y < sprite_bitmap.height();y++)
{
- for (x = 0;x < sprite_bitmap->width();x++)
+ for (x = 0;x < sprite_bitmap.width();x++)
{
- int spr_entry = sprite_bitmap->pix16(y, x);
+ int spr_entry = sprite_bitmap.pix16(y, x);
int spr_pen = colortable_entry_get_value(screen.machine().colortable, spr_entry);
if (spr_pen == 0 || spr_pen == 1)
bitmap.pix16(y, x) = spr_entry;
@@ -566,7 +566,7 @@ SCREEN_UPDATE( superpac )
return 0;
}
-SCREEN_UPDATE( phozon )
+SCREEN_UPDATE_IND16( phozon )
{
mappy_state *state = screen.machine().driver_data<mappy_state>();
@@ -582,7 +582,7 @@ SCREEN_UPDATE( phozon )
return 0;
}
-SCREEN_UPDATE( mappy )
+SCREEN_UPDATE_IND16( mappy )
{
mappy_state *state = screen.machine().driver_data<mappy_state>();
int offs;
diff --git a/src/mame/video/marineb.c b/src/mame/video/marineb.c
index 40727246831..49e96218e4e 100644
--- a/src/mame/video/marineb.c
+++ b/src/mame/video/marineb.c
@@ -177,7 +177,7 @@ static void set_tilemap_scrolly( running_machine &machine, int cols )
}
-SCREEN_UPDATE( marineb )
+SCREEN_UPDATE_IND16( marineb )
{
marineb_state *state = screen.machine().driver_data<marineb_state>();
int offs;
@@ -239,7 +239,7 @@ SCREEN_UPDATE( marineb )
}
-SCREEN_UPDATE( changes )
+SCREEN_UPDATE_IND16( changes )
{
marineb_state *state = screen.machine().driver_data<marineb_state>();
int offs, sx, sy, code, col, flipx, flipy;
@@ -318,7 +318,7 @@ SCREEN_UPDATE( changes )
}
-SCREEN_UPDATE( springer )
+SCREEN_UPDATE_IND16( springer )
{
marineb_state *state = screen.machine().driver_data<marineb_state>();
int offs;
@@ -378,7 +378,7 @@ SCREEN_UPDATE( springer )
}
-SCREEN_UPDATE( hoccer )
+SCREEN_UPDATE_IND16( hoccer )
{
marineb_state *state = screen.machine().driver_data<marineb_state>();
int offs;
@@ -422,7 +422,7 @@ SCREEN_UPDATE( hoccer )
}
-SCREEN_UPDATE( hopprobo )
+SCREEN_UPDATE_IND16( hopprobo )
{
marineb_state *state = screen.machine().driver_data<marineb_state>();
int offs;
diff --git a/src/mame/video/mario.c b/src/mame/video/mario.c
index 77d771fada2..de02b3a4e87 100644
--- a/src/mame/video/mario.c
+++ b/src/mame/video/mario.c
@@ -161,7 +161,7 @@ VIDEO_START( mario )
* confirmed on mametests.org as being present on real PCB as well.
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* TODO: draw_sprites should adopt the scanline logic from dkong.c
* The schematics have the same logic for sprite buffering.
@@ -208,7 +208,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( mario )
+SCREEN_UPDATE_IND16( mario )
{
mario_state *state = screen.machine().driver_data<mario_state>();
int t;
diff --git a/src/mame/video/markham.c b/src/mame/video/markham.c
index 16104d5102c..c1e0cc09f9c 100644
--- a/src/mame/video/markham.c
+++ b/src/mame/video/markham.c
@@ -73,7 +73,7 @@ VIDEO_START( markham )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
markham_state *state = machine.driver_data<markham_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -117,7 +117,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( markham )
+SCREEN_UPDATE_IND16( markham )
{
markham_state *state = screen.machine().driver_data<markham_state>();
int i;
diff --git a/src/mame/video/matmania.c b/src/mame/video/matmania.c
index 8f8410b6dba..9a84e44bcfb 100644
--- a/src/mame/video/matmania.c
+++ b/src/mame/video/matmania.c
@@ -118,16 +118,15 @@ VIDEO_START( matmania )
matmania_state *state = machine.driver_data<matmania_state>();
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- bitmap_format format = machine.primary_screen->format();
/* Mat Mania has a virtual screen twice as large as the visible screen */
- state->m_tmpbitmap = auto_bitmap_alloc(machine, width, 2 * height, format);
- state->m_tmpbitmap2 = auto_bitmap_alloc(machine, width, 2 * height, format);
+ state->m_tmpbitmap = auto_bitmap_ind16_alloc(machine, width, 2 * height);
+ state->m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine, width, 2 * height);
}
-SCREEN_UPDATE( matmania )
+SCREEN_UPDATE_IND16( matmania )
{
matmania_state *state = screen.machine().driver_data<matmania_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -199,7 +198,7 @@ SCREEN_UPDATE( matmania )
return 0;
}
-SCREEN_UPDATE( maniach )
+SCREEN_UPDATE_IND16( maniach )
{
matmania_state *state = screen.machine().driver_data<matmania_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/mcatadv.c b/src/mame/video/mcatadv.c
index 5e4c7b53820..16289228c26 100644
--- a/src/mame/video/mcatadv.c
+++ b/src/mame/video/mcatadv.c
@@ -53,7 +53,7 @@ WRITE16_HANDLER( mcatadv_videoram2_w )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mcatadv_state *state = machine.driver_data<mcatadv_state>();
UINT16 *source = state->m_spriteram_old;
@@ -156,7 +156,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void mcatadv_draw_tilemap_part( UINT16* current_scroll, UINT16* current_videoram1, int i, tilemap_t* current_tilemap, bitmap_t &bitmap, const rectangle &cliprect )
+static void mcatadv_draw_tilemap_part( UINT16* current_scroll, UINT16* current_videoram1, int i, tilemap_t* current_tilemap, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int flip;
UINT32 drawline;
@@ -200,7 +200,7 @@ static void mcatadv_draw_tilemap_part( UINT16* current_scroll, UINT16* current_v
}
}
-SCREEN_UPDATE( mcatadv )
+SCREEN_UPDATE_IND16( mcatadv )
{
mcatadv_state *state = screen.machine().driver_data<mcatadv_state>();
int i;
diff --git a/src/mame/video/mcd212.c b/src/mame/video/mcd212.c
index d7071574c40..35a729a4240 100644
--- a/src/mame/video/mcd212.c
+++ b/src/mame/video/mcd212.c
@@ -87,7 +87,7 @@ static const UINT16 cdi220_lcd_char[20*22] =
static void cdi220_draw_lcd(running_machine &machine, int y)
{
cdi_state *state = machine.driver_data<cdi_state>();
- bitmap_t &bitmap = *state->m_lcdbitmap;
+ bitmap_rgb32 &bitmap = state->m_lcdbitmap;
UINT32 *scanline = &bitmap.pix32(y);
int x = 0;
int lcd = 0;
@@ -1331,8 +1331,7 @@ static void mcd212_draw_cursor(mcd212_regs_t *mcd212, UINT32 *scanline, int y)
static void mcd212_draw_scanline(mcd212_regs_t *mcd212, int y)
{
- running_machine &machine = mcd212->machine();
- bitmap_t &bitmap = machine.primary_screen->default_bitmap();
+ bitmap_rgb32 &bitmap = mcd212->m_bitmap;
UINT8 plane_a_r[768], plane_a_g[768], plane_a_b[768];
UINT8 plane_b_r[768], plane_b_g[768], plane_b_b[768];
UINT32 out[768];
@@ -1512,6 +1511,7 @@ TIMER_CALLBACK( mcd212_perform_scan )
void mcd212_init(running_machine &machine, mcd212_regs_t *mcd212)
{
mcd212->m_machine = &machine;
+ mcd212->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
int index = 0;
for(index = 0; index < 2; index++)
@@ -1657,18 +1657,20 @@ VIDEO_START( cdimono1 )
state->m_mcd212_regs.scan_timer = machine.scheduler().timer_alloc(FUNC(mcd212_perform_scan));
state->m_mcd212_regs.scan_timer->adjust(machine.primary_screen->time_until_pos(0, 0));
- state->m_lcdbitmap = downcast<screen_device *>(machine.device("lcd"))->alloc_compatible_bitmap();
+ screen_device *screen = downcast<screen_device *>(machine.device("lcd"));
+ state->m_lcdbitmap.allocate(screen->width(), screen->height());
}
-SCREEN_UPDATE( cdimono1 )
+SCREEN_UPDATE_RGB32( cdimono1 )
{
- copybitmap(bitmap, screen.default_bitmap(), 0, 0, 0, 0, cliprect);
+ cdi_state *state = screen.machine().driver_data<cdi_state>();
+ copybitmap(bitmap, state->m_mcd212_regs.m_bitmap, 0, 0, 0, 0, cliprect);
return 0;
}
-SCREEN_UPDATE( cdimono1_lcd )
+SCREEN_UPDATE_RGB32( cdimono1_lcd )
{
cdi_state *state = screen.machine().driver_data<cdi_state>();
- copybitmap(bitmap, *state->m_lcdbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_lcdbitmap, 0, 0, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/mcd212.h b/src/mame/video/mcd212.h
index 2d3d86a5130..99f4e9260d3 100644
--- a/src/mame/video/mcd212.h
+++ b/src/mame/video/mcd212.h
@@ -70,6 +70,7 @@ typedef struct
UINT8 region_flag_1[768];
running_machine *m_machine;
+ bitmap_rgb32 m_bitmap;
} mcd212_regs_t;
#define MCD212_CURCNT_COLOR 0x00000f // Cursor color
@@ -189,7 +190,7 @@ READ16_HANDLER( mcd212_r );
WRITE16_HANDLER( mcd212_w );
TIMER_CALLBACK( mcd212_perform_scan );
VIDEO_START( cdimono1 );
-SCREEN_UPDATE( cdimono1 );
-SCREEN_UPDATE( cdimono1_lcd );
+SCREEN_UPDATE_RGB32( cdimono1 );
+SCREEN_UPDATE_RGB32( cdimono1_lcd );
#endif // _VIDEO_MCD212_H_
diff --git a/src/mame/video/mcr.c b/src/mame/video/mcr.c
index edf77cfd056..a4c62aaa5fb 100644
--- a/src/mame/video/mcr.c
+++ b/src/mame/video/mcr.c
@@ -255,7 +255,7 @@ WRITE8_HANDLER( mcr_91490_videoram_w )
*
*************************************/
-static void render_sprites_91399(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void render_sprites_91399(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 *spriteram = machine.generic.spriteram.u8;
const gfx_element *gfx = machine.gfx[1];
@@ -327,7 +327,7 @@ static void render_sprites_91399(running_machine &machine, bitmap_t &bitmap, con
*
*************************************/
-static void render_sprites_91464(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int primask, int sprmask, int colormask)
+static void render_sprites_91464(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int sprmask, int colormask)
{
UINT8 *spriteram = machine.generic.spriteram.u8;
const gfx_element *gfx = machine.gfx[1];
@@ -401,7 +401,7 @@ static void render_sprites_91464(running_machine &machine, bitmap_t &bitmap, con
*
*************************************/
-SCREEN_UPDATE( mcr )
+SCREEN_UPDATE_IND16( mcr )
{
/* update the flip state */
tilemap_set_flip(bg_tilemap, mcr_cocktail_flip ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0);
diff --git a/src/mame/video/mcr3.c b/src/mame/video/mcr3.c
index 62570bc7876..fa86e922650 100644
--- a/src/mame/video/mcr3.c
+++ b/src/mame/video/mcr3.c
@@ -205,7 +205,7 @@ WRITE8_HANDLER( spyhunt_scroll_value_w )
*
*************************************/
-static void mcr3_update_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int color_mask, int code_xor, int dx, int dy)
+static void mcr3_update_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int color_mask, int code_xor, int dx, int dy)
{
mcr3_state *state = machine.driver_data<mcr3_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -280,7 +280,7 @@ static void mcr3_update_sprites(running_machine &machine, bitmap_t &bitmap, cons
*
*************************************/
-SCREEN_UPDATE( mcr3 )
+SCREEN_UPDATE_IND16( mcr3 )
{
mcr3_state *state = screen.machine().driver_data<mcr3_state>();
/* update the flip state */
@@ -295,7 +295,7 @@ SCREEN_UPDATE( mcr3 )
}
-SCREEN_UPDATE( spyhunt )
+SCREEN_UPDATE_IND16( spyhunt )
{
mcr3_state *state = screen.machine().driver_data<mcr3_state>();
/* for every character in the Video RAM, check if it has been modified */
diff --git a/src/mame/video/mcr68.c b/src/mame/video/mcr68.c
index 2399cbef31d..abf375c55d3 100644
--- a/src/mame/video/mcr68.c
+++ b/src/mame/video/mcr68.c
@@ -212,7 +212,7 @@ WRITE16_HANDLER( zwackery_spriteram_w )
*
*************************************/
-static void mcr68_update_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void mcr68_update_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
mcr68_state *state = machine.driver_data<mcr68_state>();
rectangle sprite_clip = machine.primary_screen->visible_area();
@@ -266,7 +266,7 @@ static void mcr68_update_sprites(running_machine &machine, bitmap_t &bitmap, con
}
-static void zwackery_update_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void zwackery_update_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
mcr68_state *state = machine.driver_data<mcr68_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -331,7 +331,7 @@ static void zwackery_update_sprites(running_machine &machine, bitmap_t &bitmap,
*
*************************************/
-SCREEN_UPDATE( mcr68 )
+SCREEN_UPDATE_IND16( mcr68 )
{
mcr68_state *state = screen.machine().driver_data<mcr68_state>();
/* draw the background */
@@ -349,7 +349,7 @@ SCREEN_UPDATE( mcr68 )
}
-SCREEN_UPDATE( zwackery )
+SCREEN_UPDATE_IND16( zwackery )
{
mcr68_state *state = screen.machine().driver_data<mcr68_state>();
/* draw the background */
diff --git a/src/mame/video/meadows.c b/src/mame/video/meadows.c
index 2ccc00e66e2..a76eca1e2d8 100644
--- a/src/mame/video/meadows.c
+++ b/src/mame/video/meadows.c
@@ -78,7 +78,7 @@ WRITE8_HANDLER( meadows_spriteram_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &clip)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &clip)
{
meadows_state *state = machine.driver_data<meadows_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -105,7 +105,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-SCREEN_UPDATE( meadows )
+SCREEN_UPDATE_IND16( meadows )
{
meadows_state *state = screen.machine().driver_data<meadows_state>();
/* draw the background */
diff --git a/src/mame/video/megasys1.c b/src/mame/video/megasys1.c
index eca41d86311..8c04c614748 100644
--- a/src/mame/video/megasys1.c
+++ b/src/mame/video/megasys1.c
@@ -567,7 +567,7 @@ WRITE16_HANDLER( megasys1_vregs_D_w )
0C Y position
0E Code */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
megasys1_state *state = machine.driver_data<megasys1_state>();
int color,code,sx,sy,flipx,flipy,attr,sprite,offs,color_mask;
@@ -920,11 +920,11 @@ PALETTE_INIT( megasys1 )
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-SCREEN_UPDATE( megasys1 )
+SCREEN_UPDATE_IND16( megasys1 )
{
megasys1_state *state = screen.machine().driver_data<megasys1_state>();
int i,flag,pri,primask;
diff --git a/src/mame/video/megazone.c b/src/mame/video/megazone.c
index 3871153fec5..d07f7495798 100644
--- a/src/mame/video/megazone.c
+++ b/src/mame/video/megazone.c
@@ -105,13 +105,13 @@ WRITE8_HANDLER( megazone_flipscreen_w )
VIDEO_START( megazone )
{
megazone_state *state = machine.driver_data<megazone_state>();
- state->m_tmpbitmap = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
+ state->m_tmpbitmap = auto_bitmap_ind16_alloc(machine, 256, 256);
state->save_item(NAME(*state->m_tmpbitmap));
}
-SCREEN_UPDATE( megazone )
+SCREEN_UPDATE_IND16( megazone )
{
megazone_state *state = screen.machine().driver_data<megazone_state>();
int offs;
diff --git a/src/mame/video/mermaid.c b/src/mame/video/mermaid.c
index b9782ef5eae..bcf55924457 100644
--- a/src/mame/video/mermaid.c
+++ b/src/mame/video/mermaid.c
@@ -184,11 +184,11 @@ VIDEO_START( mermaid )
tilemap_set_scroll_cols(state->m_fg_tilemap, 32);
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
const rectangle spritevisiblearea(0 * 8, 26 * 8 - 1, 2 * 8, 30 * 8 - 1);
const rectangle flip_spritevisiblearea(6 * 8, 31 * 8 - 1, 2 * 8, 30 * 8 - 1);
@@ -230,7 +230,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( mermaid )
+SCREEN_UPDATE_IND16( mermaid )
{
mermaid_state *state = screen.machine().driver_data<mermaid_state>();
@@ -251,8 +251,8 @@ static UINT8 collision_check( running_machine &machine, rectangle& rect )
for (y = rect.min_y; y <= rect.max_y; y++)
for (x = rect.min_x; x <= rect.max_x; x++)
{
- UINT16 a = colortable_entry_get_value(machine.colortable, state->m_helper->pix16(y, x)) & 0x3f;
- UINT16 b = colortable_entry_get_value(machine.colortable, state->m_helper2->pix16(y, x)) & 0x3f;
+ UINT16 a = colortable_entry_get_value(machine.colortable, state->m_helper.pix16(y, x)) & 0x3f;
+ UINT16 b = colortable_entry_get_value(machine.colortable, state->m_helper2.pix16(y, x)) & 0x3f;
if (b)
if (a)
@@ -324,30 +324,30 @@ SCREEN_EOF( mermaid )
// check collision sprite - background
- state->m_helper->fill(0, rect);
- state->m_helper2->fill(0, rect);
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- tilemap_draw(*state->m_helper, rect, state->m_bg_tilemap, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
- drawgfx_transpen(*state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
state->m_coll_bit2 |= collision_check(screen.machine(), rect);
// check collision sprite - foreground
- state->m_helper->fill(0, rect);
- state->m_helper2->fill(0, rect);
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- tilemap_draw(*state->m_helper, rect, state->m_fg_tilemap, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_fg_tilemap, 0, 0);
- drawgfx_transpen(*state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
state->m_coll_bit1 |= collision_check(screen.machine(), rect);
// check collision sprite - sprite
- state->m_helper->fill(0, rect);
- state->m_helper2->fill(0, rect);
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
if (offs != offs2)
@@ -378,10 +378,10 @@ SCREEN_EOF( mermaid )
sy2 = 240 - sy2;
}
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- drawgfx_transpen(*state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
state->m_coll_bit0 |= collision_check(screen.machine(), rect);
}
@@ -434,8 +434,8 @@ SCREEN_EOF( mermaid )
// check collision sprite - sprite
- state->m_helper->fill(0, rect);
- state->m_helper2->fill(0, rect);
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
if (offs != offs2)
@@ -466,10 +466,10 @@ SCREEN_EOF( mermaid )
sy2 = 240 - sy2;
}
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- drawgfx_transpen(*state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
state->m_coll_bit3 |= collision_check(screen.machine(), rect);
}
@@ -522,8 +522,8 @@ SCREEN_EOF( mermaid )
// check collision sprite - sprite
- state->m_helper->fill(0, rect);
- state->m_helper2->fill(0, rect);
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
if (offs != offs2)
@@ -554,10 +554,10 @@ SCREEN_EOF( mermaid )
sy2 = 240 - sy2;
}
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- drawgfx_transpen(*state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
state->m_coll_bit6 |= collision_check(screen.machine(), rect);
}
diff --git a/src/mame/video/metlclsh.c b/src/mame/video/metlclsh.c
index ead7f1238ce..118448c43cd 100644
--- a/src/mame/video/metlclsh.c
+++ b/src/mame/video/metlclsh.c
@@ -174,7 +174,7 @@ VIDEO_START( metlclsh )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
metlclsh_state *state = machine.driver_data<metlclsh_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -242,7 +242,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( metlclsh )
+SCREEN_UPDATE_IND16( metlclsh )
{
metlclsh_state *state = screen.machine().driver_data<metlclsh_state>();
diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c
index fae93ea7926..603e87896ce 100644
--- a/src/mame/video/metro.c
+++ b/src/mame/video/metro.c
@@ -439,7 +439,7 @@ VIDEO_START( gstrik2 )
/* Draw sprites */
-void metro_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+void metro_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
metro_state *state = machine.driver_data<metro_state>();
UINT8 *base_gfx = machine.region("gfx1")->base();
@@ -590,13 +590,13 @@ void metro_draw_sprites( running_machine &machine, bitmap_t &bitmap, const recta
/* copy a 'window' from the large 2048x2048 (or 4096x4096 for 16x16 tiles) tilemap */
-static void draw_tilemap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 flags, UINT32 pcode,
+static void draw_tilemap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 flags, UINT32 pcode,
int sx, int sy, int wx, int wy, int big, UINT16* tilemapram, int layer )
{
metro_state *state = machine.driver_data<metro_state>();
int y;
- bitmap_t &priority_bitmap = machine.priority_bitmap;
+ bitmap_ind8 &priority_bitmap = machine.priority_bitmap;
int width = big ? 4096 : 2048;//pixdata->width;
int height = big ? 4096 : 2048;//pixdata->height;
@@ -687,7 +687,7 @@ static void draw_tilemap( running_machine &machine, bitmap_t &bitmap, const rect
}
/* Draw all the layers that match the given priority */
-static void draw_layers( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri, int layers_ctrl )
+static void draw_layers( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int layers_ctrl )
{
metro_state *state = machine.driver_data<metro_state>();
UINT16 layers_pri = state->m_videoregs[0x10 / 2];
@@ -721,7 +721,7 @@ static void draw_layers( running_machine &machine, bitmap_t &bitmap, const recta
-SCREEN_UPDATE( metro )
+SCREEN_UPDATE_IND16( metro )
{
metro_state *state = screen.machine().driver_data<metro_state>();
int pri, layers_ctrl = -1;
diff --git a/src/mame/video/mexico86.c b/src/mame/video/mexico86.c
index 95e5f9607b8..27a0fe51a38 100644
--- a/src/mame/video/mexico86.c
+++ b/src/mame/video/mexico86.c
@@ -16,7 +16,7 @@ WRITE8_HANDLER( mexico86_bankswitch_w )
-SCREEN_UPDATE( mexico86 )
+SCREEN_UPDATE_IND16( mexico86 )
{
mexico86_state *state = screen.machine().driver_data<mexico86_state>();
int offs;
@@ -99,7 +99,7 @@ SCREEN_UPDATE( mexico86 )
return 0;
}
-SCREEN_UPDATE( kikikai )
+SCREEN_UPDATE_IND16( kikikai )
{
mexico86_state *state = screen.machine().driver_data<mexico86_state>();
int offs;
diff --git a/src/mame/video/micro3d.c b/src/mame/video/micro3d.c
index 561a0c91b9f..88e2e95034b 100644
--- a/src/mame/video/micro3d.c
+++ b/src/mame/video/micro3d.c
@@ -64,7 +64,7 @@ VIDEO_RESET( micro3d )
*
*************************************/
-void micro3d_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void micro3d_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
micro3d_state *state = screen.machine().driver_data<micro3d_state>();
diff --git a/src/mame/video/midtunit.c b/src/mame/video/midtunit.c
index 4ff1f2a1163..6462701b6a3 100644
--- a/src/mame/video/midtunit.c
+++ b/src/mame/video/midtunit.c
@@ -802,7 +802,7 @@ skipdma:
*
*************************************/
-void midtunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void midtunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
UINT16 *src = &local_videoram[(params->rowaddr << 9) & 0x3fe00];
UINT16 *dest = &bitmap.pix16(scanline);
@@ -814,7 +814,7 @@ void midtunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanl
dest[x] = src[coladdr++ & 0x1ff] & 0x7fff;
}
-void midxunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void midxunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
UINT32 fulladdr = ((params->rowaddr << 16) | params->coladdr) >> 3;
UINT16 *src = &local_videoram[fulladdr & 0x3fe00];
diff --git a/src/mame/video/midvunit.c b/src/mame/video/midvunit.c
index 7e35ad51b7e..72ff00f93ec 100644
--- a/src/mame/video/midvunit.c
+++ b/src/mame/video/midvunit.c
@@ -525,7 +525,7 @@ READ32_HANDLER( midvunit_textureram_r )
*
*************************************/
-SCREEN_UPDATE( midvunit )
+SCREEN_UPDATE_IND16( midvunit )
{
midvunit_state *state = screen.machine().driver_data<midvunit_state>();
int x, y, width, xoffs;
diff --git a/src/mame/video/midyunit.c b/src/mame/video/midyunit.c
index d269afa4404..cbda71cfe15 100644
--- a/src/mame/video/midyunit.c
+++ b/src/mame/video/midyunit.c
@@ -552,7 +552,7 @@ static TIMER_CALLBACK( autoerase_line )
}
-void midyunit_scanline_update(screen_device &screen, bitmap_t &bitmap, int scanline, const tms34010_display_params *params)
+void midyunit_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
{
midyunit_state *state = screen.machine().driver_data<midyunit_state>();
UINT16 *src = &state->m_local_videoram[(params->rowaddr << 9) & 0x3fe00];
diff --git a/src/mame/video/midzeus.c b/src/mame/video/midzeus.c
index 9517acd8a73..beda196b90e 100644
--- a/src/mame/video/midzeus.c
+++ b/src/mame/video/midzeus.c
@@ -332,7 +332,7 @@ static void exit_handler(running_machine &machine)
*
*************************************/
-SCREEN_UPDATE( midzeus )
+SCREEN_UPDATE_IND16( midzeus )
{
int x, y;
diff --git a/src/mame/video/midzeus2.c b/src/mame/video/midzeus2.c
index b966d603401..06f7f813739 100644
--- a/src/mame/video/midzeus2.c
+++ b/src/mame/video/midzeus2.c
@@ -358,7 +358,7 @@ static void exit_handler(running_machine &machine)
*
*************************************/
-SCREEN_UPDATE( midzeus2 )
+SCREEN_UPDATE_RGB32( midzeus2 )
{
int x, y;
diff --git a/src/mame/video/mikie.c b/src/mame/video/mikie.c
index a74a68c1a25..a265a240651 100644
--- a/src/mame/video/mikie.c
+++ b/src/mame/video/mikie.c
@@ -145,7 +145,7 @@ VIDEO_START( mikie )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
mikie_state *state = machine.driver_data<mikie_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -175,7 +175,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( mikie )
+SCREEN_UPDATE_IND16( mikie )
{
mikie_state *state = screen.machine().driver_data<mikie_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_CATEGORY(0), 0);
diff --git a/src/mame/video/mitchell.c b/src/mame/video/mitchell.c
index 7db6d825f3e..57483f5a224 100644
--- a/src/mame/video/mitchell.c
+++ b/src/mame/video/mitchell.c
@@ -300,7 +300,7 @@ READ8_HANDLER( mgakuen_paletteram_r )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mitchell_state *state = machine.driver_data<mitchell_state>();
int offs, sx, sy;
@@ -328,7 +328,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( pang )
+SCREEN_UPDATE_IND16( pang )
{
mitchell_state *state = screen.machine().driver_data<mitchell_state>();
diff --git a/src/mame/video/mjkjidai.c b/src/mame/video/mjkjidai.c
index 3f5cf36b717..d4c1a77233b 100644
--- a/src/mame/video/mjkjidai.c
+++ b/src/mame/video/mjkjidai.c
@@ -87,7 +87,7 @@ WRITE8_HANDLER( mjkjidai_ctrl_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
mjkjidai_state *state = machine.driver_data<mjkjidai_state>();
UINT8 *spriteram = state->m_spriteram1;
@@ -129,7 +129,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
-SCREEN_UPDATE( mjkjidai )
+SCREEN_UPDATE_IND16( mjkjidai )
{
mjkjidai_state *state = screen.machine().driver_data<mjkjidai_state>();
if (!state->m_display_enable)
diff --git a/src/mame/video/model1.c b/src/mame/video/model1.c
index 0e328533632..d220cc64623 100644
--- a/src/mame/video/model1.c
+++ b/src/mame/video/model1.c
@@ -10,7 +10,7 @@
// Model 1 geometrizer TGP and rasterizer simulation
enum { FRAC_SHIFT = 16 };
-enum { MOIRE = 0x00010000 };
+enum { MOIRE = 0x01000000 };
@@ -135,18 +135,18 @@ static void project_point_direct(struct view *view, struct point *p)
}
-static void draw_hline(bitmap_t &bitmap, int x1, int x2, int y, int color)
+static void draw_hline(bitmap_rgb32 &bitmap, int x1, int x2, int y, int color)
{
- UINT16 *base = &bitmap.pix16(y);
+ UINT32 *base = &bitmap.pix32(y);
while(x1 <= x2) {
base[x1] = color;
x1++;
}
}
-static void draw_hline_moired(bitmap_t &bitmap, int x1, int x2, int y, int color)
+static void draw_hline_moired(bitmap_rgb32 &bitmap, int x1, int x2, int y, int color)
{
- UINT16 *base = &bitmap.pix16(y);
+ UINT32 *base = &bitmap.pix32(y);
while(x1 <= x2) {
if((x1^y)&1)
base[x1] = color;
@@ -154,7 +154,7 @@ static void draw_hline_moired(bitmap_t &bitmap, int x1, int x2, int y, int color
}
}
-static void fill_slope(bitmap_t &bitmap, struct view *view, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2)
+static void fill_slope(bitmap_rgb32 &bitmap, struct view *view, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2)
{
if(y1 > view->y2)
return;
@@ -214,7 +214,7 @@ static void fill_slope(bitmap_t &bitmap, struct view *view, int color, INT32 x1,
*nx2 = x2;
}
-static void fill_line(bitmap_t &bitmap, struct view *view, int color, INT32 y, INT32 x1, INT32 x2)
+static void fill_line(bitmap_rgb32 &bitmap, struct view *view, int color, INT32 y, INT32 x1, INT32 x2)
{
int xx1 = x1>>FRAC_SHIFT;
int xx2 = x2>>FRAC_SHIFT;
@@ -235,7 +235,7 @@ static void fill_line(bitmap_t &bitmap, struct view *view, int color, INT32 y, I
}
}
-static void fill_quad(bitmap_t &bitmap, struct view *view, const struct quad_m1 *q)
+static void fill_quad(bitmap_rgb32 &bitmap, struct view *view, const struct quad_m1 *q)
{
INT32 sl1, sl2, cury, limy, x1, x2;
int pmin, pmax, i, ps1, ps2;
@@ -336,7 +336,7 @@ static void fill_quad(bitmap_t &bitmap, struct view *view, const struct quad_m1
fill_line(bitmap, view, color, cury, x1, x2);
}
#if 0
-static void draw_line(bitmap_t &bitmap, struct view *view, int color, int x1, int y1, int x2, int y2)
+static void draw_line(bitmap_rgb32 &bitmap, struct view *view, int color, int x1, int y1, int x2, int y2)
{
int s1x, s1y, s2x, s2y;
int d1, d2;
@@ -385,7 +385,7 @@ static void draw_line(bitmap_t &bitmap, struct view *view, int color, int x1, in
cur = 0;
while(x != x2 || y != y2) {
if(x>=view->x1 && x<=view->x2 && y>=view->y1 && y<=view->y2)
- bitmap.pix16(y, x) = color;
+ bitmap.pix32(y, x) = color;
x += s1x;
y += s1y;
cur += d2;
@@ -433,7 +433,7 @@ static void unsort_quads(model1_state *state)
}
-static void draw_quads(model1_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_quads(model1_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
struct view *view = state->m_view;
int count = state->m_quadpt - state->m_quaddb;
@@ -913,7 +913,7 @@ static void push_object(running_machine &machine, UINT32 tex_adr, UINT32 poly_ad
r=(state->m_color_xlat[(r<<8)|lumval|0x0]>>3)&0x1f;
g=(state->m_color_xlat[(g<<8)|lumval|0x2000]>>3)&0x1f;
b=(state->m_color_xlat[(b<<8)|lumval|0x4000]>>3)&0x1f;
- cquad.col=(r<<10)|(g<<5)|(b<<0);
+ cquad.col=(pal5bit(r)<<16)|(pal5bit(g)<<8)|(pal5bit(b)<<0);
}
if(flags & 0x00002000)
@@ -1071,7 +1071,7 @@ static UINT16 *push_direct(model1_state *state, UINT16 *list)
r=(state->m_color_xlat[(r<<8)|lumval|0x0]>>3)&0x1f;
g=(state->m_color_xlat[(g<<8)|lumval|0x2000]>>3)&0x1f;
b=(state->m_color_xlat[(b<<8)|lumval|0x4000]>>3)&0x1f;
- cquad.col=(r<<10)|(g<<5)|(b<<0);
+ cquad.col=(pal5bit(r)<<16)|(pal5bit(g)<<8)|(pal5bit(b)<<0);
}
//cquad.col = scale_color(machine.pens[0x1000|(state->m_tgp_ram[tex_adr-0x40000] & 0x3ff)],((float) (lum>>24)) / 128.0);
if(flags & 0x00002000)
@@ -1119,7 +1119,7 @@ static UINT16 *skip_direct(UINT16 *list)
return list+2;
}
-static void draw_objects(model1_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_objects(model1_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if(state->m_quadpt != state->m_quaddb) {
LOG_TGP(("VIDEO: sort&draw\n"));
@@ -1131,7 +1131,7 @@ static void draw_objects(model1_state *state, bitmap_t &bitmap, const rectangle
state->m_pointpt = state->m_pointdb;
}
-static UINT16 *draw_direct(model1_state *state, bitmap_t &bitmap, const rectangle &cliprect, UINT16 *list)
+static UINT16 *draw_direct(model1_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 *list)
{
UINT16 *res;
@@ -1184,7 +1184,7 @@ WRITE16_HANDLER( model1_listctl_w )
LOG_TGP(("VIDEO: control=%08x\n", (state->m_listctl[1]<<16)|state->m_listctl[0]));
}
-static void tgp_render(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void tgp_render(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
model1_state *state = machine.driver_data<model1_state>();
struct view *view = state->m_view;
@@ -1468,7 +1468,7 @@ VIDEO_START(model1)
state_save_register_global_array(machine, state->m_listctl);
}
-SCREEN_UPDATE(model1)
+SCREEN_UPDATE_RGB32(model1)
{
model1_state *state = screen.machine().driver_data<model1_state>();
struct view *view = state->m_view;
diff --git a/src/mame/video/model2.c b/src/mame/video/model2.c
index d7773939ce8..dbc3ba414db 100644
--- a/src/mame/video/model2.c
+++ b/src/mame/video/model2.c
@@ -923,7 +923,7 @@ static const poly_draw_scanline_func render_funcs[8] =
model2_3d_render_7 /* checker = 1, textured = 1, translucent = 1 */
};
-static void model2_3d_render( model2_state *state, bitmap_t &bitmap, triangle *tri, const rectangle &cliprect )
+static void model2_3d_render( model2_state *state, bitmap_rgb32 &bitmap, triangle *tri, const rectangle &cliprect )
{
poly_manager *poly = state->m_poly;
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
@@ -1022,7 +1022,7 @@ static void model2_3d_frame_start( model2_state *state )
raster->max_z = 0;
}
-static void model2_3d_frame_end( model2_state *state, bitmap_t &bitmap, const rectangle &cliprect )
+static void model2_3d_frame_end( model2_state *state, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
raster_state *raster = state->m_raster;
INT32 z;
@@ -2715,7 +2715,7 @@ VIDEO_START(model2)
int width = visarea.max_x - visarea.min_x;
int height = visarea.max_y - visarea.min_y;
- state->m_sys24_bitmap = auto_alloc(machine, bitmap_t(width, height+4, BITMAP_FORMAT_INDEXED16));
+ state->m_sys24_bitmap.allocate(width, height+4);
state->m_poly = poly_alloc(machine, 4000, sizeof(poly_extra_data), 0);
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(model2_exit), &machine));
@@ -2727,38 +2727,21 @@ VIDEO_START(model2)
geo_init( machine, (UINT32*)machine.region("user2")->base() );
}
-static void convert_bitmap( running_machine &machine, bitmap_t &dst, bitmap_t &src, const rectangle &rect )
-{
- int x, y;
-
- for( y = rect.min_y; y < rect.max_y; y++ )
- {
- UINT32 *d = &dst.pix32(y);
- UINT16 *s = &src.pix16(y);
-
- for( x = rect.min_x; x < rect.max_x; x++ )
- {
- if ( s[x] )
- d[x] = machine.pens[s[x]];
- }
- }
-}
-
-SCREEN_UPDATE(model2)
+SCREEN_UPDATE_RGB32(model2)
{
model2_state *state = screen.machine().driver_data<model2_state>();
logerror("--- frame ---\n");
bitmap.fill(screen.machine().pens[0], cliprect);
- state->m_sys24_bitmap->fill(0, cliprect);
+ state->m_sys24_bitmap.fill(0, cliprect);
segas24_tile *tile = screen.machine().device<segas24_tile>("tile");
- tile->draw(*state->m_sys24_bitmap, cliprect, 7, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 6, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 5, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 4, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 7, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 6, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 5, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 4, 0, 0);
- convert_bitmap(screen.machine(), bitmap, *state->m_sys24_bitmap, cliprect);
+ copybitmap_trans(bitmap, state->m_sys24_bitmap, 0, 0, 0, 0, cliprect, 0);
/* tell the rasterizer we're starting a frame */
model2_3d_frame_start(state);
@@ -2769,13 +2752,13 @@ SCREEN_UPDATE(model2)
/* have the rasterizer output the frame */
model2_3d_frame_end( state, bitmap, cliprect );
- state->m_sys24_bitmap->fill(0, cliprect);
- tile->draw(*state->m_sys24_bitmap, cliprect, 3, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 2, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 1, 0, 0);
- tile->draw(*state->m_sys24_bitmap, cliprect, 0, 0, 0);
+ state->m_sys24_bitmap.fill(0, cliprect);
+ tile->draw(state->m_sys24_bitmap, cliprect, 3, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 2, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 1, 0, 0);
+ tile->draw(state->m_sys24_bitmap, cliprect, 0, 0, 0);
- convert_bitmap(screen.machine(), bitmap, *state->m_sys24_bitmap, cliprect);
+ copybitmap_trans(bitmap, state->m_sys24_bitmap, 0, 0, 0, 0, cliprect, 0);
return 0;
}
diff --git a/src/mame/video/model2rd.c b/src/mame/video/model2rd.c
index 5e90bbfb0ee..e2bffc0ff2b 100644
--- a/src/mame/video/model2rd.c
+++ b/src/mame/video/model2rd.c
@@ -59,7 +59,7 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
#if !defined( MODEL2_TRANSLUCENT)
const poly_extra_data *extra = (const poly_extra_data *)extradata;
model2_state *state = extra->state;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)dest;
UINT32 *p = &destmap->pix32(scanline);
/* extract color information */
@@ -112,7 +112,7 @@ static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *exte
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
model2_state *state = extra->state;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)dest;
UINT32 *p = &destmap->pix32(scanline);
UINT32 tex_width = extra->texwidth;
diff --git a/src/mame/video/model3.c b/src/mame/video/model3.c
index ebcfd60e3b2..a39386fc5ff 100644
--- a/src/mame/video/model3.c
+++ b/src/mame/video/model3.c
@@ -37,7 +37,7 @@ typedef struct _poly_extra_data poly_extra_data;
struct _poly_extra_data
{
cached_texture *texture;
- bitmap_t *zbuffer;
+ bitmap_ind32 *zbuffer;
UINT32 color;
UINT8 texture_param;
int polygon_transparency;
@@ -124,8 +124,8 @@ VIDEO_START( model3 )
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_bitmap3d = machine.primary_screen->alloc_compatible_bitmap();
- state->m_zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
+ state->m_bitmap3d.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_zbuffer.allocate(width, height);
state->m_m3_char_ram = auto_alloc_array_clear(machine, UINT64, 0x100000/8);
state->m_m3_tile_ram = auto_alloc_array_clear(machine, UINT64, 0x8000/8);
@@ -158,7 +158,7 @@ VIDEO_START( model3 )
init_matrix_stack(machine);
}
-static void draw_tile_4bit(running_machine &machine, bitmap_t &bitmap, int tx, int ty, int tilenum)
+static void draw_tile_4bit(running_machine &machine, bitmap_ind16 &bitmap, int tx, int ty, int tilenum)
{
model3_state *state = machine.driver_data<model3_state>();
int x, y;
@@ -194,7 +194,7 @@ static void draw_tile_4bit(running_machine &machine, bitmap_t &bitmap, int tx, i
}
}
-static void draw_tile_8bit(running_machine &machine, bitmap_t &bitmap, int tx, int ty, int tilenum)
+static void draw_tile_8bit(running_machine &machine, bitmap_ind16 &bitmap, int tx, int ty, int tilenum)
{
model3_state *state = machine.driver_data<model3_state>();
int x, y;
@@ -226,7 +226,7 @@ static void draw_tile_8bit(running_machine &machine, bitmap_t &bitmap, int tx, i
}
}
#ifdef UNUSED_FUNCTION
-static void draw_texture_sheet(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_texture_sheet(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
model3_state *state = machine.driver_data<model3_state>();
int x,y;
@@ -245,7 +245,7 @@ static void draw_texture_sheet(running_machine &machine, bitmap_t &bitmap, const
}
#endif
-static void draw_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer, int bitdepth)
+static void draw_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int bitdepth)
{
model3_state *state = machine.driver_data<model3_state>();
int x, y;
@@ -321,13 +321,13 @@ static void draw_layer(running_machine &machine, bitmap_t &bitmap, const rectang
}
#ifdef UNUSED_FUNCTION
-static void copy_screen(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void copy_screen(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
model3_state *state = machine.driver_data<model3_state>();
int x,y;
for(y=cliprect.min_y; y <= cliprect.max_y; y++) {
UINT16 *d = &bitmap.pix16(y);
- UINT16 *s = &state->m_bitmap3d->pix16(y);
+ UINT16 *s = &state->m_bitmap3d.pix16(y);
for(x=cliprect.min_x; x <= cliprect.max_x; x++) {
UINT16 pix = s[x];
if(!(pix & 0x8000)) {
@@ -338,7 +338,7 @@ static void copy_screen(running_machine &machine, bitmap_t &bitmap, const rectan
}
#endif
-SCREEN_UPDATE( model3 )
+SCREEN_UPDATE_IND16( model3 )
{
model3_state *state = screen.machine().driver_data<model3_state>();
#if 0
@@ -394,12 +394,12 @@ SCREEN_UPDATE( model3 )
{
#if 0
if(state->m_real3d_display_list) {
- state->m_zbuffer->fill(0, cliprect);
- state->m_bitmap3d->fill(0x8000, cliprect);
+ state->m_zbuffer.fill(0, cliprect);
+ state->m_bitmap3d.fill(0x8000, cliprect);
real3d_traverse_display_list(screen.machine());
}
#endif
- copybitmap_trans(bitmap, *state->m_bitmap3d, 0, 0, 0, 0, cliprect, 0x8000);
+ copybitmap_trans(bitmap, state->m_bitmap3d, 0, 0, 0, 0, cliprect, 0x8000);
}
if (!(state->m_debug_layer_disable & 0x2))
@@ -784,8 +784,8 @@ void real3d_display_list_end(running_machine &machine)
};
}
state->m_texture_fifo_pos = 0;
- state->m_zbuffer->fill(0);
- state->m_bitmap3d->fill(0x8000);
+ state->m_zbuffer.fill(0);
+ state->m_bitmap3d.fill(0x8000);
real3d_traverse_display_list(machine);
//state->m_real3d_display_list = 1;
}
@@ -1070,7 +1070,7 @@ static void render_one(running_machine &machine, TRIANGLE *tri)
tri->v[1].pz = 1.0f / tri->v[1].pz;
tri->v[2].pz = 1.0f / tri->v[2].pz;
- extra->zbuffer = state->m_zbuffer;
+ extra->zbuffer = &state->m_zbuffer;
if (tri->param & TRI_PARAM_TEXTURE_ENABLE)
{
tri->v[0].pu = tri->v[0].pu * tri->v[0].pz * 256.0f;
@@ -1091,7 +1091,7 @@ static void render_one(running_machine &machine, TRIANGLE *tri)
callback = (tri->transparency >= 32) ? draw_scanline_normal : draw_scanline_trans;
else
callback = draw_scanline_alpha;
- poly_render_triangle(state->m_poly, state->m_bitmap3d, state->m_clip3d, callback, 3, &tri->v[0], &tri->v[1], &tri->v[2]);
+ poly_render_triangle(state->m_poly, &state->m_bitmap3d, state->m_clip3d, callback, 3, &tri->v[0], &tri->v[1], &tri->v[2]);
}
else
{
@@ -1099,7 +1099,7 @@ static void render_one(running_machine &machine, TRIANGLE *tri)
extra->polygon_intensity = tri->intensity;
extra->color = tri->color;
- poly_render_triangle(state->m_poly, state->m_bitmap3d, state->m_clip3d, draw_scanline_color, 1, &tri->v[0], &tri->v[1], &tri->v[2]);
+ poly_render_triangle(state->m_poly, &state->m_bitmap3d, state->m_clip3d, draw_scanline_color, 1, &tri->v[0], &tri->v[1], &tri->v[2]);
}
}
diff --git a/src/mame/video/momoko.c b/src/mame/video/momoko.c
index 5ca0dbbc712..d602dd22fa0 100644
--- a/src/mame/video/momoko.c
+++ b/src/mame/video/momoko.c
@@ -76,7 +76,7 @@ WRITE8_HANDLER( momoko_flipscreen_w )
/****************************************************************************/
-static void momoko_draw_bg_pri( running_machine &machine, bitmap_t &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri )
+static void momoko_draw_bg_pri( running_machine &machine, bitmap_ind16 &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri )
{
int xx, sx, sy, px, py, dot;
UINT32 gfxadr;
@@ -111,7 +111,7 @@ static void momoko_draw_bg_pri( running_machine &machine, bitmap_t &bitmap, int
/****************************************************************************/
-SCREEN_UPDATE( momoko )
+SCREEN_UPDATE_IND16( momoko )
{
momoko_state *state = screen.machine().driver_data<momoko_state>();
int x, y, dx, dy, rx, ry, radr, chr, sy, fx, fy, px, py, offs, col, pri, flip ;
diff --git a/src/mame/video/moo.c b/src/mame/video/moo.c
index d79ccb30650..d8dd4619b78 100644
--- a/src/mame/video/moo.c
+++ b/src/mame/video/moo.c
@@ -63,7 +63,7 @@ VIDEO_START(moo)
}
}
-SCREEN_UPDATE(moo)
+SCREEN_UPDATE_RGB32(moo)
{
moo_state *state = screen.machine().driver_data<moo_state>();
static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 };
diff --git a/src/mame/video/mosaic.c b/src/mame/video/mosaic.c
index 4cfc272ce29..16a628c535f 100644
--- a/src/mame/video/mosaic.c
+++ b/src/mame/video/mosaic.c
@@ -80,7 +80,7 @@ WRITE8_HANDLER( mosaic_bgvideoram_w )
-SCREEN_UPDATE( mosaic )
+SCREEN_UPDATE_IND16( mosaic )
{
mosaic_state *state = screen.machine().driver_data<mosaic_state>();
diff --git a/src/mame/video/mouser.c b/src/mame/video/mouser.c
index 00580c5ad91..fa48bb51330 100644
--- a/src/mame/video/mouser.c
+++ b/src/mame/video/mouser.c
@@ -54,7 +54,7 @@ WRITE8_HANDLER( mouser_flip_screen_y_w )
flip_screen_y_set(space->machine(), ~data & 1);
}
-SCREEN_UPDATE( mouser )
+SCREEN_UPDATE_IND16( mouser )
{
mouser_state *state = screen.machine().driver_data<mouser_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/mrdo.c b/src/mame/video/mrdo.c
index cad67bebe11..da435ae29f9 100644
--- a/src/mame/video/mrdo.c
+++ b/src/mame/video/mrdo.c
@@ -243,7 +243,7 @@ WRITE8_HANDLER( mrdo_flipscreen_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
mrdo_state *state = machine.driver_data<mrdo_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -261,7 +261,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const recta
}
}
-SCREEN_UPDATE( mrdo )
+SCREEN_UPDATE_IND16( mrdo )
{
mrdo_state *state = screen.machine().driver_data<mrdo_state>();
diff --git a/src/mame/video/mrflea.c b/src/mame/video/mrflea.c
index 3895c96b1e8..4fe3cfa6956 100644
--- a/src/mame/video/mrflea.c
+++ b/src/mame/video/mrflea.c
@@ -43,7 +43,7 @@ WRITE8_HANDLER( mrflea_spriteram_w )
state->m_spriteram[offset] = data;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mrflea_state *state = machine.driver_data<mrflea_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -74,7 +74,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mrflea_state *state = machine.driver_data<mrflea_state>();
const UINT8 *source = state->m_videoram;
@@ -104,7 +104,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
}
}
-SCREEN_UPDATE( mrflea )
+SCREEN_UPDATE_IND16( mrflea )
{
draw_background(screen.machine(), bitmap, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/mrjong.c b/src/mame/video/mrjong.c
index d17d55f3436..a0bcef033b9 100644
--- a/src/mame/video/mrjong.c
+++ b/src/mame/video/mrjong.c
@@ -110,7 +110,7 @@ VIDEO_START( mrjong )
/*
Note: First 0x40 entries in the videoram are actually spriteram
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mrjong_state *state = machine.driver_data<mrjong_state>();
int offs;
@@ -145,7 +145,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( mrjong )
+SCREEN_UPDATE_IND16( mrjong )
{
mrjong_state *state = screen.machine().driver_data<mrjong_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/ms32.c b/src/mame/video/ms32.c
index 65f41224d16..645e8e338f3 100644
--- a/src/mame/video/ms32.c
+++ b/src/mame/video/ms32.c
@@ -87,13 +87,13 @@ VIDEO_START( ms32 )
/* set up tile layers */
- state->m_temp_bitmap_tilemaps = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_temp_bitmap_sprites = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_temp_bitmap_sprites_pri = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16); // not actually being used for rendering, we embed pri info in the raw colour bitmap
+ state->m_temp_bitmap_tilemaps.allocate(width, height);
+ state->m_temp_bitmap_sprites.allocate(width, height);
+ state->m_temp_bitmap_sprites_pri.allocate(width, height); // not actually being used for rendering, we embed pri info in the raw colour bitmap
- state->m_temp_bitmap_tilemaps->fill(0);
- state->m_temp_bitmap_sprites->fill(0);
- state->m_temp_bitmap_sprites_pri->fill(0);
+ state->m_temp_bitmap_tilemaps.fill(0);
+ state->m_temp_bitmap_sprites.fill(0);
+ state->m_temp_bitmap_sprites_pri.fill(0);
tilemap_set_transparent_pen(state->m_tx_tilemap,0);
tilemap_set_transparent_pen(state->m_bg_tilemap,0);
@@ -205,7 +205,7 @@ WRITE32_HANDLER( ms32_gfxctrl_w )
/* SPRITES based on tetrisp2 for now, readd priority bits later */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, bitmap_t &bitmap_pri, const rectangle &cliprect, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int reverseorder)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_pri, const rectangle &cliprect, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int reverseorder)
{
int tx, ty, sx, sy, flipx, flipy;
int xsize, ysize;
@@ -275,7 +275,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, bitmap_t &b
}
-static void draw_roz(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,int priority)
+static void draw_roz(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,int priority)
{
ms32_state *state = machine.driver_data<ms32_state>();
/* TODO: registers 0x40/4 / 0x44/4 and 0x50/4 / 0x54/4 are used, meaning unknown */
@@ -358,7 +358,7 @@ static void draw_roz(running_machine &machine, bitmap_t &bitmap, const rectangle
-SCREEN_UPDATE( ms32 )
+SCREEN_UPDATE_RGB32( ms32 )
{
ms32_state *state = screen.machine().driver_data<ms32_state>();
int scrollx,scrolly;
@@ -398,13 +398,13 @@ SCREEN_UPDATE( ms32 )
/* TODO: 0 is correct for gametngk, but break f1superb scrolling grid (text at
top and bottom of the screen becomes black on black) */
- state->m_temp_bitmap_tilemaps->fill(0, cliprect); /* bg color */
+ state->m_temp_bitmap_tilemaps.fill(0, cliprect); /* bg color */
/* clear our sprite bitmaps */
- state->m_temp_bitmap_sprites->fill(0, cliprect);
- state->m_temp_bitmap_sprites_pri->fill(0, cliprect);
+ state->m_temp_bitmap_sprites.fill(0, cliprect);
+ state->m_temp_bitmap_sprites_pri.fill(0, cliprect);
- draw_sprites(screen.machine(), *state->m_temp_bitmap_sprites, *state->m_temp_bitmap_sprites_pri, cliprect, state->m_sprram_16, 0x20000, 0, state->m_reverse_sprite_order);
+ draw_sprites(screen.machine(), state->m_temp_bitmap_sprites, state->m_temp_bitmap_sprites_pri, cliprect, state->m_sprram_16, 0x20000, 0, state->m_reverse_sprite_order);
@@ -427,46 +427,46 @@ SCREEN_UPDATE( ms32 )
rot_pri++;
if (rot_pri == 0)
- draw_roz(screen.machine(), *state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
+ draw_roz(screen.machine(), state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
else if (scr_pri == 0)
if (state->m_tilemaplayoutcontrol&1)
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
}
else
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
}
else if (asc_pri == 0)
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
if (rot_pri == 1)
- draw_roz(screen.machine(), *state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
+ draw_roz(screen.machine(), state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
else if (scr_pri == 1)
if (state->m_tilemaplayoutcontrol&1)
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
}
else
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
}
else if (asc_pri == 1)
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
if (rot_pri == 2)
- draw_roz(screen.machine(), *state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
+ draw_roz(screen.machine(), state->m_temp_bitmap_tilemaps, cliprect, 1 << 1);
else if (scr_pri == 2)
if (state->m_tilemaplayoutcontrol&1)
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap_alt, 0, 1 << 0);
}
else
{
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_bg_tilemap, 0, 1 << 0);
}
else if (asc_pri == 2)
- tilemap_draw(*state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
+ tilemap_draw(state->m_temp_bitmap_tilemaps,cliprect, state->m_tx_tilemap, 0, 1 << 2);
/* MIX it! */
/* this mixing isn't 100% accurate, it should be using ALL the data in
@@ -489,10 +489,10 @@ SCREEN_UPDATE( ms32 )
for (yy=0;yy<height;yy++)
{
- srcptr_tile = &state->m_temp_bitmap_tilemaps->pix16(yy);
+ srcptr_tile = &state->m_temp_bitmap_tilemaps.pix16(yy);
srcptr_tilepri = &screen.machine().priority_bitmap.pix8(yy);
- srcptr_spri = &state->m_temp_bitmap_sprites->pix16(yy);
- //srcptr_spripri = &state->m_temp_bitmap_sprites_pri->pix8(yy);
+ srcptr_spri = &state->m_temp_bitmap_sprites.pix16(yy);
+ //srcptr_spripri = &state->m_temp_bitmap_sprites_pri.pix8(yy);
dstptr_bitmap = &bitmap.pix32(yy);
for (xx=0;xx<width;xx++)
{
diff --git a/src/mame/video/msisaac.c b/src/mame/video/msisaac.c
index 403e2928d41..b065adb3764 100644
--- a/src/mame/video/msisaac.c
+++ b/src/mame/video/msisaac.c
@@ -161,7 +161,7 @@ WRITE8_HANDLER( msisaac_fg_videoram_w )
Display refresh
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
msisaac_state *state = machine.driver_data<msisaac_state>();
const UINT8 *source = state->m_spriteram + 32 * 4 - 4;
@@ -244,7 +244,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( msisaac )
+SCREEN_UPDATE_IND16( msisaac )
{
msisaac_state *state = screen.machine().driver_data<msisaac_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/mugsmash.c b/src/mame/video/mugsmash.c
index e131e9249e1..24500459a58 100644
--- a/src/mame/video/mugsmash.c
+++ b/src/mame/video/mugsmash.c
@@ -3,7 +3,7 @@
#include "emu.h"
#include "includes/mugsmash.h"
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* Each Sprite takes 16 bytes, 5 used? */
@@ -151,7 +151,7 @@ VIDEO_START( mugsmash )
state->m_tilemap2 = tilemap_create(machine, get_mugsmash_tile_info2, tilemap_scan_rows, 16, 16, 32, 32);
}
-SCREEN_UPDATE( mugsmash )
+SCREEN_UPDATE_IND16( mugsmash )
{
mugsmash_state *state = screen.machine().driver_data<mugsmash_state>();
diff --git a/src/mame/video/munchmo.c b/src/mame/video/munchmo.c
index b133ca1d1d0..36526015b2f 100644
--- a/src/mame/video/munchmo.c
+++ b/src/mame/video/munchmo.c
@@ -45,10 +45,10 @@ WRITE8_HANDLER( mnchmobl_flipscreen_w )
VIDEO_START( mnchmobl )
{
munchmo_state *state = machine.driver_data<munchmo_state>();
- state->m_tmpbitmap = auto_bitmap_alloc(machine, 512, 512, machine.primary_screen->format());
+ state->m_tmpbitmap = auto_bitmap_ind16_alloc(machine, 512, 512);
}
-static void draw_status( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_status( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
munchmo_state *state = machine.driver_data<munchmo_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -76,7 +76,7 @@ static void draw_status( running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*
ROM B1.2C contains 256 tilemaps defining 4x4 configurations of
@@ -115,7 +115,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
munchmo_state *state = machine.driver_data<munchmo_state>();
int scroll = state->m_vreg[6];
@@ -150,7 +150,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( mnchmobl )
+SCREEN_UPDATE_IND16( mnchmobl )
{
draw_background(screen.machine(), bitmap, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/mustache.c b/src/mame/video/mustache.c
index ad5ef69f44e..1e922119867 100644
--- a/src/mame/video/mustache.c
+++ b/src/mame/video/mustache.c
@@ -100,7 +100,7 @@ VIDEO_START( mustache )
tilemap_set_scroll_rows(state->m_bg_tilemap, 4);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
mustache_state *state = machine.driver_data<mustache_state>();
rectangle clip = cliprect;
@@ -143,7 +143,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( mustache )
+SCREEN_UPDATE_IND16( mustache )
{
mustache_state *state = screen.machine().driver_data<mustache_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/mw8080bw.c b/src/mame/video/mw8080bw.c
index fc6c39c6a55..be74432687a 100644
--- a/src/mame/video/mw8080bw.c
+++ b/src/mame/video/mw8080bw.c
@@ -8,7 +8,7 @@
#include "includes/mw8080bw.h"
-SCREEN_UPDATE( mw8080bw )
+SCREEN_UPDATE_RGB32( mw8080bw )
{
mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
UINT8 x = 0;
@@ -75,7 +75,7 @@ SCREEN_UPDATE( mw8080bw )
#define PHANTOM2_SIDE_TRENCH_LIGHT_RGB32_PEN MAKE_RGB(0x72, 0x72, 0x72)
-SCREEN_UPDATE( spcenctr )
+SCREEN_UPDATE_RGB32( spcenctr )
{
mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
UINT8 line_buf[256]; /* 256x1 bit RAM */
@@ -219,7 +219,7 @@ SCREEN_UPDATE( spcenctr )
#define PHANTOM2_RGB32_CLOUD_PEN MAKE_RGB(0xc0, 0xc0, 0xc0)
-SCREEN_UPDATE( phantom2 )
+SCREEN_UPDATE_RGB32( phantom2 )
{
mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
UINT8 x = 0;
@@ -331,7 +331,7 @@ SCREEN_EOF( phantom2 )
/* the flip screen circuit is just a couple of relays on the monitor PCB */
-SCREEN_UPDATE( invaders )
+SCREEN_UPDATE_RGB32( invaders )
{
mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
UINT8 x = 0;
diff --git a/src/mame/video/mystston.c b/src/mame/video/mystston.c
index e54300a6cf9..62175adee27 100644
--- a/src/mame/video/mystston.c
+++ b/src/mame/video/mystston.c
@@ -179,7 +179,7 @@ static TILE_GET_INFO( get_fg_tile_info )
*
*************************************/
-static void draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx, int flip)
+static void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx, int flip)
{
mystston_state *state = gfx->machine().driver_data<mystston_state>();
int offs;
@@ -254,7 +254,7 @@ static VIDEO_RESET( mystston )
*
*************************************/
-static SCREEN_UPDATE( mystston )
+static SCREEN_UPDATE_IND16( mystston )
{
mystston_state *state = screen.machine().driver_data<mystston_state>();
@@ -329,7 +329,6 @@ MACHINE_CONFIG_FRAGMENT( mystston_video )
MCFG_PALETTE_LENGTH(0x40)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
- MCFG_SCREEN_UPDATE(mystston)
+ MCFG_SCREEN_UPDATE_STATIC(mystston)
MACHINE_CONFIG_END
diff --git a/src/mame/video/mystwarr.c b/src/mame/video/mystwarr.c
index fca1b67d93e..d00f289c6a3 100644
--- a/src/mame/video/mystwarr.c
+++ b/src/mame/video/mystwarr.c
@@ -329,7 +329,7 @@ VIDEO_START(martchmp)
-SCREEN_UPDATE(mystwarr)
+SCREEN_UPDATE_RGB32(mystwarr)
{
mystwarr_state *state = screen.machine().driver_data<mystwarr_state>();
int i, old, blendmode=0;
@@ -349,7 +349,7 @@ SCREEN_UPDATE(mystwarr)
return 0;
}
-SCREEN_UPDATE(metamrph)
+SCREEN_UPDATE_RGB32(metamrph)
{
mystwarr_state *state = screen.machine().driver_data<mystwarr_state>();
int i, old;
@@ -367,7 +367,7 @@ SCREEN_UPDATE(metamrph)
return 0;
}
-SCREEN_UPDATE(martchmp)
+SCREEN_UPDATE_RGB32(martchmp)
{
mystwarr_state *state = screen.machine().driver_data<mystwarr_state>();
int i, old, blendmode;
@@ -499,7 +499,7 @@ READ16_HANDLER(ddd_053936_tilerom_2_r)
return ROM[offset]<<8;
}
-SCREEN_UPDATE(dadandrn) /* and gaiapols */
+SCREEN_UPDATE_RGB32(dadandrn) /* and gaiapols */
{
mystwarr_state *state = screen.machine().driver_data<mystwarr_state>();
int i, newbase, dirty, rozmode;
diff --git a/src/mame/video/n64.c b/src/mame/video/n64.c
index b6137c9552a..05b2802d410 100644
--- a/src/mame/video/n64.c
+++ b/src/mame/video/n64.c
@@ -66,7 +66,7 @@ void Processor::GetAlphaCvg(UINT8 *comb_alpha)
/*****************************************************************************/
-void Processor::VideoUpdate(bitmap_t &bitmap)
+void Processor::VideoUpdate(bitmap_rgb32 &bitmap)
{
switch(n64_vi_control & 0x3)
{
@@ -84,7 +84,7 @@ void Processor::VideoUpdate(bitmap_t &bitmap)
}
}
-void Processor::VideoUpdate16(bitmap_t &bitmap)
+void Processor::VideoUpdate16(bitmap_rgb32 &bitmap)
{
int fsaa = (((n64_vi_control >> 8) & 3) < 2);
int divot = (n64_vi_control >> 4) & 1;
@@ -218,7 +218,7 @@ void Processor::VideoUpdate16(bitmap_t &bitmap)
}
}
-void Processor::VideoUpdate32(bitmap_t &bitmap)
+void Processor::VideoUpdate32(bitmap_rgb32 &bitmap)
{
int gamma = (n64_vi_control >> 3) & 1;
int gamma_dither = (n64_vi_control >> 2) & 1;
@@ -3267,7 +3267,7 @@ VIDEO_START(n64)
}
}
-SCREEN_UPDATE(n64)
+SCREEN_UPDATE_RGB32(n64)
{
_n64_state *state = screen.machine().driver_data<_n64_state>();
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h
index 5742de96754..5ce1a6cc5fe 100644
--- a/src/mame/video/n64.h
+++ b/src/mame/video/n64.h
@@ -574,7 +574,7 @@ class Processor
bool ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix);
// Fullscreen update-related
- void VideoUpdate(bitmap_t &bitmap);
+ void VideoUpdate(bitmap_rgb32 &bitmap);
// Commands
void CmdInvalid(UINT32 w1, UINT32 w2);
@@ -754,8 +754,8 @@ class Processor
static const ZDecompressEntry z_dec_table[8];
// Internal screen-update functions
- void VideoUpdate16(bitmap_t &bitmap);
- void VideoUpdate32(bitmap_t &bitmap);
+ void VideoUpdate16(bitmap_rgb32 &bitmap);
+ void VideoUpdate32(bitmap_rgb32 &bitmap);
typedef void (*Command)(UINT32 w1, UINT32 w2);
diff --git a/src/mame/video/n8080.c b/src/mame/video/n8080.c
index f2b406d2912..582bf87df62 100644
--- a/src/mame/video/n8080.c
+++ b/src/mame/video/n8080.c
@@ -139,7 +139,7 @@ VIDEO_START( helifire )
}
-SCREEN_UPDATE( spacefev )
+SCREEN_UPDATE_IND16( spacefev )
{
n8080_state *state = screen.machine().driver_data<n8080_state>();
UINT8 mask = flip_screen_get(screen.machine()) ? 0xff : 0x00;
@@ -209,7 +209,7 @@ SCREEN_UPDATE( spacefev )
}
-SCREEN_UPDATE( sheriff )
+SCREEN_UPDATE_IND16( sheriff )
{
n8080_state *state = screen.machine().driver_data<n8080_state>();
UINT8 mask = flip_screen_get(screen.machine()) ? 0xff : 0x00;
@@ -252,7 +252,7 @@ SCREEN_UPDATE( sheriff )
}
-SCREEN_UPDATE( helifire )
+SCREEN_UPDATE_IND16( helifire )
{
n8080_state *state = screen.machine().driver_data<n8080_state>();
int SUN_BRIGHTNESS = input_port_read(screen.machine(), "POT0");
diff --git a/src/mame/video/namcofl.c b/src/mame/video/namcofl.c
index 4378b98c048..2428cdd09c0 100644
--- a/src/mame/video/namcofl.c
+++ b/src/mame/video/namcofl.c
@@ -80,7 +80,7 @@ static void TilemapCB(running_machine &machine, UINT16 code, int *tile, int *mas
}
-SCREEN_UPDATE( namcofl )
+SCREEN_UPDATE_IND16( namcofl )
{
int pri;
diff --git a/src/mame/video/namcona1.c b/src/mame/video/namcona1.c
index e3d29dc2295..629bc231bf5 100644
--- a/src/mame/video/namcona1.c
+++ b/src/mame/video/namcona1.c
@@ -311,7 +311,7 @@ VIDEO_START( namcona1 )
/*************************************************************************/
static void pdraw_tile(running_machine &machine,
- bitmap_t &dest_bmp,
+ bitmap_ind16 &dest_bmp,
const rectangle &clip,
UINT32 code,
int color,
@@ -453,7 +453,7 @@ static void pdraw_tile(running_machine &machine,
}
} /* pdraw_tile */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
namcona1_state *state = machine.driver_data<namcona1_state>();
int which;
@@ -550,7 +550,7 @@ static void draw_pixel_line( UINT16 *pDest, UINT8 *pPri, UINT16 *pSource, const
} /* next x */
} /* draw_pixel_line */
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int which, int primask )
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int primask )
{
namcona1_state *state = machine.driver_data<namcona1_state>();
UINT16 *videoram = state->m_videoram;
@@ -635,7 +635,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
} /* draw_background */
-SCREEN_UPDATE( namcona1 )
+SCREEN_UPDATE_IND16( namcona1 )
{
namcona1_state *state = screen.machine().driver_data<namcona1_state>();
int which;
diff --git a/src/mame/video/namconb1.c b/src/mame/video/namconb1.c
index aebf38d7849..5a604e4230f 100644
--- a/src/mame/video/namconb1.c
+++ b/src/mame/video/namconb1.c
@@ -102,7 +102,7 @@ static void namconb1_install_palette(running_machine &machine)
} /* namconb1_install_palette */
static void
-video_update_common(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bROZ )
+video_update_common(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bROZ )
{
int pri;
namconb1_install_palette(machine);
@@ -131,7 +131,7 @@ video_update_common(running_machine &machine, bitmap_t &bitmap, const rectangle
/************************************************************************************************/
-SCREEN_UPDATE( namconb1 )
+SCREEN_UPDATE_IND16( namconb1 )
{
/* compute window for custom screen blanking */
rectangle clip;
@@ -171,7 +171,7 @@ VIDEO_START( namconb1 )
/****************************************************************************************************/
-SCREEN_UPDATE( namconb2 )
+SCREEN_UPDATE_IND16( namconb2 )
{
namconb1_state *state = screen.machine().driver_data<namconb1_state>();
/* compute window for custom screen blanking */
diff --git a/src/mame/video/namcos1.c b/src/mame/video/namcos1.c
index 9b60e3bdb00..799c0e3a501 100644
--- a/src/mame/video/namcos1.c
+++ b/src/mame/video/namcos1.c
@@ -298,7 +298,7 @@ sprite format:
15 xxxxxxxx Y position
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
namcos1_state *state = machine.driver_data<namcos1_state>();
UINT8 *spriteram = state->m_spriteram + 0x800;
@@ -370,7 +370,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
-SCREEN_UPDATE( namcos1 )
+SCREEN_UPDATE_IND16( namcos1 )
{
namcos1_state *state = screen.machine().driver_data<namcos1_state>();
int i, j, scrollx, scrolly, priority;
diff --git a/src/mame/video/namcos2.c b/src/mame/video/namcos2.c
index 4879386a2a6..15a1bbaafcb 100644
--- a/src/mame/video/namcos2.c
+++ b/src/mame/video/namcos2.c
@@ -74,8 +74,8 @@ struct RozParam
INLINE void
DrawRozHelperBlock(const struct RozParam *rozInfo, int destx, int desty,
int srcx, int srcy, int width, int height,
- bitmap_t &destbitmap, bitmap_t &flagsbitmap,
- bitmap_t &srcbitmap, UINT32 size_mask)
+ bitmap_ind16 &destbitmap, bitmap_ind8 &flagsbitmap,
+ bitmap_ind16 &srcbitmap, UINT32 size_mask)
{
int desty_end = desty + height;
@@ -123,7 +123,7 @@ DrawRozHelperBlock(const struct RozParam *rozInfo, int destx, int desty,
static void
DrawRozHelper(
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
tilemap_t *tmap,
const rectangle &clip,
const struct RozParam *rozInfo )
@@ -162,8 +162,8 @@ DrawRozHelper(
#define ROZ_BLOCK_SIZE 8
UINT32 size_mask = rozInfo->size - 1;
- bitmap_t &srcbitmap = tilemap_get_pixmap(tmap);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(tmap);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tmap);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(tmap);
UINT32 srcx = (rozInfo->startx + (clip.min_x * rozInfo->incxx) +
(clip.min_y * rozInfo->incyx));
UINT32 srcy = (rozInfo->starty + (clip.min_x * rozInfo->incxy) +
@@ -245,7 +245,7 @@ DrawRozHelper(
} /* DrawRozHelper */
static void
-DrawROZ(bitmap_t &bitmap,const rectangle &cliprect)
+DrawROZ(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
const int xoffset = 38,yoffset = 0;
struct RozParam rozParam;
@@ -460,7 +460,7 @@ ApplyClip( rectangle &clip, const rectangle &cliprect )
clip &= cliprect;
} /* ApplyClip */
-SCREEN_UPDATE( namcos2_default )
+SCREEN_UPDATE_IND16( namcos2_default )
{
rectangle clip;
int pri;
@@ -497,7 +497,7 @@ VIDEO_START( finallap )
namco_road_init(machine, 3);
}
-SCREEN_UPDATE( finallap )
+SCREEN_UPDATE_IND16( finallap )
{
rectangle clip;
int pri;
@@ -534,7 +534,7 @@ VIDEO_START( luckywld )
}
} /* luckywld */
-SCREEN_UPDATE( luckywld )
+SCREEN_UPDATE_IND16( luckywld )
{
rectangle clip;
int pri;
@@ -567,7 +567,7 @@ VIDEO_START( sgunner )
namco_obj_init( machine, 0, 0x0, NULL );
}
-SCREEN_UPDATE( sgunner )
+SCREEN_UPDATE_IND16( sgunner )
{
rectangle clip;
int pri;
@@ -593,7 +593,7 @@ VIDEO_START( metlhawk )
namco_roz_init( machine, 1, "gfx5" );
}
-SCREEN_UPDATE( metlhawk )
+SCREEN_UPDATE_IND16( metlhawk )
{
rectangle clip;
int pri;
diff --git a/src/mame/video/namcos21.c b/src/mame/video/namcos21.c
index 369b4b3f312..ed120cce038 100644
--- a/src/mame/video/namcos21.c
+++ b/src/mame/video/namcos21.c
@@ -98,7 +98,7 @@ namcos21_ClearPolyFrameBuffer( running_machine &machine )
} /* namcos21_ClearPolyFrameBuffer */
static void
-CopyVisiblePolyFrameBuffer( running_machine &machine, bitmap_t &bitmap, const rectangle &clip, int zlo, int zhi )
+CopyVisiblePolyFrameBuffer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &clip, int zlo, int zhi )
{
namcos21_state *state = machine.driver_data<namcos21_state>(); /* blit the visible framebuffer */
int sy;
@@ -172,7 +172,7 @@ update_palette( running_machine &machine )
} /* update_palette */
-SCREEN_UPDATE( namcos21 )
+SCREEN_UPDATE_IND16( namcos21 )
{
namcos21_state *state = screen.machine().driver_data<namcos21_state>();
UINT8 *videoram = state->m_videoram;
@@ -236,7 +236,7 @@ SCREEN_UPDATE( namcos21 )
}
} /* winrun bitmap layer */
return 0;
-} /* SCREEN_UPDATE( namcos21 ) */
+} /* SCREEN_UPDATE_IND16( namcos21 ) */
/*********************************************************************************************/
diff --git a/src/mame/video/namcos22.c b/src/mame/video/namcos22.c
index 21882fdf2ac..c9eaadf05e2 100644
--- a/src/mame/video/namcos22.c
+++ b/src/mame/video/namcos22.c
@@ -356,7 +356,7 @@ struct _poly_extra_data
rgbint fadeColor;
rgbint polyColor;
const pen_t *pens;
- bitmap_t *priority_bitmap;
+ bitmap_ind8 *priority_bitmap;
int bn;
int flags;
int prioverchar;
@@ -390,7 +390,7 @@ static void renderscanline_uvi_full(void *destbase, INT32 scanline, const poly_e
float du = extent->param[1].dpdx;
float dv = extent->param[2].dpdx;
float di = extent->param[3].dpdx;
- bitmap_t *destmap = (bitmap_t *)destbase;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)destbase;
int bn = extra->bn * 0x1000;
const pen_t *pens = extra->pens;
const UINT8 *czram = extra->czram;
@@ -522,7 +522,7 @@ static void renderscanline_uvi_full(void *destbase, INT32 scanline, const poly_e
}
} /* renderscanline_uvi_full */
-static void poly3d_DrawQuad(running_machine &machine, bitmap_t &bitmap, int textureBank, int color, Poly3dVertex pv[4], int flags, int cz_adjust, int direct, int cmode )
+static void poly3d_DrawQuad(running_machine &machine, bitmap_rgb32 &bitmap, int textureBank, int color, Poly3dVertex pv[4], int flags, int cz_adjust, int direct, int cmode )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(state->m_poly);
@@ -735,7 +735,7 @@ static void renderscanline_sprite(void *destbase, INT32 scanline, const poly_ext
int y_index = extent->param[1].start - extra->flipy;
float x_index = extent->param[0].start - extra->flipx;
float dx = extent->param[0].dpdx;
- bitmap_t *destmap = (bitmap_t *)destbase;
+ bitmap_rgb32 *destmap = (bitmap_rgb32 *)destbase;
const pen_t *pal = extra->pens;
int prioverchar = extra->prioverchar;
int alphaFactor = extra->alpha;
@@ -779,7 +779,7 @@ static void renderscanline_sprite(void *destbase, INT32 scanline, const poly_ext
static void
poly3d_DrawSprite(
- bitmap_t &dest_bmp, const gfx_element *gfx, UINT32 code,
+ bitmap_rgb32 &dest_bmp, const gfx_element *gfx, UINT32 code,
UINT32 color, int flipx, int flipy, int sx, int sy,
int scalex, int scaley, int cz_factor, int prioverchar, int alpha )
{
@@ -848,7 +848,7 @@ poly3d_DrawSprite(
} /* poly3d_DrawSprite */
static void
-ApplyGamma( running_machine &machine, bitmap_t &bitmap )
+ApplyGamma( running_machine &machine, bitmap_rgb32 &bitmap )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
int x,y;
@@ -1077,7 +1077,7 @@ NewSceneNode( running_machine &machine, UINT32 zsortvalue24, SceneNodeType type
} /* NewSceneNode */
-static void RenderSprite(running_machine &machine, bitmap_t &bitmap, struct SceneNode *node )
+static void RenderSprite(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
int tile = node->data.sprite.tile;
@@ -1113,7 +1113,7 @@ static void RenderSprite(running_machine &machine, bitmap_t &bitmap, struct Scen
} /* next row */
} /* RenderSprite */
-static void RenderSceneHelper(running_machine &machine, bitmap_t &bitmap, struct SceneNode *node )
+static void RenderSceneHelper(running_machine &machine, bitmap_rgb32 &bitmap, struct SceneNode *node )
{
if( node )
{
@@ -1174,7 +1174,7 @@ static void RenderSceneHelper(running_machine &machine, bitmap_t &bitmap, struct
}
} /* RenderSceneHelper */
-static void RenderScene(running_machine &machine, bitmap_t &bitmap )
+static void RenderScene(running_machine &machine, bitmap_rgb32 &bitmap )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
struct SceneNode *node = &mSceneRoot;
@@ -1506,7 +1506,7 @@ Prepare3dTexture( running_machine &machine, void *pTilemapROM, void *pTextureROM
static void
DrawSpritesHelper(
running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_rgb32 &bitmap,
const rectangle &cliprect,
UINT32 *pBase,
const UINT32 *pSource,
@@ -1641,7 +1641,7 @@ DrawSpritesHelper(
} /* DrawSpritesHelper */
static void
-DrawSprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+DrawSprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -1957,7 +1957,7 @@ WRITE32_HANDLER( namcos22s_spotram_w )
}
}
-static void namcos22s_mix_textlayer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int prival )
+static void namcos22s_mix_textlayer( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int prival )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
const pen_t *pens = machine.pens;
@@ -2041,7 +2041,7 @@ static void namcos22s_mix_textlayer( running_machine &machine, bitmap_t &bitmap,
}
}
-static void namcos22_mix_textlayer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void namcos22_mix_textlayer( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
const pen_t *pens = machine.pens;
@@ -2099,7 +2099,7 @@ static void namcos22_mix_textlayer( running_machine &machine, bitmap_t &bitmap,
}
}
-static void DrawCharacterLayer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void DrawCharacterLayer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
int scroll_x = (state->m_tilemapattr[0]>>16) - 0x35c;
@@ -2171,7 +2171,7 @@ Signed18( UINT32 value )
static void
BlitQuadHelper(
running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_rgb32 &bitmap,
unsigned color,
unsigned addr,
float m[4][4],
@@ -2339,7 +2339,7 @@ RegisterNormals( namcos22_state *state, INT32 addr, float m[4][4] )
} /* RegisterNormals */
static void
-BlitQuads( running_machine &machine, bitmap_t &bitmap, INT32 addr, float m[4][4], INT32 base )
+BlitQuads( running_machine &machine, bitmap_rgb32 &bitmap, INT32 addr, float m[4][4], INT32 base )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
// int numAdditionalNormals = 0;
@@ -2430,7 +2430,7 @@ BlitQuads( running_machine &machine, bitmap_t &bitmap, INT32 addr, float m[4][4]
} /* BlitQuads */
static void
-BlitPolyObject( running_machine &machine, bitmap_t &bitmap, int code, float M[4][4] )
+BlitPolyObject( running_machine &machine, bitmap_rgb32 &bitmap, int code, float M[4][4] )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
unsigned addr1 = GetPolyData(state, code);
@@ -2561,7 +2561,7 @@ HandleBB0003( namcos22_state *state, const INT32 *pSource )
} /* HandleBB0003 */
static void
-Handle200002( running_machine &machine, bitmap_t &bitmap, const INT32 *pSource )
+Handle200002( running_machine &machine, bitmap_rgb32 &bitmap, const INT32 *pSource )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
if( state->m_mPrimitiveID>=0x45 )
@@ -2630,7 +2630,7 @@ Handle233002( namcos22_state *state, const INT32 *pSource )
} /* Handle233002 */
static void
-SimulateSlaveDSP( running_machine &machine, bitmap_t &bitmap )
+SimulateSlaveDSP( running_machine &machine, bitmap_rgb32 &bitmap )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
const INT32 *pSource = 0x300 + (INT32 *)state->m_polygonram;
@@ -2696,7 +2696,7 @@ SimulateSlaveDSP( running_machine &machine, bitmap_t &bitmap )
} /* SimulateSlaveDSP */
static void
-DrawPolygons( running_machine &machine, bitmap_t &bitmap )
+DrawPolygons( running_machine &machine, bitmap_rgb32 &bitmap )
{
namcos22_state *state = machine.driver_data<namcos22_state>();
if( state->m_mbDSPisActive )
@@ -2757,7 +2757,7 @@ static VIDEO_START( common )
namcos22_state *state = machine.driver_data<namcos22_state>();
int code;
- state->m_mix_bitmap = auto_bitmap_alloc(machine,640,480,BITMAP_FORMAT_INDEXED16);
+ state->m_mix_bitmap = auto_bitmap_ind16_alloc(machine,640,480);
state->m_bgtilemap = tilemap_create( machine, TextTilemapGetInfo,tilemap_scan_rows,16,16,64,64 );
tilemap_set_transparent_pen(state->m_bgtilemap, 0xf);
@@ -2811,7 +2811,7 @@ VIDEO_START( namcos22s )
VIDEO_START_CALL(common);
}
-SCREEN_UPDATE( namcos22s )
+SCREEN_UPDATE_RGB32( namcos22s )
{
namcos22_state *state = screen.machine().driver_data<namcos22_state>();
UpdateVideoMixer(screen.machine());
@@ -2894,7 +2894,7 @@ SCREEN_UPDATE( namcos22s )
return 0;
}
-SCREEN_UPDATE( namcos22 )
+SCREEN_UPDATE_RGB32( namcos22 )
{
UpdateVideoMixer(screen.machine());
UpdatePalette(screen.machine());
diff --git a/src/mame/video/namcos86.c b/src/mame/video/namcos86.c
index a68c3c5cf4a..adeaa225a46 100644
--- a/src/mame/video/namcos86.c
+++ b/src/mame/video/namcos86.c
@@ -282,7 +282,7 @@ sprite format:
15 xxxxxxxx Y position
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
namcos86_state *state = machine.driver_data<namcos86_state>();
const UINT8 *source = &state->m_spriteram[0x0800-0x20]; /* the last is NOT a sprite */
@@ -362,7 +362,7 @@ static void set_scroll(running_machine &machine, int layer)
}
-SCREEN_UPDATE( namcos86 )
+SCREEN_UPDATE_IND16( namcos86 )
{
namcos86_state *state = screen.machine().driver_data<namcos86_state>();
int layer;
diff --git a/src/mame/video/naughtyb.c b/src/mame/video/naughtyb.c
index 8a4a679b40e..338dfb49b04 100644
--- a/src/mame/video/naughtyb.c
+++ b/src/mame/video/naughtyb.c
@@ -182,7 +182,7 @@ WRITE8_HANDLER( popflame_videoreg_w )
***************************************************************************/
-SCREEN_UPDATE( naughtyb )
+SCREEN_UPDATE_IND16( naughtyb )
{
const rectangle scrollvisiblearea(2*8, 34*8-1, 0*8, 28*8-1);
const rectangle leftvisiblearea(0*8, 2*8-1, 0*8, 28*8-1);
@@ -190,7 +190,7 @@ SCREEN_UPDATE( naughtyb )
naughtyb_state *state = screen.machine().driver_data<naughtyb_state>();
UINT8 *videoram = state->m_videoram;
- bitmap_t &tmpbitmap = state->m_tmpbitmap;
+ bitmap_ind16 &tmpbitmap = state->m_tmpbitmap;
int offs;
// for every character in the Video RAM
diff --git a/src/mame/video/nbmj8688.c b/src/mame/video/nbmj8688.c
index ba40e3a339a..9435b903689 100644
--- a/src/mame/video/nbmj8688.c
+++ b/src/mame/video/nbmj8688.c
@@ -549,7 +549,7 @@ static void mbmj8688_gfxdraw(running_machine &machine, int gfxtype)
static void common_video_start(running_machine &machine)
{
nbmj8688_state *state = machine.driver_data<nbmj8688_state>();
- state->m_mjsikaku_tmpbitmap = auto_bitmap_alloc(machine, 512, 256, machine.primary_screen->format());
+ state->m_mjsikaku_tmpbitmap = auto_bitmap_ind16_alloc(machine, 512, 256);
state->m_mjsikaku_videoram = auto_alloc_array_clear(machine, UINT16, 512 * 256);
state->m_clut = auto_alloc_array(machine, UINT8, 0x20);
@@ -676,7 +676,7 @@ WRITE8_HANDLER( nbmj8688_HD61830B_both_data_w )
******************************************************************************/
-SCREEN_UPDATE( mbmj8688 )
+SCREEN_UPDATE_IND16( mbmj8688 )
{
nbmj8688_state *state = screen.machine().driver_data<nbmj8688_state>();
int x, y;
@@ -710,7 +710,7 @@ SCREEN_UPDATE( mbmj8688 )
-SCREEN_UPDATE( mbmj8688_lcd0 )
+SCREEN_UPDATE_IND16( mbmj8688_lcd0 )
{
nbmj8688_state *state = screen.machine().driver_data<nbmj8688_state>();
int x, y, b;
@@ -726,7 +726,7 @@ SCREEN_UPDATE( mbmj8688_lcd0 )
return 0;
}
-SCREEN_UPDATE( mbmj8688_lcd1 )
+SCREEN_UPDATE_IND16( mbmj8688_lcd1 )
{
nbmj8688_state *state = screen.machine().driver_data<nbmj8688_state>();
int x, y, b;
diff --git a/src/mame/video/nbmj8891.c b/src/mame/video/nbmj8891.c
index 8304006e9dd..b0be97ca63e 100644
--- a/src/mame/video/nbmj8891.c
+++ b/src/mame/video/nbmj8891.c
@@ -318,14 +318,14 @@ static void update_pixel0(running_machine &machine, int x, int y)
{
nbmj8891_state *state = machine.driver_data<nbmj8891_state>();
UINT8 color = state->m_videoram0[(y * machine.primary_screen->width()) + x];
- state->m_tmpbitmap0->pix16(y, x) = color;
+ state->m_tmpbitmap0.pix16(y, x) = color;
}
static void update_pixel1(running_machine &machine, int x, int y)
{
nbmj8891_state *state = machine.driver_data<nbmj8891_state>();
UINT8 color = state->m_videoram1[(y * machine.primary_screen->width()) + x];
- state->m_tmpbitmap1->pix16(y, x) = (color == 0x7f) ? 0xff : color;
+ state->m_tmpbitmap1.pix16(y, x) = (color == 0x7f) ? 0xff : color;
}
static TIMER_CALLBACK( blitter_timer_callback )
@@ -499,7 +499,7 @@ VIDEO_START( nbmj8891_1layer )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap0 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap0.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram0 = auto_alloc_array(machine, UINT8, width * height);
state->m_palette = auto_alloc_array(machine, UINT8, 0x200);
state->m_clut = auto_alloc_array(machine, UINT8, 0x800);
@@ -516,8 +516,8 @@ VIDEO_START( nbmj8891_2layer )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap0 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap1 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap0.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram0 = auto_alloc_array(machine, UINT8, width * height);
state->m_videoram1 = auto_alloc_array(machine, UINT8, width * height);
state->m_palette = auto_alloc_array(machine, UINT8, 0x200);
@@ -531,7 +531,7 @@ VIDEO_START( nbmj8891_2layer )
******************************************************************************/
-SCREEN_UPDATE( nbmj8891 )
+SCREEN_UPDATE_IND16( nbmj8891 )
{
nbmj8891_state *state = screen.machine().driver_data<nbmj8891_state>();
int x, y;
@@ -560,11 +560,11 @@ SCREEN_UPDATE( nbmj8891 )
if (state->m_gfxdraw_mode)
{
- copyscrollbitmap (bitmap, *state->m_tmpbitmap0, 0, 0, 0, 0, cliprect);
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap1, 0, 0, 1, &scrolly, cliprect, 0xff);
+ copyscrollbitmap (bitmap, state->m_tmpbitmap0, 0, 0, 0, 0, cliprect);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap1, 0, 0, 1, &scrolly, cliprect, 0xff);
}
else
- copyscrollbitmap(bitmap, *state->m_tmpbitmap0, 0, 0, 1, &scrolly, cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap0, 0, 0, 1, &scrolly, cliprect);
}
else
bitmap.fill(0xff);
diff --git a/src/mame/video/nbmj8900.c b/src/mame/video/nbmj8900.c
index 1cc0bb9e7e9..7170b9ca4e4 100644
--- a/src/mame/video/nbmj8900.c
+++ b/src/mame/video/nbmj8900.c
@@ -206,14 +206,14 @@ static void update_pixel0(running_machine &machine, int x, int y)
{
nbmj8900_state *state = machine.driver_data<nbmj8900_state>();
UINT8 color = state->m_videoram0[(y * state->m_screen_width) + x];
- state->m_tmpbitmap0->pix16(y, x) = machine.pens[color];
+ state->m_tmpbitmap0.pix16(y, x) = machine.pens[color];
}
static void update_pixel1(running_machine &machine, int x, int y)
{
nbmj8900_state *state = machine.driver_data<nbmj8900_state>();
UINT8 color = state->m_videoram1[(y * state->m_screen_width) + x];
- state->m_tmpbitmap1->pix16(y, x) = machine.pens[color];
+ state->m_tmpbitmap1.pix16(y, x) = machine.pens[color];
}
static TIMER_CALLBACK( blitter_timer_callback )
@@ -383,8 +383,8 @@ VIDEO_START( nbmj8900_2layer )
state->m_screen_width = machine.primary_screen->width();
state->m_screen_height = machine.primary_screen->height();
- state->m_tmpbitmap0 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap1 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap0.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram0 = auto_alloc_array(machine, UINT8, state->m_screen_width * state->m_screen_height);
state->m_videoram1 = auto_alloc_array(machine, UINT8, state->m_screen_width * state->m_screen_height);
state->m_palette = auto_alloc_array(machine, UINT8, 0x200);
@@ -399,7 +399,7 @@ VIDEO_START( nbmj8900_2layer )
******************************************************************************/
-SCREEN_UPDATE( nbmj8900 )
+SCREEN_UPDATE_IND16( nbmj8900 )
{
nbmj8900_state *state = screen.machine().driver_data<nbmj8900_state>();
int x, y;
@@ -434,12 +434,12 @@ SCREEN_UPDATE( nbmj8900 )
if (state->m_gfxdraw_mode)
{
- copyscrollbitmap(bitmap, *state->m_tmpbitmap0, 0, 0, 0, 0, cliprect);
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap1, 0, 0, 1, &scrolly, cliprect, 0xff);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap0, 0, 0, 0, 0, cliprect);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap1, 0, 0, 1, &scrolly, cliprect, 0xff);
}
else
{
- copyscrollbitmap(bitmap, *state->m_tmpbitmap0, 0, 0, 1, &scrolly, cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap0, 0, 0, 1, &scrolly, cliprect);
}
}
else
diff --git a/src/mame/video/nbmj8991.c b/src/mame/video/nbmj8991.c
index 61b3d1efcdc..0f4b7c84bdf 100644
--- a/src/mame/video/nbmj8991.c
+++ b/src/mame/video/nbmj8991.c
@@ -172,7 +172,7 @@ static void update_pixel(running_machine &machine, int x, int y)
{
nbmj8991_state *state = machine.driver_data<nbmj8991_state>();
UINT8 color = state->m_videoram[(y * machine.primary_screen->width()) + x];
- state->m_tmpbitmap->pix16(y, x) = color;
+ state->m_tmpbitmap.pix16(y, x) = color;
}
static TIMER_CALLBACK( blitter_timer_callback )
@@ -296,13 +296,13 @@ VIDEO_START( nbmj8991 )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram = auto_alloc_array(machine, UINT8, width * height);
state->m_clut = auto_alloc_array(machine, UINT8, 0x800);
memset(state->m_videoram, 0x00, (width * height * sizeof(UINT8)));
}
-SCREEN_UPDATE( nbmj8991_type1 )
+SCREEN_UPDATE_IND16( nbmj8991_type1 )
{
nbmj8991_state *state = screen.machine().driver_data<nbmj8991_state>();
int x, y;
@@ -334,7 +334,7 @@ SCREEN_UPDATE( nbmj8991_type1 )
scrolly = (( state->m_scrolly) + 0x0f1) & 0x1ff;
}
- copyscrollbitmap(bitmap, *state->m_tmpbitmap, 1, &scrollx, 1, &scrolly, cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap, 1, &scrollx, 1, &scrolly, cliprect);
}
else
bitmap.fill(0);
@@ -342,7 +342,7 @@ SCREEN_UPDATE( nbmj8991_type1 )
return 0;
}
-SCREEN_UPDATE( nbmj8991_type2 )
+SCREEN_UPDATE_IND16( nbmj8991_type2 )
{
nbmj8991_state *state = screen.machine().driver_data<nbmj8991_state>();
int x, y;
@@ -374,7 +374,7 @@ SCREEN_UPDATE( nbmj8991_type2 )
scrolly = (( state->m_scrolly) + 0x0f1) & 0x1ff;
}
- copyscrollbitmap(bitmap, *state->m_tmpbitmap, 1, &scrollx, 1, &scrolly, cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap, 1, &scrollx, 1, &scrolly, cliprect);
}
else
bitmap.fill(0);
diff --git a/src/mame/video/nbmj9195.c b/src/mame/video/nbmj9195.c
index fa6c9cb17d8..2faab0cb665 100644
--- a/src/mame/video/nbmj9195.c
+++ b/src/mame/video/nbmj9195.c
@@ -201,7 +201,7 @@ static void update_pixel(running_machine &machine, int vram, int x, int y)
{
nbmj9195_state *state = machine.driver_data<nbmj9195_state>();
UINT16 color = state->m_videoram[vram][(y * machine.primary_screen->width()) + x];
- state->m_tmpbitmap[vram]->pix16(y, x) = color;
+ state->m_tmpbitmap[vram].pix16(y, x) = color;
}
static TIMER_CALLBACK( blitter_timer_callback )
@@ -394,7 +394,7 @@ VIDEO_START( nbmj9195_1layer )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_palette = auto_alloc_array(machine, UINT8, 0x200);
state->m_clut[0] = auto_alloc_array(machine, UINT8, 0x1000);
@@ -409,8 +409,8 @@ VIDEO_START( nbmj9195_2layer )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap[1] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap[1].allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_palette = auto_alloc_array(machine, UINT8, 0x200);
@@ -427,8 +427,8 @@ VIDEO_START( nbmj9195_nb22090 )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap[1] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap[1].allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_videoworkram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
@@ -445,7 +445,7 @@ VIDEO_START( nbmj9195_nb22090 )
******************************************************************************/
-SCREEN_UPDATE( nbmj9195 )
+SCREEN_UPDATE_IND16( nbmj9195 )
{
nbmj9195_state *state = screen.machine().driver_data<nbmj9195_state>();
int i;
@@ -492,7 +492,7 @@ SCREEN_UPDATE( nbmj9195 )
if (state->m_dispflag[0])
// nbmj9195 1layer
- copyscrollbitmap(bitmap, *state->m_tmpbitmap[0], SCANLINE_MAX, state->m_scrollx_raster[0], 1, &scrolly[0], cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap[0], SCANLINE_MAX, state->m_scrollx_raster[0], 1, &scrolly[0], cliprect);
else
bitmap.fill(0x0ff);
@@ -500,11 +500,11 @@ SCREEN_UPDATE( nbmj9195 )
{
if (state->m_gfxdraw_mode == 1)
// nbmj9195 2layer
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap[1], SCANLINE_MAX, state->m_scrollx_raster[1], 1, &scrolly[1], cliprect, 0x0ff);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap[1], SCANLINE_MAX, state->m_scrollx_raster[1], 1, &scrolly[1], cliprect, 0x0ff);
if (state->m_gfxdraw_mode == 2)
// nbmj9195 nb22090 2layer
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap[1], SCANLINE_MAX, state->m_scrollx_raster[1], 1, &scrolly[1], cliprect, 0x1ff);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap[1], SCANLINE_MAX, state->m_scrollx_raster[1], 1, &scrolly[1], cliprect, 0x1ff);
}
return 0;
}
diff --git a/src/mame/video/nemesis.c b/src/mame/video/nemesis.c
index c562028f237..de59540a9a2 100644
--- a/src/mame/video/nemesis.c
+++ b/src/mame/video/nemesis.c
@@ -334,7 +334,7 @@ VIDEO_START( nemesis )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*
* 16 bytes per sprite, in memory from 56000-56fff
@@ -425,7 +425,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
/******************************************************************************/
-SCREEN_UPDATE( nemesis )
+SCREEN_UPDATE_IND16( nemesis )
{
nemesis_state *state = screen.machine().driver_data<nemesis_state>();
int offs;
diff --git a/src/mame/video/neogeo.c b/src/mame/video/neogeo.c
index 55c6c61b9c3..2c87742d203 100644
--- a/src/mame/video/neogeo.c
+++ b/src/mame/video/neogeo.c
@@ -268,7 +268,7 @@ void neogeo_set_fixed_layer_source( running_machine &machine, UINT8 data )
}
-static void draw_fixed_layer( running_machine &machine, bitmap_t &bitmap, int scanline )
+static void draw_fixed_layer( running_machine &machine, bitmap_rgb32 &bitmap, int scanline )
{
neogeo_state *state = machine.driver_data<neogeo_state>();
int x;
@@ -401,7 +401,7 @@ INLINE int sprite_on_scanline(int scanline, int y, int rows)
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, int scanline )
+static void draw_sprites( running_machine &machine, bitmap_rgb32 &bitmap, int scanline )
{
neogeo_state *state = machine.driver_data<neogeo_state>();
int sprite_index;
@@ -920,7 +920,7 @@ VIDEO_RESET( neogeo )
*
*************************************/
-SCREEN_UPDATE( neogeo )
+SCREEN_UPDATE_RGB32( neogeo )
{
neogeo_state *state = screen.machine().driver_data<neogeo_state>();
diff --git a/src/mame/video/news.c b/src/mame/video/news.c
index e8ad749ac62..c3d8f2087cc 100644
--- a/src/mame/video/news.c
+++ b/src/mame/video/news.c
@@ -97,7 +97,7 @@ WRITE8_HANDLER( news_bgpic_w )
***************************************************************************/
-SCREEN_UPDATE( news )
+SCREEN_UPDATE_IND16( news )
{
news_state *state = screen.machine().driver_data<news_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/ninjakd2.c b/src/mame/video/ninjakd2.c
index da8e1f77479..6fc807047c0 100644
--- a/src/mame/video/ninjakd2.c
+++ b/src/mame/video/ninjakd2.c
@@ -121,7 +121,7 @@ static void videoram_alloc(running_machine& machine, int const size)
state->m_robokid_bg2_videoram = auto_alloc_array_clear(machine, UINT8, size);
}
- state->m_sp_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_sp_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
static int stencil_ninjakd2( UINT16 pal );
@@ -360,7 +360,7 @@ WRITE8_HANDLER( ninjakd2_sprite_overdraw_w )
*
*************************************/
-static void draw_sprites(running_machine& machine, bitmap_t &bitmap)
+static void draw_sprites(running_machine& machine, bitmap_ind16 &bitmap)
{
ninjakd2_state *state = machine.driver_data<ninjakd2_state>();
const gfx_element* const gfx = machine.gfx[1];
@@ -452,18 +452,18 @@ static int stencil_omegaf( UINT16 pal ) { return( TRUE ); }
// This is very hackish.
// (Is there a possibility that software can't select it but hardware can?)
-static void erase_sprites(running_machine& machine, bitmap_t &bitmap)
+static void erase_sprites(running_machine& machine, bitmap_ind16 &bitmap)
{
ninjakd2_state *state = machine.driver_data<ninjakd2_state>();
// if sprite overdraw is disabled, clear the sprite framebuffer
if (!state->m_next_sprite_overdraw_enabled)
- state->m_sp_bitmap->fill(TRANSPARENTCODE);
+ state->m_sp_bitmap.fill(TRANSPARENTCODE);
else
- for (int y = 0; y < state->m_sp_bitmap->height(); ++y)
+ for (int y = 0; y < state->m_sp_bitmap.height(); ++y)
{
- for (int x = 0; x < state->m_sp_bitmap->width(); ++x)
+ for (int x = 0; x < state->m_sp_bitmap.width(); ++x)
{
- UINT16* const ptr = &state->m_sp_bitmap->pix16(y, x);
+ UINT16* const ptr = &state->m_sp_bitmap.pix16(y, x);
if ( (*state->m_stencil_compare_function)(*ptr) ) *ptr = TRANSPARENTCODE ;
}
@@ -474,8 +474,8 @@ static void erase_sprites(running_machine& machine, bitmap_t &bitmap)
static void update_sprites(running_machine& machine)
{
ninjakd2_state *state = machine.driver_data<ninjakd2_state>();
- erase_sprites(machine, *state->m_sp_bitmap);
- draw_sprites(machine, *state->m_sp_bitmap);
+ erase_sprites(machine, state->m_sp_bitmap);
+ draw_sprites(machine, state->m_sp_bitmap);
}
////// Before modified, this was written.
// we want to erase the sprites with the old setting and draw them with the
@@ -484,7 +484,7 @@ static void update_sprites(running_machine& machine)
////// The glitch is correct behavior.
-SCREEN_UPDATE( ninjakd2 )
+SCREEN_UPDATE_IND16( ninjakd2 )
{
ninjakd2_state *state = screen.machine().driver_data<ninjakd2_state>();
// updating sprites here instead than in screen_eof avoids a palette glitch
@@ -496,14 +496,14 @@ SCREEN_UPDATE( ninjakd2 )
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
- copybitmap_trans(bitmap, *state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
+ copybitmap_trans(bitmap, state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
tilemap_draw(bitmap, cliprect, state->m_fg_tilemap, 0, 0);
return 0;
}
-SCREEN_UPDATE( robokid )
+SCREEN_UPDATE_IND16( robokid )
{
ninjakd2_state *state = screen.machine().driver_data<ninjakd2_state>();
update_sprites(screen.machine());
@@ -515,7 +515,7 @@ SCREEN_UPDATE( robokid )
tilemap_draw(bitmap, cliprect, state->m_bg1_tilemap, 0, 0);
- copybitmap_trans(bitmap, *state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
+ copybitmap_trans(bitmap, state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
tilemap_draw(bitmap, cliprect, state->m_bg2_tilemap, 0, 0);
@@ -524,7 +524,7 @@ SCREEN_UPDATE( robokid )
return 0;
}
-SCREEN_UPDATE( omegaf )
+SCREEN_UPDATE_IND16( omegaf )
{
ninjakd2_state *state = screen.machine().driver_data<ninjakd2_state>();
update_sprites(screen.machine());
@@ -538,7 +538,7 @@ SCREEN_UPDATE( omegaf )
tilemap_draw(bitmap, cliprect, state->m_bg2_tilemap, 0, 0);
- copybitmap_trans(bitmap, *state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
+ copybitmap_trans(bitmap, state->m_sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
tilemap_draw(bitmap, cliprect, state->m_fg_tilemap, 0, 0);
diff --git a/src/mame/video/ninjaw.c b/src/mame/video/ninjaw.c
index 084017b8d8d..76357212519 100644
--- a/src/mame/video/ninjaw.c
+++ b/src/mame/video/ninjaw.c
@@ -16,7 +16,7 @@ VIDEO_START( ninjaw )
SPRITE DRAW ROUTINE
************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs )
{
ninjaw_state *state = machine.driver_data<ninjaw_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -97,7 +97,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
SCREEN REFRESH
**************************************************************/
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int xoffs, device_t *tc0100scn)
+static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, device_t *tc0100scn)
{
UINT8 layer[3], nodraw;
@@ -128,6 +128,6 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-SCREEN_UPDATE( ninjaw_left ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 0, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_1); }
-SCREEN_UPDATE( ninjaw_middle ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 1, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_2); }
-SCREEN_UPDATE( ninjaw_right ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 2, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_3); }
+SCREEN_UPDATE_IND16( ninjaw_left ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 0, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_1); }
+SCREEN_UPDATE_IND16( ninjaw_middle ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 1, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_2); }
+SCREEN_UPDATE_IND16( ninjaw_right ) { return update_screen(screen, bitmap, cliprect, 36 * 8 * 2, screen.machine().driver_data<ninjaw_state>()->m_tc0100scn_3); }
diff --git a/src/mame/video/nitedrvr.c b/src/mame/video/nitedrvr.c
index 54b4c00b63f..a87cee19dc9 100644
--- a/src/mame/video/nitedrvr.c
+++ b/src/mame/video/nitedrvr.c
@@ -41,7 +41,7 @@ VIDEO_START( nitedrvr )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_box( bitmap_t &bitmap, int bx, int by, int ex, int ey )
+static void draw_box( bitmap_ind16 &bitmap, int bx, int by, int ex, int ey )
{
int x, y;
@@ -55,7 +55,7 @@ static void draw_box( bitmap_t &bitmap, int bx, int by, int ex, int ey )
return;
}
-static void draw_roadway( running_machine &machine, bitmap_t &bitmap )
+static void draw_roadway( running_machine &machine, bitmap_ind16 &bitmap )
{
nitedrvr_state *state = machine.driver_data<nitedrvr_state>();
int roadway;
@@ -73,7 +73,7 @@ static void draw_roadway( running_machine &machine, bitmap_t &bitmap )
}
}
-SCREEN_UPDATE( nitedrvr )
+SCREEN_UPDATE_IND16( nitedrvr )
{
nitedrvr_state *state = screen.machine().driver_data<nitedrvr_state>();
diff --git a/src/mame/video/niyanpai.c b/src/mame/video/niyanpai.c
index c633beebfd1..50ec9789f9f 100644
--- a/src/mame/video/niyanpai.c
+++ b/src/mame/video/niyanpai.c
@@ -170,7 +170,7 @@ static void update_pixel(running_machine &machine, int vram, int x, int y)
{
niyanpai_state *state = machine.driver_data<niyanpai_state>();
UINT16 color = state->m_videoram[vram][(y * machine.primary_screen->width()) + x];
- state->m_tmpbitmap[vram]->pix16(y, x) = color;
+ state->m_tmpbitmap[vram].pix16(y, x) = color;
}
static TIMER_CALLBACK( blitter_timer_callback )
@@ -365,9 +365,9 @@ VIDEO_START( niyanpai )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tmpbitmap[0] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap[1] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_tmpbitmap[2] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap[0].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap[1].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_tmpbitmap[2].allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
state->m_videoram[2] = auto_alloc_array_clear(machine, UINT16, width * height);
@@ -385,7 +385,7 @@ VIDEO_START( niyanpai )
******************************************************************************/
-SCREEN_UPDATE( niyanpai )
+SCREEN_UPDATE_IND16( niyanpai )
{
niyanpai_state *state = screen.machine().driver_data<niyanpai_state>();
int i;
@@ -423,15 +423,15 @@ SCREEN_UPDATE( niyanpai )
}
if (state->m_dispflag[0])
- copyscrollbitmap(bitmap, *state->m_tmpbitmap[0], 1, &scrollx[0], 1, &scrolly[0], cliprect);
+ copyscrollbitmap(bitmap, state->m_tmpbitmap[0], 1, &scrollx[0], 1, &scrolly[0], cliprect);
else
bitmap.fill(0x00ff);
if (state->m_dispflag[1])
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap[1], 1, &scrollx[1], 1, &scrolly[1], cliprect, 0x01ff);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap[1], 1, &scrollx[1], 1, &scrolly[1], cliprect, 0x01ff);
if (state->m_dispflag[2])
- copyscrollbitmap_trans(bitmap, *state->m_tmpbitmap[2], 1, &scrollx[2], 1, &scrolly[2], cliprect, 0x02ff);
+ copyscrollbitmap_trans(bitmap, state->m_tmpbitmap[2], 1, &scrollx[2], 1, &scrolly[2], cliprect, 0x02ff);
return 0;
}
diff --git a/src/mame/video/nmk16.c b/src/mame/video/nmk16.c
index f681673dcf5..f87d62397e7 100644
--- a/src/mame/video/nmk16.c
+++ b/src/mame/video/nmk16.c
@@ -138,7 +138,7 @@ VIDEO_START( bioship )
tilemap_set_transparent_pen(state->m_tx_tilemap,15);
nmk16_video_init(machine);
- state->m_background_bitmap = auto_bitmap_alloc(machine,8192,512,machine.primary_screen->format());
+ state->m_background_bitmap = auto_bitmap_ind16_alloc(machine,8192,512);
state->m_bioship_background_bank=0;
state->m_redraw_bitmap = 1;
@@ -425,7 +425,7 @@ WRITE16_HANDLER( bioship_bank_w )
// manybloc uses extra flip bits on the sprites, but these break other games
-static void nmk16_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void nmk16_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
nmk16_state *state = machine.driver_data<nmk16_state>();
int offs;
@@ -476,7 +476,7 @@ static void nmk16_draw_sprites(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void nmk16_draw_sprites_flipsupported(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void nmk16_draw_sprites_flipsupported(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
nmk16_state *state = machine.driver_data<nmk16_state>();
int offs;
@@ -540,7 +540,7 @@ static void nmk16_draw_sprites_flipsupported(running_machine &machine, bitmap_t
}
-SCREEN_UPDATE( macross )
+SCREEN_UPDATE_IND16( macross )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
tilemap_set_scrollx(state->m_tx_tilemap,0,-state->m_videoshift);
@@ -556,7 +556,7 @@ SCREEN_UPDATE( macross )
return 0;
}
-SCREEN_UPDATE( tdragon )
+SCREEN_UPDATE_IND16( tdragon )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
// mcu_run(screen.machine(), 1);
@@ -574,7 +574,7 @@ SCREEN_UPDATE( tdragon )
return 0;
}
-SCREEN_UPDATE( hachamf )
+SCREEN_UPDATE_IND16( hachamf )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
// mcu_run(screen.machine(), 0);
@@ -592,7 +592,7 @@ SCREEN_UPDATE( hachamf )
return 0;
}
-SCREEN_UPDATE( manybloc )
+SCREEN_UPDATE_IND16( manybloc )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
tilemap_set_scrollx(state->m_tx_tilemap,0,-state->m_videoshift);
@@ -608,7 +608,7 @@ SCREEN_UPDATE( manybloc )
return 0;
}
-SCREEN_UPDATE( tharrier )
+SCREEN_UPDATE_IND16( tharrier )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
/* I think the protection device probably copies this to the regs... */
@@ -627,7 +627,7 @@ SCREEN_UPDATE( tharrier )
return 0;
}
-SCREEN_UPDATE( gunnail )
+SCREEN_UPDATE_IND16( gunnail )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
int y1;
@@ -706,7 +706,7 @@ SCREEN_UPDATE( gunnail )
return 0;
}
-SCREEN_UPDATE( bioship )
+SCREEN_UPDATE_IND16( bioship )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
UINT16 *tilerom = (UINT16 *)screen.machine().region("gfx5")->base();
@@ -759,7 +759,7 @@ SCREEN_UPDATE( bioship )
return 0;
}
-SCREEN_UPDATE( strahl )
+SCREEN_UPDATE_IND16( strahl )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
tilemap_set_scrollx(state->m_tx_tilemap,0,-state->m_videoshift);
@@ -776,7 +776,7 @@ SCREEN_UPDATE( strahl )
return 0;
}
-SCREEN_UPDATE( bjtwin )
+SCREEN_UPDATE_IND16( bjtwin )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
tilemap_set_scrollx(state->m_bg_tilemap0,0,-state->m_videoshift);
@@ -898,7 +898,7 @@ VIDEO_START( firehawk )
***************************************************************************/
-static void video_update(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void video_update(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
int dsw_flipscreen, // 1 = Horizontal and vertical screen flip are hardwired to 2 dip switches
int xoffset, int yoffset, // bg_tilemap0 offsets
int attr_mask // "sprite active" mask
@@ -933,7 +933,7 @@ static void video_update(running_machine &machine, bitmap_t &bitmap, const recta
tilemap_draw(bitmap,cliprect,state->m_tx_tilemap,0,0);
}
-static void redhawki_video_update(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void redhawki_video_update(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
nmk16_state *state = machine.driver_data<nmk16_state>();
@@ -949,12 +949,12 @@ static void redhawki_video_update(running_machine &machine, bitmap_t &bitmap, co
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,0);
}
-SCREEN_UPDATE( afega ) { video_update(screen.machine(),bitmap,cliprect, 1, -0x100,+0x000, 0x0001); return 0; }
-SCREEN_UPDATE( bubl2000 ) { video_update(screen.machine(),bitmap,cliprect, 0, -0x100,+0x000, 0x0001); return 0; } // no flipscreen support, I really would confirmation from the schematics
-SCREEN_UPDATE( redhawkb ) { video_update(screen.machine(),bitmap,cliprect, 0, +0x000,+0x100, 0x0001); return 0; }
-SCREEN_UPDATE( redhawki ) { redhawki_video_update(screen.machine(),bitmap,cliprect); return 0;} // strange scroll regs
+SCREEN_UPDATE_IND16( afega ) { video_update(screen.machine(),bitmap,cliprect, 1, -0x100,+0x000, 0x0001); return 0; }
+SCREEN_UPDATE_IND16( bubl2000 ) { video_update(screen.machine(),bitmap,cliprect, 0, -0x100,+0x000, 0x0001); return 0; } // no flipscreen support, I really would confirmation from the schematics
+SCREEN_UPDATE_IND16( redhawkb ) { video_update(screen.machine(),bitmap,cliprect, 0, +0x000,+0x100, 0x0001); return 0; }
+SCREEN_UPDATE_IND16( redhawki ) { redhawki_video_update(screen.machine(),bitmap,cliprect); return 0;} // strange scroll regs
-SCREEN_UPDATE( firehawk )
+SCREEN_UPDATE_IND16( firehawk )
{
nmk16_state *state = screen.machine().driver_data<nmk16_state>();
tilemap_set_scrolly(state->m_bg_tilemap0, 0, state->m_afega_scroll_1[1] + 0x100);
diff --git a/src/mame/video/nova2001.c b/src/mame/video/nova2001.c
index 1b555a7c1ce..65d4d622fef 100644
--- a/src/mame/video/nova2001.c
+++ b/src/mame/video/nova2001.c
@@ -270,7 +270,7 @@ WRITE8_HANDLER( pkunwar_flipscreen_w )
*
*************************************/
-static void nova2001_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void nova2001_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
nova2001_state *state = machine.driver_data<nova2001_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -308,7 +308,7 @@ static void nova2001_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-static void pkunwar_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void pkunwar_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
nova2001_state *state = machine.driver_data<nova2001_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -355,7 +355,7 @@ static void pkunwar_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
-SCREEN_UPDATE( nova2001 )
+SCREEN_UPDATE_IND16( nova2001 )
{
nova2001_state *state = screen.machine().driver_data<nova2001_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -370,7 +370,7 @@ SCREEN_UPDATE( nova2001 )
return 0;
}
-SCREEN_UPDATE( pkunwar )
+SCREEN_UPDATE_IND16( pkunwar )
{
nova2001_state *state = screen.machine().driver_data<nova2001_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0);
@@ -382,7 +382,7 @@ SCREEN_UPDATE( pkunwar )
return 0;
}
-SCREEN_UPDATE( ninjakun )
+SCREEN_UPDATE_IND16( ninjakun )
{
nova2001_state *state = screen.machine().driver_data<nova2001_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -396,7 +396,7 @@ SCREEN_UPDATE( ninjakun )
return 0;
}
-SCREEN_UPDATE( raiders5 )
+SCREEN_UPDATE_IND16( raiders5 )
{
nova2001_state *state = screen.machine().driver_data<nova2001_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/nycaptor.c b/src/mame/video/nycaptor.c
index 6d272ffb042..afb88078a70 100644
--- a/src/mame/video/nycaptor.c
+++ b/src/mame/video/nycaptor.c
@@ -167,7 +167,7 @@ WRITE8_HANDLER( nycaptor_scrlram_w )
tilemap_set_scrolly(state->m_bg_tilemap, offset, data);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
nycaptor_state *state = machine.driver_data<nycaptor_state>();
int i;
@@ -249,7 +249,7 @@ static void nycaptor_setmask( running_machine &machine )
}
#endif
-SCREEN_UPDATE( nycaptor )
+SCREEN_UPDATE_IND16( nycaptor )
{
nycaptor_state *state = screen.machine().driver_data<nycaptor_state>();
diff --git a/src/mame/video/offtwall.c b/src/mame/video/offtwall.c
index 5aa806ebfe6..926e43c691b 100644
--- a/src/mame/video/offtwall.c
+++ b/src/mame/video/offtwall.c
@@ -89,11 +89,11 @@ VIDEO_START( offtwall )
*
*************************************/
-SCREEN_UPDATE( offtwall )
+SCREEN_UPDATE_IND16( offtwall )
{
offtwall_state *state = screen.machine().driver_data<offtwall_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/ohmygod.c b/src/mame/video/ohmygod.c
index 1f289078743..7673be970c0 100644
--- a/src/mame/video/ohmygod.c
+++ b/src/mame/video/ohmygod.c
@@ -76,7 +76,7 @@ WRITE16_HANDLER( ohmygod_scrolly_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ohmygod_state *state = machine.driver_data<ohmygod_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -105,7 +105,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( ohmygod )
+SCREEN_UPDATE_IND16( ohmygod )
{
ohmygod_state *state = screen.machine().driver_data<ohmygod_state>();
diff --git a/src/mame/video/ojankohs.c b/src/mame/video/ojankohs.c
index 5003168223d..b88b5f0c468 100644
--- a/src/mame/video/ojankohs.c
+++ b/src/mame/video/ojankohs.c
@@ -252,7 +252,7 @@ WRITE8_HANDLER( ojankoc_videoram_w )
px = x + (i ^ xx);
py = y;
- state->m_tmpbitmap->pix16(py, px) = color;
+ state->m_tmpbitmap.pix16(py, px) = color;
color1 >>= 1;
color2 >>= 1;
@@ -296,13 +296,13 @@ VIDEO_START( ojankoc )
{
ojankohs_state *state = machine.driver_data<ojankohs_state>();
- state->m_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_videoram = auto_alloc_array(machine, UINT8, 0x8000);
state->m_paletteram = auto_alloc_array(machine, UINT8, 0x20);
state->save_pointer(NAME(state->m_videoram), 0x8000);
state->save_pointer(NAME(state->m_paletteram), 0x20);
- state->save_item(NAME(*state->m_tmpbitmap));
+ state->save_item(NAME(state->m_tmpbitmap));
}
@@ -312,7 +312,7 @@ VIDEO_START( ojankoc )
******************************************************************************/
-SCREEN_UPDATE( ojankohs )
+SCREEN_UPDATE_IND16( ojankohs )
{
ojankohs_state *state = screen.machine().driver_data<ojankohs_state>();
@@ -323,7 +323,7 @@ SCREEN_UPDATE( ojankohs )
return 0;
}
-SCREEN_UPDATE( ojankoc )
+SCREEN_UPDATE_IND16( ojankoc )
{
ojankohs_state *state = screen.machine().driver_data<ojankohs_state>();
int offs;
@@ -340,6 +340,6 @@ SCREEN_UPDATE( ojankoc )
state->m_screen_refresh = 0;
}
- copybitmap(bitmap, *state->m_tmpbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_tmpbitmap, 0, 0, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/oneshot.c b/src/mame/video/oneshot.c
index 601adec9275..0ec5adae6ed 100644
--- a/src/mame/video/oneshot.c
+++ b/src/mame/video/oneshot.c
@@ -66,7 +66,7 @@ VIDEO_START( oneshot )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_crosshairs( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_crosshairs( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
oneshot_state *state = machine.driver_data<oneshot_state>();
//int xpos,ypos;
@@ -99,7 +99,7 @@ static void draw_crosshairs( running_machine &machine, bitmap_t &bitmap, const r
state->m_gun_x_p2 = 0;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
oneshot_state *state = machine.driver_data<oneshot_state>();
const UINT16 *source = state->m_sprites;
@@ -156,7 +156,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( oneshot )
+SCREEN_UPDATE_IND16( oneshot )
{
oneshot_state *state = screen.machine().driver_data<oneshot_state>();
@@ -173,7 +173,7 @@ SCREEN_UPDATE( oneshot )
return 0;
}
-SCREEN_UPDATE( maddonna )
+SCREEN_UPDATE_IND16( maddonna )
{
oneshot_state *state = screen.machine().driver_data<oneshot_state>();
diff --git a/src/mame/video/opwolf.c b/src/mame/video/opwolf.c
index 24fadf128f2..4f565702064 100644
--- a/src/mame/video/opwolf.c
+++ b/src/mame/video/opwolf.c
@@ -36,7 +36,7 @@ WRITE16_HANDLER( opwolf_spritectrl_w )
/***************************************************************************/
-SCREEN_UPDATE( opwolf )
+SCREEN_UPDATE_IND16( opwolf )
{
opwolf_state *state = screen.machine().driver_data<opwolf_state>();
int layer[2];
diff --git a/src/mame/video/orbit.c b/src/mame/video/orbit.c
index f9a2f0c69d3..c76b53e347f 100644
--- a/src/mame/video/orbit.c
+++ b/src/mame/video/orbit.c
@@ -37,7 +37,7 @@ VIDEO_START( orbit )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
orbit_state *state = machine.driver_data<orbit_state>();
const UINT8* p = state->m_sprite_ram;
@@ -79,7 +79,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( orbit )
+SCREEN_UPDATE_IND16( orbit )
{
orbit_state *state = screen.machine().driver_data<orbit_state>();
diff --git a/src/mame/video/othldrby.c b/src/mame/video/othldrby.c
index a73047dfdf6..92d341d582f 100644
--- a/src/mame/video/othldrby.c
+++ b/src/mame/video/othldrby.c
@@ -136,7 +136,7 @@ WRITE16_HANDLER( othldrby_vreg_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
othldrby_state *state = machine.driver_data<othldrby_state>();
int offs;
@@ -180,7 +180,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( othldrby )
+SCREEN_UPDATE_IND16( othldrby )
{
othldrby_state *state = screen.machine().driver_data<othldrby_state>();
int layer;
diff --git a/src/mame/video/othunder.c b/src/mame/video/othunder.c
index 873c181ef75..cfc0fa71514 100644
--- a/src/mame/video/othunder.c
+++ b/src/mame/video/othunder.c
@@ -63,7 +63,7 @@ spriteram is being tested, take no notice of that.]
********************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const int *primasks, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const int *primasks, int y_offs )
{
othunder_state *state = machine.driver_data<othunder_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -200,7 +200,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( othunder )
+SCREEN_UPDATE_IND16( othunder )
{
othunder_state *state = screen.machine().driver_data<othunder_state>();
int layer[3];
diff --git a/src/mame/video/overdriv.c b/src/mame/video/overdriv.c
index c953f515d1b..572bfe9ef72 100644
--- a/src/mame/video/overdriv.c
+++ b/src/mame/video/overdriv.c
@@ -50,7 +50,7 @@ void overdriv_zoom_callback_1( running_machine &machine, int *code, int *color,
***************************************************************************/
-SCREEN_UPDATE( overdriv )
+SCREEN_UPDATE_IND16( overdriv )
{
overdriv_state *state = screen.machine().driver_data<overdriv_state>();
diff --git a/src/mame/video/pacland.c b/src/mame/video/pacland.c
index d5a5e0af190..695f98c8ab8 100644
--- a/src/mame/video/pacland.c
+++ b/src/mame/video/pacland.c
@@ -196,8 +196,8 @@ VIDEO_START( pacland )
pacland_state *state = machine.driver_data<pacland_state>();
int color;
- state->m_fg_bitmap = machine.primary_screen->alloc_compatible_bitmap();
- state->m_fg_bitmap->fill(0xffff);
+ state->m_fg_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_fg_bitmap.fill(0xffff);
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,8,8,64,32);
state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,64,32);
@@ -280,7 +280,7 @@ WRITE8_HANDLER( pacland_bankswitch_w )
***************************************************************************/
/* the sprite generator IC is the same as Mappy */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int whichmask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int whichmask)
{
pacland_state *state = machine.driver_data<pacland_state>();
UINT8 *spriteram = state->m_spriteram + 0x780;
@@ -340,7 +340,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_fg(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_fg(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
pacland_state *state = machine.driver_data<pacland_state>();
int y, x;
@@ -348,13 +348,13 @@ static void draw_fg(running_machine &machine, bitmap_t &bitmap, const rectangle
/* draw tilemap transparently over it; this will leave invalid pens (0xffff)
anywhere where the fg_tilemap should be transparent; note that we assume
the fg_bitmap has been pre-erased to 0xffff */
- tilemap_draw(*state->m_fg_bitmap, cliprect, state->m_fg_tilemap, priority, 0);
+ tilemap_draw(state->m_fg_bitmap, cliprect, state->m_fg_tilemap, priority, 0);
/* now copy the fg_bitmap to the destination wherever the sprite pixel allows */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
const UINT8 *pri = &machine.priority_bitmap.pix8(y);
- UINT16 *src = &state->m_fg_bitmap->pix16(y);
+ UINT16 *src = &state->m_fg_bitmap.pix16(y);
UINT16 *dst = &bitmap.pix16(y);
/* only copy if the priority bitmap is 0 (no high priority sprite) and the
@@ -373,7 +373,7 @@ static void draw_fg(running_machine &machine, bitmap_t &bitmap, const rectangle
}
-SCREEN_UPDATE( pacland )
+SCREEN_UPDATE_IND16( pacland )
{
pacland_state *state = screen.machine().driver_data<pacland_state>();
int row;
diff --git a/src/mame/video/pacman.c b/src/mame/video/pacman.c
index 49e6de9a9ef..884dbaf3df6 100644
--- a/src/mame/video/pacman.c
+++ b/src/mame/video/pacman.c
@@ -213,7 +213,7 @@ WRITE8_HANDLER( pacman_flipscreen_w )
}
-SCREEN_UPDATE( pacman )
+SCREEN_UPDATE_IND16( pacman )
{
pacman_state *state = screen.machine().driver_data<pacman_state>();
if (state->m_bgpriority != 0)
@@ -411,7 +411,7 @@ VIDEO_START( s2650games )
tilemap_set_scroll_cols(state->m_bg_tilemap, 32);
}
-SCREEN_UPDATE( s2650games )
+SCREEN_UPDATE_IND16( s2650games )
{
pacman_state *state = screen.machine().driver_data<pacman_state>();
UINT8 *spriteram = screen.machine().generic.spriteram.u8;
diff --git a/src/mame/video/pandoras.c b/src/mame/video/pandoras.c
index 23d887074d1..ba87b66e736 100644
--- a/src/mame/video/pandoras.c
+++ b/src/mame/video/pandoras.c
@@ -156,7 +156,7 @@ WRITE8_HANDLER( pandoras_flipscreen_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8* sr )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* sr )
{
int offs;
@@ -177,7 +177,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( pandoras )
+SCREEN_UPDATE_IND16( pandoras )
{
pandoras_state *state = screen.machine().driver_data<pandoras_state>();
tilemap_draw(bitmap,cliprect, state->m_layer0, 1 ,0);
diff --git a/src/mame/video/paradise.c b/src/mame/video/paradise.c
index 96f0da72043..cf4d75d079e 100644
--- a/src/mame/video/paradise.c
+++ b/src/mame/video/paradise.c
@@ -149,8 +149,8 @@ WRITE8_HANDLER( paradise_pixmap_w )
x = (offset & 0x7f) << 1;
y = (offset >> 7);
- state->m_tmpbitmap->pix16(y, x + 0) = 0x80f - (data >> 4);
- state->m_tmpbitmap->pix16(y, x + 1) = 0x80f - (data & 0x0f);
+ state->m_tmpbitmap.pix16(y, x + 0) = 0x80f - (data >> 4);
+ state->m_tmpbitmap.pix16(y, x + 1) = 0x80f - (data & 0x0f);
}
@@ -169,13 +169,13 @@ VIDEO_START( paradise )
state->m_tilemap_2 = tilemap_create(machine, get_tile_info_2, tilemap_scan_rows, 8, 8, 0x20, 0x20);
/* pixmap */
- state->m_tmpbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_tmpbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
tilemap_set_transparent_pen(state->m_tilemap_0, 0x0f);
tilemap_set_transparent_pen(state->m_tilemap_1, 0xff);
tilemap_set_transparent_pen(state->m_tilemap_2, 0xff);
- state->save_item(NAME(*state->m_tmpbitmap));
+ state->save_item(NAME(state->m_tmpbitmap));
}
@@ -192,7 +192,7 @@ WRITE8_HANDLER( paradise_priority_w )
state->m_priority = data;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
paradise_state *state = machine.driver_data<paradise_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -241,7 +241,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( paradise )
+SCREEN_UPDATE_IND16( paradise )
{
paradise_state *state = screen.machine().driver_data<paradise_state>();
int layers_ctrl = -1;
@@ -270,7 +270,7 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, state->m_tilemap_0, 0, 0);
if (layers_ctrl & 2) tilemap_draw(bitmap, cliprect, state->m_tilemap_1, 0, 0);
- if (layers_ctrl & 4) copybitmap_trans(bitmap, *state->m_tmpbitmap, flip_screen_get(screen.machine()), flip_screen_get(screen.machine()), 0, 0, cliprect, 0x80f);
+ if (layers_ctrl & 4) copybitmap_trans(bitmap, state->m_tmpbitmap, flip_screen_get(screen.machine()), flip_screen_get(screen.machine()), 0, 0, cliprect, 0x80f);
if (state->m_priority & 2)
{
@@ -292,7 +292,7 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
}
/* no pix layer, no tilemap_0, different priority bits */
-SCREEN_UPDATE( torus )
+SCREEN_UPDATE_IND16( torus )
{
paradise_state *state = screen.machine().driver_data<paradise_state>();
@@ -324,7 +324,7 @@ SCREEN_UPDATE( torus )
}
/* I don't know how the priority bits work on this one */
-SCREEN_UPDATE( madball )
+SCREEN_UPDATE_IND16( madball )
{
paradise_state *state = screen.machine().driver_data<paradise_state>();
diff --git a/src/mame/video/parodius.c b/src/mame/video/parodius.c
index 3374cc59012..c8b7483040f 100644
--- a/src/mame/video/parodius.c
+++ b/src/mame/video/parodius.c
@@ -45,7 +45,7 @@ void parodius_sprite_callback( running_machine &machine, int *code, int *color,
***************************************************************************/
-SCREEN_UPDATE( parodius )
+SCREEN_UPDATE_IND16( parodius )
{
parodius_state *state = screen.machine().driver_data<parodius_state>();
int layer[3], bg_colorbase;
diff --git a/src/mame/video/pass.c b/src/mame/video/pass.c
index da7a3da324d..79fdb87983b 100644
--- a/src/mame/video/pass.c
+++ b/src/mame/video/pass.c
@@ -57,7 +57,7 @@ VIDEO_START( pass )
tilemap_set_transparent_pen(state->m_fg_tilemap, 255);
}
-SCREEN_UPDATE( pass )
+SCREEN_UPDATE_IND16( pass )
{
pass_state *state = screen.machine().driver_data<pass_state>();
diff --git a/src/mame/video/pastelg.c b/src/mame/video/pastelg.c
index 4491a5db82e..588a1352c0b 100644
--- a/src/mame/video/pastelg.c
+++ b/src/mame/video/pastelg.c
@@ -302,7 +302,7 @@ VIDEO_START( pastelg )
******************************************************************************/
-SCREEN_UPDATE( pastelg )
+SCREEN_UPDATE_IND16( pastelg )
{
pastelg_state *state = screen.machine().driver_data<pastelg_state>();
if (state->m_dispflag)
diff --git a/src/mame/video/pbaction.c b/src/mame/video/pbaction.c
index 11c685062e2..7bdfbfd5c55 100644
--- a/src/mame/video/pbaction.c
+++ b/src/mame/video/pbaction.c
@@ -84,7 +84,7 @@ VIDEO_START( pbaction )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
pbaction_state *state = machine.driver_data<pbaction_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -132,7 +132,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( pbaction )
+SCREEN_UPDATE_IND16( pbaction )
{
pbaction_state *state = screen.machine().driver_data<pbaction_state>();
diff --git a/src/mame/video/pcktgal.c b/src/mame/video/pcktgal.c
index b265759114b..053ecb6960c 100644
--- a/src/mame/video/pcktgal.c
+++ b/src/mame/video/pcktgal.c
@@ -30,7 +30,7 @@ PALETTE_INIT( pcktgal )
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
pcktgal_state *state = machine.driver_data<pcktgal_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -64,7 +64,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( pcktgal )
+SCREEN_UPDATE_IND16( pcktgal )
{
// flip_screen_set(screen.machine(), screen.machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
screen.machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(screen.machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
@@ -72,7 +72,7 @@ SCREEN_UPDATE( pcktgal )
return 0;
}
-SCREEN_UPDATE( pcktgalb )
+SCREEN_UPDATE_IND16( pcktgalb )
{
// the bootleg doesn't properly set the tilemap registers, because it's on non-original hardware, which probably doesn't have the flexible tilemaps.
screen.machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw_bootleg(screen.machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0, 2);
diff --git a/src/mame/video/pgm.c b/src/mame/video/pgm.c
index e9939a0f843..414aa9df7af 100644
--- a/src/mame/video/pgm.c
+++ b/src/mame/video/pgm.c
@@ -164,7 +164,7 @@ static void draw_sprite_line( running_machine &machine, int wide, UINT16* dest,
}
}
-static void draw_sprite_new_zoomed( pgm_state *state, running_machine &machine, int wide, int high, int xpos, int ypos, int palt, int flip, bitmap_t &bitmap, bitmap_t &priority_bitmap, UINT32 xzoom, int xgrow, UINT32 yzoom, int ygrow, int pri )
+static void draw_sprite_new_zoomed( pgm_state *state, running_machine &machine, int wide, int high, int xpos, int ypos, int palt, int flip, bitmap_ind16 &bitmap, bitmap_ind8 &priority_bitmap, UINT32 xzoom, int xgrow, UINT32 yzoom, int ygrow, int pri )
{
int ycnt;
int ydrawpos;
@@ -429,7 +429,7 @@ static void draw_sprite_line_basic( running_machine &machine, int wide, UINT16*
simplified version for non-zoomed cases, a bit faster
*************************************************************************/
-static void draw_sprite_new_basic( pgm_state *state, running_machine &machine, int wide, int high, int xpos, int ypos, int palt, int flip, bitmap_t &bitmap, bitmap_t &priority_bitmap, int pri )
+static void draw_sprite_new_basic( pgm_state *state, running_machine &machine, int wide, int high, int xpos, int ypos, int palt, int flip, bitmap_ind16 &bitmap, bitmap_ind8 &priority_bitmap, int pri )
{
int ycnt;
int ydrawpos;
@@ -486,7 +486,7 @@ static void draw_sprite_new_basic( pgm_state *state, running_machine &machine, i
}
-static void draw_sprites( pgm_state *state, running_machine &machine, bitmap_t& spritebitmap, UINT16 *sprite_source, bitmap_t& priority_bitmap )
+static void draw_sprites( pgm_state *state, running_machine &machine, bitmap_ind16& spritebitmap, UINT16 *sprite_source, bitmap_ind8& priority_bitmap )
{
/* ZZZZ Zxxx xxxx xxxx
zzzz z-yy yyyy yyyy
@@ -643,7 +643,7 @@ VIDEO_START( pgm )
state->save_pointer(NAME(state->m_spritebufferram), 0xa00/2);
}
-SCREEN_UPDATE( pgm )
+SCREEN_UPDATE_IND16( pgm )
{
pgm_state *state = screen.machine().driver_data<pgm_state>();
int y;
diff --git a/src/mame/video/phoenix.c b/src/mame/video/phoenix.c
index b172f8c6a44..fbf748fbb1f 100644
--- a/src/mame/video/phoenix.c
+++ b/src/mame/video/phoenix.c
@@ -450,7 +450,7 @@ READ_LINE_DEVICE_HANDLER( survival_sid_callback )
***************************************************************************/
-SCREEN_UPDATE( phoenix )
+SCREEN_UPDATE_IND16( phoenix )
{
phoenix_state *state = screen.machine().driver_data<phoenix_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/pingpong.c b/src/mame/video/pingpong.c
index eb963211e31..bced0ecb544 100644
--- a/src/mame/video/pingpong.c
+++ b/src/mame/video/pingpong.c
@@ -113,7 +113,7 @@ VIDEO_START( pingpong )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* This is strange; it's unlikely that the sprites actually have a hardware */
/* clipping region, but I haven't found another way to have them masked by */
@@ -146,7 +146,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( pingpong )
+SCREEN_UPDATE_IND16( pingpong )
{
pingpong_state *state = screen.machine().driver_data<pingpong_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/pirates.c b/src/mame/video/pirates.c
index 9e503abe309..ca87c953970 100644
--- a/src/mame/video/pirates.c
+++ b/src/mame/video/pirates.c
@@ -74,7 +74,7 @@ WRITE16_HANDLER( pirates_bg_tileram_w )
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
pirates_state *state = machine.driver_data<pirates_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -107,7 +107,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE(pirates)
+SCREEN_UPDATE_IND16(pirates)
{
pirates_state *state = screen.machine().driver_data<pirates_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_scroll[0]);
diff --git a/src/mame/video/pitnrun.c b/src/mame/video/pitnrun.c
index 674dacde664..70eff3b904d 100644
--- a/src/mame/video/pitnrun.c
+++ b/src/mame/video/pitnrun.c
@@ -175,14 +175,14 @@ VIDEO_START(pitnrun)
state->m_fg = tilemap_create( machine, get_tile_info1,tilemap_scan_rows,8,8,32,32 );
state->m_bg = tilemap_create( machine, get_tile_info2,tilemap_scan_rows,8,8,32*4,32 );
tilemap_set_transparent_pen( state->m_fg, 0 );
- state->m_tmp_bitmap[0] = auto_bitmap_alloc(machine,128,128,machine.primary_screen->format());
- state->m_tmp_bitmap[1] = auto_bitmap_alloc(machine,128,128,machine.primary_screen->format());
- state->m_tmp_bitmap[2] = auto_bitmap_alloc(machine,128,128,machine.primary_screen->format());
- state->m_tmp_bitmap[3] = auto_bitmap_alloc(machine,128,128,machine.primary_screen->format());
+ state->m_tmp_bitmap[0] = auto_bitmap_ind16_alloc(machine,128,128);
+ state->m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine,128,128);
+ state->m_tmp_bitmap[2] = auto_bitmap_ind16_alloc(machine,128,128);
+ state->m_tmp_bitmap[3] = auto_bitmap_ind16_alloc(machine,128,128);
pitnrun_spotlights(machine);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
pitnrun_state *state = machine.driver_data<pitnrun_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -217,7 +217,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( pitnrun )
+SCREEN_UPDATE_IND16( pitnrun )
{
pitnrun_state *state = screen.machine().driver_data<pitnrun_state>();
int dx=0,dy=0;
diff --git a/src/mame/video/pk8000.c b/src/mame/video/pk8000.c
index 7e9b861cfe8..3685082f511 100644
--- a/src/mame/video/pk8000.c
+++ b/src/mame/video/pk8000.c
@@ -95,7 +95,7 @@ PALETTE_INIT( pk8000 )
palette_set_colors(machine, 0, pk8000_palette, ARRAY_LENGTH(pk8000_palette));
}
-UINT32 pk8000_video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *videomem)
+UINT32 pk8000_video_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *videomem)
{
int x,y,j,b;
UINT16 offset = (pk8000_video_mode & 0xc0) << 8;
diff --git a/src/mame/video/pktgaldx.c b/src/mame/video/pktgaldx.c
index 7ff44e6083a..1ea3b25c411 100644
--- a/src/mame/video/pktgaldx.c
+++ b/src/mame/video/pktgaldx.c
@@ -5,7 +5,7 @@
/* Video on the orginal */
-SCREEN_UPDATE( pktgaldx )
+SCREEN_UPDATE_IND16( pktgaldx )
{
pktgaldx_state *state = screen.machine().driver_data<pktgaldx_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -17,14 +17,14 @@ SCREEN_UPDATE( pktgaldx )
screen.machine().priority_bitmap.fill(0);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400, true);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400, true);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
/* Video for the bootleg */
-SCREEN_UPDATE( pktgaldb )
+SCREEN_UPDATE_IND16( pktgaldb )
{
pktgaldx_state *state = screen.machine().driver_data<pktgaldx_state>();
int x, y;
diff --git a/src/mame/video/playch10.c b/src/mame/video/playch10.c
index 3ff8b937cdf..9f666fd4f6c 100644
--- a/src/mame/video/playch10.c
+++ b/src/mame/video/playch10.c
@@ -121,7 +121,7 @@ VIDEO_START( playch10_hboard )
***************************************************************************/
-SCREEN_UPDATE( playch10_single )
+SCREEN_UPDATE_IND16( playch10_single )
{
playch10_state *state = screen.machine().driver_data<playch10_state>();
device_t *ppu = screen.machine().device("ppu");
@@ -150,14 +150,14 @@ SCREEN_UPDATE( playch10_single )
return 0;
}
-SCREEN_UPDATE( playch10_top )
+SCREEN_UPDATE_IND16( playch10_top )
{
playch10_state *state = screen.machine().driver_data<playch10_state>();
device_t *ppu = screen.machine().device("ppu");
/* Single Monitor version */
if (state->m_pc10_bios != 1)
- return SCREEN_UPDATE_CALL(playch10_single);
+ return SCREEN_UPDATE16_CALL(playch10_single);
if ( !state->m_pc10_dispmask )
/* render the ppu */
@@ -168,13 +168,13 @@ SCREEN_UPDATE( playch10_top )
return 0;
}
-SCREEN_UPDATE( playch10_bottom )
+SCREEN_UPDATE_IND16( playch10_bottom )
{
playch10_state *state = screen.machine().driver_data<playch10_state>();
/* Single Monitor version */
if (state->m_pc10_bios != 1)
- return SCREEN_UPDATE_CALL(playch10_single);
+ return SCREEN_UPDATE16_CALL(playch10_single);
/* When the bios is accessing vram, the video circuitry can't access it */
diff --git a/src/mame/video/playmark.c b/src/mame/video/playmark.c
index b1f6318d02c..b4fd37512f2 100644
--- a/src/mame/video/playmark.c
+++ b/src/mame/video/playmark.c
@@ -396,7 +396,7 @@ WRITE16_HANDLER( hrdtimes_scroll_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int codeshift )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int codeshift )
{
playmark_state *state = machine.driver_data<playmark_state>();
int offs, start_offset = state->m_spriteram_size / 2 - 4;
@@ -440,7 +440,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void bigtwinb_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int codeshift )
+static void bigtwinb_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int codeshift )
{
playmark_state *state = machine.driver_data<playmark_state>();
int offs, start_offset = state->m_spriteram_size / 2 - 4;
@@ -477,7 +477,7 @@ static void bigtwinb_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bitmap( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
playmark_state *state = machine.driver_data<playmark_state>();
int x, y, count;
@@ -518,7 +518,7 @@ static void draw_bitmap( running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( bigtwin )
+SCREEN_UPDATE_IND16( bigtwin )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
@@ -533,7 +533,7 @@ SCREEN_UPDATE( bigtwin )
}
-SCREEN_UPDATE( bigtwinb )
+SCREEN_UPDATE_IND16( bigtwinb )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
@@ -550,7 +550,7 @@ SCREEN_UPDATE( bigtwinb )
return 0;
}
-SCREEN_UPDATE( excelsr )
+SCREEN_UPDATE_IND16( excelsr )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
@@ -564,7 +564,7 @@ SCREEN_UPDATE( excelsr )
return 0;
}
-SCREEN_UPDATE( wbeachvl )
+SCREEN_UPDATE_IND16( wbeachvl )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
@@ -591,7 +591,7 @@ SCREEN_UPDATE( wbeachvl )
return 0;
}
-SCREEN_UPDATE( hrdtimes )
+SCREEN_UPDATE_IND16( hrdtimes )
{
playmark_state *state = screen.machine().driver_data<playmark_state>();
diff --git a/src/mame/video/plygonet.c b/src/mame/video/plygonet.c
index 78db58950a3..1dd74f655a5 100644
--- a/src/mame/video/plygonet.c
+++ b/src/mame/video/plygonet.c
@@ -123,7 +123,7 @@ VIDEO_START( polygonet )
state->save_item(NAME(state->m_roz_vram));
}
-SCREEN_UPDATE( polygonet )
+SCREEN_UPDATE_IND16( polygonet )
{
polygonet_state *state = screen.machine().driver_data<polygonet_state>();
device_t *k053936 = screen.machine().device("k053936");
diff --git a/src/mame/video/pokechmp.c b/src/mame/video/pokechmp.c
index a643a48f899..167d9352059 100644
--- a/src/mame/video/pokechmp.c
+++ b/src/mame/video/pokechmp.c
@@ -38,7 +38,7 @@ VIDEO_START( pokechmp )
8, 8, 32, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
pokechmp_state *state = machine.driver_data<pokechmp_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -72,7 +72,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( pokechmp )
+SCREEN_UPDATE_IND16( pokechmp )
{
pokechmp_state *state = screen.machine().driver_data<pokechmp_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/polepos.c b/src/mame/video/polepos.c
index 092c0cc8e77..3d537dd1de9 100644
--- a/src/mame/video/polepos.c
+++ b/src/mame/video/polepos.c
@@ -363,7 +363,7 @@ WRITE8_HANDLER( polepos_alpha_w )
***************************************************************************/
-static void draw_road(running_machine &machine, bitmap_t &bitmap)
+static void draw_road(running_machine &machine, bitmap_ind16 &bitmap)
{
polepos_state *state = machine.driver_data<polepos_state>();
const UINT8 *road_control = machine.region("gfx5")->base();
@@ -439,7 +439,7 @@ static void draw_road(running_machine &machine, bitmap_t &bitmap)
}
}
-static void zoom_sprite(running_machine &machine, bitmap_t &bitmap,int big,
+static void zoom_sprite(running_machine &machine, bitmap_ind16 &bitmap,int big,
UINT32 code,UINT32 color,int flipx,int sx,int sy,
int sizex,int sizey)
{
@@ -490,7 +490,7 @@ static void zoom_sprite(running_machine &machine, bitmap_t &bitmap,int big,
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
polepos_state *state = machine.driver_data<polepos_state>();
UINT16 *posmem = &state->m_sprite16_memory[0x380];
@@ -520,7 +520,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( polepos )
+SCREEN_UPDATE_IND16( polepos )
{
polepos_state *state = screen.machine().driver_data<polepos_state>();
rectangle clip = cliprect;
diff --git a/src/mame/video/policetr.c b/src/mame/video/policetr.c
index ae9fa5b602a..aedd6210bd0 100644
--- a/src/mame/video/policetr.c
+++ b/src/mame/video/policetr.c
@@ -348,7 +348,7 @@ WRITE32_HANDLER( policetr_palette_data_w )
*
*************************************/
-SCREEN_UPDATE( policetr )
+SCREEN_UPDATE_IND16( policetr )
{
policetr_state *state = screen.machine().driver_data<policetr_state>();
int width = cliprect.max_x - cliprect.min_x + 1;
diff --git a/src/mame/video/polyplay.c b/src/mame/video/polyplay.c
index 5f6fc785232..2e6b28cb0f0 100644
--- a/src/mame/video/polyplay.c
+++ b/src/mame/video/polyplay.c
@@ -47,7 +47,7 @@ VIDEO_START( polyplay )
}
-SCREEN_UPDATE( polyplay )
+SCREEN_UPDATE_IND16( polyplay )
{
polyplay_state *state = screen.machine().driver_data<polyplay_state>();
UINT8 *videoram = state->m_videoram;
diff --git a/src/mame/video/poolshrk.c b/src/mame/video/poolshrk.c
index ea0ab5acfd6..1dfea721dec 100644
--- a/src/mame/video/poolshrk.c
+++ b/src/mame/video/poolshrk.c
@@ -27,7 +27,7 @@ VIDEO_START( poolshrk )
}
-SCREEN_UPDATE( poolshrk )
+SCREEN_UPDATE_IND16( poolshrk )
{
poolshrk_state *state = screen.machine().driver_data<poolshrk_state>();
int i;
diff --git a/src/mame/video/pooyan.c b/src/mame/video/pooyan.c
index 5fe5ae86076..fe58e8f11b7 100644
--- a/src/mame/video/pooyan.c
+++ b/src/mame/video/pooyan.c
@@ -157,7 +157,7 @@ WRITE8_HANDLER( pooyan_flipscreen_w )
*
*************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
pooyan_state *state = machine.driver_data<pooyan_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -192,7 +192,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
*
*************************************/
-SCREEN_UPDATE( pooyan )
+SCREEN_UPDATE_IND16( pooyan )
{
pooyan_state *state = screen.machine().driver_data<pooyan_state>();
diff --git a/src/mame/video/popeye.c b/src/mame/video/popeye.c
index d9223ce8146..1e0cc544136 100644
--- a/src/mame/video/popeye.c
+++ b/src/mame/video/popeye.c
@@ -247,7 +247,7 @@ VIDEO_START( skyskipr )
{
popeye_state *state = machine.driver_data<popeye_state>();
state->m_bitmapram = auto_alloc_array(machine, UINT8, popeye_bitmapram_size);
- state->m_tmpbitmap2 = auto_bitmap_alloc(machine,1024,1024,machine.primary_screen->format()); /* actually 1024x512 but not rolling over vertically? */
+ state->m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine,1024,1024); /* actually 1024x512 but not rolling over vertically? */
state->m_bitmap_type = TYPE_SKYSKIPR;
@@ -265,7 +265,7 @@ VIDEO_START( popeye )
{
popeye_state *state = machine.driver_data<popeye_state>();
state->m_bitmapram = auto_alloc_array(machine, UINT8, popeye_bitmapram_size);
- state->m_tmpbitmap2 = auto_bitmap_alloc(machine,512,512,machine.primary_screen->format());
+ state->m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine,512,512);
state->m_bitmap_type = TYPE_POPEYE;
@@ -279,7 +279,7 @@ VIDEO_START( popeye )
state_save_register_global_pointer(machine, state->m_bitmapram, popeye_bitmapram_size);
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
popeye_state *state = machine.driver_data<popeye_state>();
int offs;
@@ -317,7 +317,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
popeye_state *state = machine.driver_data<popeye_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -371,7 +371,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( popeye )
+SCREEN_UPDATE_IND16( popeye )
{
popeye_state *state = screen.machine().driver_data<popeye_state>();
draw_background(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/popper.c b/src/mame/video/popper.c
index ca1b010ff08..20ab53b0f73 100644
--- a/src/mame/video/popper.c
+++ b/src/mame/video/popper.c
@@ -204,7 +204,7 @@ VIDEO_START( popper )
state->m_tilemap_clip = machine.primary_screen->visible_area();
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
popper_state *state = machine.driver_data<popper_state>();
int offs, sx, sy, flipx, flipy;
@@ -246,7 +246,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const recta
}
}
-SCREEN_UPDATE( popper )
+SCREEN_UPDATE_IND16( popper )
{
popper_state *state = screen.machine().driver_data<popper_state>();
rectangle finalclip = state->m_tilemap_clip;
diff --git a/src/mame/video/portrait.c b/src/mame/video/portrait.c
index 39dc21a5f5f..5775979f772 100644
--- a/src/mame/video/portrait.c
+++ b/src/mame/video/portrait.c
@@ -129,7 +129,7 @@ PALETTE_INIT( portrait )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
portrait_state *state = machine.driver_data<portrait_state>();
UINT8 *source = state->m_spriteram;
@@ -188,7 +188,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( portrait )
+SCREEN_UPDATE_IND16( portrait )
{
portrait_state *state = screen.machine().driver_data<portrait_state>();
rectangle cliprect_scroll, cliprect_no_scroll;
diff --git a/src/mame/video/powerins.c b/src/mame/video/powerins.c
index f9e145ea399..159dcce2268 100644
--- a/src/mame/video/powerins.c
+++ b/src/mame/video/powerins.c
@@ -263,7 +263,7 @@ Offset: Format: Value:
#define SIGN_EXTEND_POS(_var_) {_var_ &= 0x3ff; if (_var_ > 0x1ff) _var_ -= 0x400;}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
powerins_state *state = machine.driver_data<powerins_state>();
UINT16 *source = state->m_spriteram + 0x8000/2;
@@ -340,7 +340,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
***************************************************************************/
-SCREEN_UPDATE( powerins )
+SCREEN_UPDATE_IND16( powerins )
{
powerins_state *state = screen.machine().driver_data<powerins_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/ppu2c0x.c b/src/mame/video/ppu2c0x.c
index 6819dcf20a2..f324acbffb0 100644
--- a/src/mame/video/ppu2c0x.c
+++ b/src/mame/video/ppu2c0x.c
@@ -77,7 +77,7 @@ typedef struct _ppu2c0x_state ppu2c0x_state;
struct _ppu2c0x_state
{
address_space *space; /* memory space */
- bitmap_t *bitmap; /* target bitmap */
+ bitmap_ind16 *bitmap; /* target bitmap */
UINT8 *spriteram; /* sprite ram */
pen_t *colortable; /* color table modified at run time */
pen_t *colortable_mono; /* monochromatic color table modified at run time */
@@ -368,7 +368,7 @@ static void draw_background( device_t *device, UINT8 *line_priority )
ppu2c0x_state *ppu2c0x = get_token(device);
/* cache some values locally */
- bitmap_t &bitmap = *ppu2c0x->bitmap;
+ bitmap_ind16 &bitmap = *ppu2c0x->bitmap;
const int *ppu_regs = &ppu2c0x->regs[0];
const int scanline = ppu2c0x->scanline;
const int refresh_data = ppu2c0x->refresh_data;
@@ -514,7 +514,7 @@ static void draw_sprites( device_t *device, UINT8 *line_priority )
ppu2c0x_state *ppu2c0x = get_token(device);
/* cache some values locally */
- bitmap_t &bitmap = *ppu2c0x->bitmap;
+ bitmap_ind16 &bitmap = *ppu2c0x->bitmap;
const int scanline = ppu2c0x->scanline;
const int sprite_page = ppu2c0x->sprite_page;
const UINT8 *sprite_ram = ppu2c0x->spriteram;
@@ -733,7 +733,7 @@ static void render_scanline( device_t *device )
draw_background(device, line_priority);
else
{
- bitmap_t &bitmap = *ppu2c0x->bitmap;
+ bitmap_ind16 &bitmap = *ppu2c0x->bitmap;
const int scanline = ppu2c0x->scanline;
UINT8 color_mask;
UINT16 back_pen;
@@ -781,7 +781,7 @@ static void update_scanline( device_t *device )
}
else
{
- bitmap_t &bitmap = *ppu2c0x->bitmap;
+ bitmap_ind16 &bitmap = *ppu2c0x->bitmap;
UINT8 color_mask;
UINT16 back_pen;
int i;
@@ -1206,7 +1206,7 @@ void ppu2c0x_spriteram_dma( address_space *space, device_t *device, const UINT8
*
*************************************/
-void ppu2c0x_render( device_t *device, bitmap_t &bitmap, int flipx, int flipy, int sx, int sy )
+void ppu2c0x_render( device_t *device, bitmap_ind16 &bitmap, int flipx, int flipy, int sx, int sy )
{
ppu2c0x_state *ppu2c0x = get_token(device);
copybitmap(bitmap, *ppu2c0x->bitmap, flipx, flipy, sx, sy, bitmap.cliprect());
@@ -1320,7 +1320,7 @@ static DEVICE_START( ppu2c0x )
ppu2c0x->color_base = intf->color_base;
/* allocate a screen bitmap, videomem and spriteram, a dirtychar array and the monochromatic colortable */
- ppu2c0x->bitmap = auto_bitmap_alloc(device->machine(), VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT, device->machine().primary_screen->format());
+ ppu2c0x->bitmap = auto_bitmap_ind16_alloc(device->machine(), VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT);
ppu2c0x->spriteram = auto_alloc_array_clear(device->machine(), UINT8, SPRITERAM_SIZE);
ppu2c0x->colortable = auto_alloc_array(device->machine(), pen_t, ARRAY_LENGTH(default_colortable));
ppu2c0x->colortable_mono = auto_alloc_array(device->machine(), pen_t, ARRAY_LENGTH(default_colortable_mono));
diff --git a/src/mame/video/ppu2c0x.h b/src/mame/video/ppu2c0x.h
index 5aa9b033b15..3e5fd5a38f4 100644
--- a/src/mame/video/ppu2c0x.h
+++ b/src/mame/video/ppu2c0x.h
@@ -109,7 +109,7 @@ void ppu2c0x_init_palette(running_machine &machine, int first_entry );
void ppu2c0x_init_palette_rgb(running_machine &machine, int first_entry );
void ppu2c0x_spriteram_dma(address_space *space, device_t *device, const UINT8 page ) ATTR_NONNULL(1);
-void ppu2c0x_render( device_t *device, bitmap_t &bitmap, int flipx, int flipy, int sx, int sy ) ATTR_NONNULL(1);
+void ppu2c0x_render( device_t *device, bitmap_ind16 &bitmap, int flipx, int flipy, int sx, int sy ) ATTR_NONNULL(1);
int ppu2c0x_get_pixel( device_t *device, int x, int y ) ATTR_NONNULL(1);
int ppu2c0x_get_colorbase( device_t *device ) ATTR_NONNULL(1);
int ppu2c0x_get_current_scanline( device_t *device ) ATTR_NONNULL(1);
diff --git a/src/mame/video/prehisle.c b/src/mame/video/prehisle.c
index c144a668a87..0ca669a57f6 100644
--- a/src/mame/video/prehisle.c
+++ b/src/mame/video/prehisle.c
@@ -128,7 +128,7 @@ o fedcba9876543210
3 xxxx............ color+priority, other bits unknown
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int foreground )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int foreground )
{
prehisle_state *state = machine.driver_data<prehisle_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -164,7 +164,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( prehisle )
+SCREEN_UPDATE_IND16( prehisle )
{
prehisle_state *state = screen.machine().driver_data<prehisle_state>();
diff --git a/src/mame/video/psikyo.c b/src/mame/video/psikyo.c
index 46878dcbf91..8397e5164a0 100644
--- a/src/mame/video/psikyo.c
+++ b/src/mame/video/psikyo.c
@@ -263,7 +263,7 @@ Note: Not all sprites are displayed: in the top part of spriteram
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int trans_pen )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int trans_pen )
{
psikyo_state *state = machine.driver_data<psikyo_state>();
@@ -382,7 +382,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
// until I work out why it makes a partial copy of the sprite list, and how best to apply it
// sprite placement of the explosion graphic seems incorrect compared to the original sets? (no / different zoom support?)
// it might be a problem with the actual bootleg
-static void draw_sprites_bootleg( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int trans_pen )
+static void draw_sprites_bootleg( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int trans_pen )
{
psikyo_state *state = machine.driver_data<psikyo_state>();
@@ -524,7 +524,7 @@ static int tilemap_width( int size )
return 0x10 * 16;
}
-SCREEN_UPDATE( psikyo )
+SCREEN_UPDATE_IND16( psikyo )
{
psikyo_state *state = screen.machine().driver_data<psikyo_state>();
int i, layers_ctrl = -1;
@@ -698,7 +698,7 @@ SCREEN_UPDATE( psikyo )
*/
-SCREEN_UPDATE( psikyo_bootleg )
+SCREEN_UPDATE_IND16( psikyo_bootleg )
{
psikyo_state *state = screen.machine().driver_data<psikyo_state>();
int i, layers_ctrl = -1;
diff --git a/src/mame/video/psikyo4.c b/src/mame/video/psikyo4.c
index 2ffde63fb5e..ab1513ad77d 100644
--- a/src/mame/video/psikyo4.c
+++ b/src/mame/video/psikyo4.c
@@ -31,7 +31,7 @@ HgKairak: 86010000 1f201918 a0000000 Large Screen
/* --- SPRITES --- */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 scr )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 scr )
{
/*- Sprite Format 0x0000 - 0x2bff -**
@@ -127,14 +127,14 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( psikyo4_left )
+SCREEN_UPDATE_IND16( psikyo4_left )
{
bitmap.fill(0x1000, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect, 0x0000);
return 0;
}
-SCREEN_UPDATE( psikyo4_right )
+SCREEN_UPDATE_IND16( psikyo4_right )
{
bitmap.fill(0x1001, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect, 0x2000);
diff --git a/src/mame/video/psikyosh.c b/src/mame/video/psikyosh.c
index 52f7b622a0b..ff2ebf4df61 100644
--- a/src/mame/video/psikyosh.c
+++ b/src/mame/video/psikyosh.c
@@ -147,13 +147,11 @@ while (0) \
draw_scanline32_alpha - take an RGB-encoded UINT32
scanline and alpha-blend it into the destination bitmap
-------------------------------------------------*/
-static void draw_scanline32_alpha(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, int alpha)
+static void draw_scanline32_alpha(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, int alpha)
{
DECLARE_NO_PRIORITY;
UINT32 transpen = BG_TRANSPEN;
- assert(bitmap.bpp() == 32);
-
DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN_ALPHARENDER32, NO_PRIORITY);
}
@@ -161,14 +159,11 @@ static void draw_scanline32_alpha(bitmap_t &bitmap, INT32 destx, INT32 desty, IN
draw_scanline32_argb - take an ARGB-encoded UINT32
scanline and alpha-blend it into the destination bitmap
-------------------------------------------------*/
-static void draw_scanline32_argb(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
+static void draw_scanline32_argb(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
{
DECLARE_NO_PRIORITY;
UINT32 transpen = BG_TRANSPEN;
- assert(bitmap.bpp() == 32);
- assert(bitmap.format() == BITMAP_FORMAT_ARGB32);
-
DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN_ARGBRENDER32, NO_PRIORITY);
}
@@ -176,14 +171,11 @@ static void draw_scanline32_argb(bitmap_t &bitmap, INT32 destx, INT32 desty, INT
draw_scanline32_tranpens - take an RGB-encoded UINT32
scanline and copy it into the destination bitmap, testing for the special ARGB transpen
-------------------------------------------------*/
-static void draw_scanline32_transpen(bitmap_t &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
+static void draw_scanline32_transpen(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
{
DECLARE_NO_PRIORITY;
UINT32 transpen = BG_TRANSPEN;
- assert(bitmap.bpp() == 32);
- assert(bitmap.format() == BITMAP_FORMAT_ARGB32);
-
DRAWSCANLINE_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN_RENDER32, NO_PRIORITY);
}
@@ -192,7 +184,7 @@ static void draw_scanline32_transpen(bitmap_t &bitmap, INT32 destx, INT32 desty,
a single transparent pen, storing the alpha value
in alpha field of ARGB32, negative alpha implies alphatable
-------------------------------------------------*/
-static void drawgfx_alphastore(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+static void drawgfx_alphastore(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
int fixedalpha)
{
@@ -238,7 +230,7 @@ static void drawgfx_alphastore(bitmap_t &dest, const rectangle &cliprect, const
a fixed alpha value, or if alpha==-1 then uses
the per-pen alphatable[] array
-------------------------------------------------*/
-static void drawgfx_alphatable(bitmap_t &dest, const rectangle &cliprect, const gfx_element *gfx,
+static void drawgfx_alphatable(bitmap_rgb32 &dest, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
int fixedalpha)
{
@@ -276,7 +268,7 @@ static void drawgfx_alphatable(bitmap_t &dest, const rectangle &cliprect, const
/* 'Normal' layers, no line/columnscroll. No per-line effects.
Zooming isn't supported just because it's not used and it would be slow */
-static void draw_bglayer( running_machine &machine, int layer, bitmap_t &bitmap, const rectangle &cliprect, UINT8 req_pri )
+static void draw_bglayer( running_machine &machine, int layer, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 req_pri )
{
psikyosh_state *state = machine.driver_data<psikyosh_state>();
gfx_element *gfx;
@@ -351,11 +343,11 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
rectangle cliprect;
cliprect.min_x = 0;
- cliprect.max_x = state->m_bg_bitmap->width() - 1;
+ cliprect.max_x = state->m_bg_bitmap.width() - 1;
cliprect.min_y = sy * 16;
cliprect.max_y = cliprect.min_y + 16 - 1;
- state->m_bg_bitmap->fill(BG_TRANSPEN, cliprect);
+ state->m_bg_bitmap.fill(BG_TRANSPEN, cliprect);
int width = size * 16;
int offs = size * sy;
@@ -370,7 +362,7 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
int need_alpha = alpha < 0 ? -1 : 0xff; // store per-pen alpha in bitmap, otherwise don't since we'll need it per-line
if(tileno) { // valid tile, but blank in all games?
- drawgfx_alphastore(*state->m_bg_bitmap, state->m_bg_bitmap->cliprect(), gfx, tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha);
+ drawgfx_alphastore(state->m_bg_bitmap, state->m_bg_bitmap.cliprect(), gfx, tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha);
}
offs++;
@@ -384,7 +376,7 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
Bitmap is first rendered to an ARGB image, taking into account the per-pen alpha (if used).
From there we extract data as we compose the image, one scanline at a time, blending the ARGB pixels
into the RGB32 bitmap (with either the alpha information from the ARGB, or per-line alpha */
-static void draw_bglayerscroll( running_machine &machine, int layer, bitmap_t &bitmap, const rectangle &cliprect, UINT8 req_pri )
+static void draw_bglayerscroll( running_machine &machine, int layer, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 req_pri )
{
psikyosh_state *state = machine.driver_data<psikyosh_state>();
assert(BG_LINE(layer));
@@ -438,7 +430,7 @@ static void draw_bglayerscroll( running_machine &machine, int layer, bitmap_t &b
g_profiler.start(PROFILER_USER2);
UINT32 tilemap_line[32 * 16];
UINT32 scr_line[64 * 8];
- extract_scanline32(*state->m_bg_bitmap, 0, tilemap_scanline, width, tilemap_line);
+ extract_scanline32(state->m_bg_bitmap, 0, tilemap_scanline, width, tilemap_line);
g_profiler.stop();
/* slow bit, needs optimising. apply scrollx and zoomx by assembling scanline from row */
@@ -479,7 +471,7 @@ static void draw_bglayerscroll( running_machine &machine, int layer, bitmap_t &b
}
/* 3 BG layers, with priority */
-static void draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 req_pri )
+static void draw_background( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 req_pri )
{
psikyosh_state *state = machine.driver_data<psikyosh_state>();
int i;
@@ -527,7 +519,7 @@ static void draw_background( running_machine &machine, bitmap_t &bitmap, const r
/* Note that Level 5-4 of sbomberb boss is perfect! (Alpha blended zoomed) as well as S1945II logo */
/* pixel is only plotted if z is >= priority_buffer[y][x] */
static void psikyosh_drawgfxzoom( running_machine &machine,
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
int alpha, int zoomx, int zoomy, int wide, int high, UINT32 z)
{
@@ -620,7 +612,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
const UINT8 *source = code_base + (y_index) * gfx->line_modulo + x_index_base;
UINT32 *dest = &dest_bmp.pix32(sy, sx);
- UINT16 *pri = &state->m_z_bitmap->pix16(sy, sx);
+ UINT16 *pri = &state->m_z_bitmap.pix16(sy, sx);
int src_modulo = yinc * gfx->line_modulo - xinc * (ex - sx);
int dst_modulo = dest_bmp.rowpixels() - (ex - sx);
@@ -679,7 +671,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
const UINT8 *source = code_base + y_index * gfx->line_modulo + x_index_base;
UINT32 *dest = &dest_bmp.pix32(sy, sx);
- UINT16 *pri = &state->m_z_bitmap->pix16(sy, sx);
+ UINT16 *pri = &state->m_z_bitmap.pix16(sy, sx);
int src_modulo = yinc * gfx->line_modulo - xinc * (ex - sx);
int dst_modulo = dest_bmp.rowpixels() - (ex - sx);
@@ -739,7 +731,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
const UINT8 *source = code_base + y_index * gfx->line_modulo + x_index_base;
UINT32 *dest = &dest_bmp.pix32(sy, sx);
- UINT16 *pri = &state->m_z_bitmap->pix16(sy, sx);
+ UINT16 *pri = &state->m_z_bitmap.pix16(sy, sx);
int src_modulo = yinc * gfx->line_modulo - xinc * (ex - sx);
int dst_modulo = dest_bmp.rowpixels() - (ex - sx);
@@ -816,7 +808,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
for (ypixel = 0; ypixel < gfx->height; ypixel++)
{
const UINT8 *source = code_base + ypixel * gfx->line_modulo;
- UINT8 *dest = &state->m_zoom_bitmap->pix8(ypixel + ytile*gfx->height);
+ UINT8 *dest = &state->m_zoom_bitmap.pix8(ypixel + ytile*gfx->height);
for (xpixel = 0; xpixel < gfx->width; xpixel++)
{
@@ -891,9 +883,9 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
- UINT16 *pri = &state->m_z_bitmap->pix16(y);
+ UINT16 *pri = &state->m_z_bitmap.pix16(y);
int x, x_index = x_index_base;
for (x = sx; x < ex; x++)
@@ -917,7 +909,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
@@ -941,9 +933,9 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
- UINT16 *pri = &state->m_z_bitmap->pix16(y);
+ UINT16 *pri = &state->m_z_bitmap.pix16(y);
int x, x_index = x_index_base;
for (x = sx; x < ex; x++)
@@ -967,7 +959,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
@@ -990,9 +982,9 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
- UINT16 *pri = &state->m_z_bitmap->pix16(y);
+ UINT16 *pri = &state->m_z_bitmap.pix16(y);
int x, x_index = x_index_base;
for (x = sx; x < ex; x++)
@@ -1020,7 +1012,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
{
for (y = sy; y < ey; y++)
{
- UINT8 *source = &state->m_zoom_bitmap->pix8(y_index >> 10);
+ UINT8 *source = &state->m_zoom_bitmap.pix8(y_index >> 10);
UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
@@ -1049,7 +1041,7 @@ static void psikyosh_drawgfxzoom( running_machine &machine,
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 req_pri)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 req_pri)
{
/*- Sprite Format 0x0000 - 0x37ff -**
@@ -1169,7 +1161,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void psikyosh_prelineblend( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void psikyosh_prelineblend( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
/* There are 224 values for pre-lineblending. Using one for every row currently */
/* I suspect that it should be blended against black by the amount specified as
@@ -1196,7 +1188,7 @@ static void psikyosh_prelineblend( running_machine &machine, bitmap_t &bitmap, c
}
-static void psikyosh_postlineblend( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 req_pri )
+static void psikyosh_postlineblend( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 req_pri )
{
/* There are 224 values for post-lineblending. Using one for every row currently */
psikyosh_state *state = machine.driver_data<psikyosh_state>();
@@ -1238,9 +1230,9 @@ VIDEO_START( psikyosh )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_z_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16); /* z-buffer */
- state->m_zoom_bitmap = auto_bitmap_alloc(machine, 16*16, 16*16, BITMAP_FORMAT_INDEXED8); /* temp buffer for assembling sprites */
- state->m_bg_bitmap = auto_bitmap_alloc(machine, 32*16, 32*16, BITMAP_FORMAT_RGB32); /* temp buffer for assembling tilemaps */
+ state->m_z_bitmap.allocate(width, height); /* z-buffer */
+ state->m_zoom_bitmap.allocate(16*16, 16*16); /* temp buffer for assembling sprites */
+ state->m_bg_bitmap.allocate(32*16, 32*16); /* temp buffer for assembling tilemaps */
state->m_bg_zoom = auto_alloc_array(machine, UINT16, 256);
machine.gfx[1]->color_granularity = 16; /* 256 colour sprites with palette selectable on 16 colour boundaries */
@@ -1262,14 +1254,14 @@ VIDEO_START( psikyosh )
state->m_bg_zoom[i] = (64 * 0x400) / (i + 64);
}
- state->save_item(NAME(*state->m_z_bitmap));
- state->save_item(NAME(*state->m_zoom_bitmap));
- state->save_item(NAME(*state->m_bg_bitmap));
+ state->save_item(NAME(state->m_z_bitmap));
+ state->save_item(NAME(state->m_zoom_bitmap));
+ state->save_item(NAME(state->m_bg_bitmap));
state->save_pointer(NAME(state->m_bg_zoom), 256);
}
-SCREEN_UPDATE( psikyosh ) /* Note the z-buffer on each sprite to get correct priority */
+SCREEN_UPDATE_RGB32( psikyosh ) /* Note the z-buffer on each sprite to get correct priority */
{
int i;
psikyosh_state *state = screen.machine().driver_data<psikyosh_state>();
@@ -1302,7 +1294,7 @@ popmessage ("%08x %08x %08x %08x\n%08x %08x %08x %08x",
state->m_vidregs[6], state->m_vidregs[7]);
#endif
- state->m_z_bitmap->fill(0, cliprect); /* z-buffer */
+ state->m_z_bitmap.fill(0, cliprect); /* z-buffer */
psikyosh_prelineblend(screen.machine(), bitmap, cliprect); // fills screen
for (i = 0; i <= 7; i++)
diff --git a/src/mame/video/psychic5.c b/src/mame/video/psychic5.c
index 0fb0e066565..41c361ce498 100644
--- a/src/mame/video/psychic5.c
+++ b/src/mame/video/psychic5.c
@@ -311,7 +311,7 @@ VIDEO_RESET( bombsa )
#define DRAW_SPRITE(code, sx, sy) jal_blend_drawgfx(bitmap, cliprect, machine.gfx[0], code, color, flipx, flipy, sx, sy, 15);
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
psychic5_state *state = machine.driver_data<psychic5_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -365,7 +365,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
psychic5_state *state = machine.driver_data<psychic5_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -432,7 +432,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
tilemap_draw(bitmap, clip, state->m_bg_tilemap, 0, 0);
}
-SCREEN_UPDATE( psychic5 )
+SCREEN_UPDATE_RGB32( psychic5 )
{
psychic5_state *state = screen.machine().driver_data<psychic5_state>();
bitmap.fill(get_black_pen(screen.machine()), cliprect);
@@ -444,7 +444,7 @@ SCREEN_UPDATE( psychic5 )
return 0;
}
-SCREEN_UPDATE( bombsa )
+SCREEN_UPDATE_RGB32( bombsa )
{
psychic5_state *state = screen.machine().driver_data<psychic5_state>();
if (state->m_bg_status & 1) /* Backgound enable */
diff --git a/src/mame/video/punchout.c b/src/mame/video/punchout.c
index 4c53257f2ac..2c19c9a6ea3 100644
--- a/src/mame/video/punchout.c
+++ b/src/mame/video/punchout.c
@@ -205,7 +205,7 @@ WRITE8_HANDLER( punchout_spr2_videoram_w )
-static void draw_big_sprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int palette)
+static void draw_big_sprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int palette)
{
punchout_state *state = machine.driver_data<punchout_state>();
int zoom;
@@ -249,7 +249,7 @@ static void draw_big_sprite(running_machine &machine, bitmap_t &bitmap, const re
}
-static void armwrest_draw_big_sprite(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int palette)
+static void armwrest_draw_big_sprite(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int palette)
{
punchout_state *state = machine.driver_data<punchout_state>();
int zoom;
@@ -296,7 +296,7 @@ static void armwrest_draw_big_sprite(running_machine &machine, bitmap_t &bitmap,
}
}
-static void drawbs2(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void drawbs2(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
punchout_state *state = machine.driver_data<punchout_state>();
int sx,sy;
@@ -369,7 +369,7 @@ static void punchout_copy_bot_palette(running_machine &machine, int bank)
}
-SCREEN_UPDATE( punchout_top )
+SCREEN_UPDATE_IND16( punchout_top )
{
punchout_state *state = screen.machine().driver_data<punchout_state>();
@@ -383,7 +383,7 @@ SCREEN_UPDATE( punchout_top )
return 0;
}
-SCREEN_UPDATE( punchout_bottom )
+SCREEN_UPDATE_IND16( punchout_bottom )
{
punchout_state *state = screen.machine().driver_data<punchout_state>();
int offs;
@@ -404,7 +404,7 @@ SCREEN_UPDATE( punchout_bottom )
}
-SCREEN_UPDATE( armwrest_top )
+SCREEN_UPDATE_IND16( armwrest_top )
{
punchout_state *state = screen.machine().driver_data<punchout_state>();
@@ -418,7 +418,7 @@ SCREEN_UPDATE( armwrest_top )
return 0;
}
-SCREEN_UPDATE( armwrest_bottom )
+SCREEN_UPDATE_IND16( armwrest_bottom )
{
punchout_state *state = screen.machine().driver_data<punchout_state>();
diff --git a/src/mame/video/pushman.c b/src/mame/video/pushman.c
index 5c0b781f9ab..c937fb778cf 100644
--- a/src/mame/video/pushman.c
+++ b/src/mame/video/pushman.c
@@ -85,7 +85,7 @@ WRITE16_HANDLER( pushman_videoram_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
pushman_state *state = machine.driver_data<pushman_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -120,7 +120,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( pushman )
+SCREEN_UPDATE_IND16( pushman )
{
pushman_state *state = screen.machine().driver_data<pushman_state>();
diff --git a/src/mame/video/qdrmfgp.c b/src/mame/video/qdrmfgp.c
index 36acf59ee4a..6ff2a75f065 100644
--- a/src/mame/video/qdrmfgp.c
+++ b/src/mame/video/qdrmfgp.c
@@ -57,7 +57,7 @@ VIDEO_START( qdrmfgp2 )
***************************************************************************/
-SCREEN_UPDATE( qdrmfgp )
+SCREEN_UPDATE_IND16( qdrmfgp )
{
device_t *k056832 = screen.machine().device("k056832");
bitmap.fill(get_black_pen(screen.machine()), cliprect);
diff --git a/src/mame/video/qix.c b/src/mame/video/qix.c
index 1c91aaf5114..b4d21328afd 100644
--- a/src/mame/video/qix.c
+++ b/src/mame/video/qix.c
@@ -340,22 +340,6 @@ static MC6845_UPDATE_ROW( update_row )
/*************************************
*
- * Standard video update
- *
- *************************************/
-
-static SCREEN_UPDATE( qix )
-{
- mc6845_device *mc6845 = screen.machine().device<mc6845_device>(MC6845_TAG);
- mc6845->update(bitmap, cliprect);
-
- return 0;
-}
-
-
-
-/*************************************
- *
* Memory handlers
*
*************************************/
@@ -452,9 +436,8 @@ MACHINE_CONFIG_FRAGMENT( qix_video )
MCFG_MC6845_ADD(MC6845_TAG, MC6845, QIX_CHARACTER_CLOCK, mc6845_intf)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_RAW_PARAMS(QIX_CHARACTER_CLOCK*8, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
- MCFG_SCREEN_UPDATE(qix)
+ MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
MACHINE_CONFIG_END
diff --git a/src/mame/video/quasar.c b/src/mame/video/quasar.c
index 28a64f3204b..df5749ece8f 100644
--- a/src/mame/video/quasar.c
+++ b/src/mame/video/quasar.c
@@ -96,14 +96,14 @@ VIDEO_START( quasar )
state->m_effectram = auto_alloc_array(machine, UINT8, 0x400);
/* create helper bitmap */
- state->m_collision_background = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_collision_background.allocate(machine.primary_screen->width(), machine.primary_screen->height());
/* register save */
- state->save_item(NAME(*state->m_collision_background));
+ state->save_item(NAME(state->m_collision_background));
state->save_pointer(NAME(state->m_effectram), 0x400);
}
-SCREEN_UPDATE( quasar )
+SCREEN_UPDATE_IND16( quasar )
{
quasar_state *state = screen.machine().driver_data<quasar_state>();
int offs;
@@ -136,7 +136,7 @@ SCREEN_UPDATE( quasar )
/* background for Collision Detection (it can only hit certain items) */
if((state->m_color_ram[offs] & 7) == 0)
{
- drawgfx_opaque(*state->m_collision_background,cliprect,screen.machine().gfx[0],
+ drawgfx_opaque(state->m_collision_background,cliprect,screen.machine().gfx[0],
code,
64,
0,0,
@@ -145,9 +145,9 @@ SCREEN_UPDATE( quasar )
}
/* update the S2636 chips */
- bitmap_t &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
- bitmap_t &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
- bitmap_t &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
+ bitmap_ind16 &s2636_0_bitmap = s2636_update(state->m_s2636_0, cliprect);
+ bitmap_ind16 &s2636_1_bitmap = s2636_update(state->m_s2636_1, cliprect);
+ bitmap_ind16 &s2636_2_bitmap = s2636_update(state->m_s2636_2, cliprect);
/* Bullet Hardware */
for (offs = 8; offs < 256; offs++ )
@@ -190,7 +190,7 @@ SCREEN_UPDATE( quasar )
bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel);
/* S2636 vs. background collision detection */
- if (colortable_entry_get_value(screen.machine().colortable, state->m_collision_background->pix16(y, x)))
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_collision_background.pix16(y, x)))
{
if (S2636_IS_PIXEL_DRAWN(pixel0)) state->m_collision_register |= 0x01;
if (S2636_IS_PIXEL_DRAWN(pixel2)) state->m_collision_register |= 0x02;
diff --git a/src/mame/video/quizdna.c b/src/mame/video/quizdna.c
index 918175ac40d..f39f2ea9c2c 100644
--- a/src/mame/video/quizdna.c
+++ b/src/mame/video/quizdna.c
@@ -138,7 +138,7 @@ WRITE8_HANDLER( paletteram_xBGR_RRRR_GGGG_BBBB_w )
palette_set_color_rgb(space->machine(),offs/2,pal5bit(r),pal5bit(g),pal5bit(b));
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
quizdna_state *state = machine.driver_data<quizdna_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -192,7 +192,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( quizdna )
+SCREEN_UPDATE_IND16( quizdna )
{
quizdna_state *state = screen.machine().driver_data<quizdna_state>();
if (state->m_video_enable)
diff --git a/src/mame/video/quizpani.c b/src/mame/video/quizpani.c
index 9e2e192edbe..f248a221f0a 100644
--- a/src/mame/video/quizpani.c
+++ b/src/mame/video/quizpani.c
@@ -79,7 +79,7 @@ VIDEO_START( quizpani )
tilemap_set_transparent_pen(state->m_txt_tilemap,15);
}
-SCREEN_UPDATE( quizpani )
+SCREEN_UPDATE_IND16( quizpani )
{
quizpani_state *state = screen.machine().driver_data<quizpani_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scrollreg[0] - 64);
diff --git a/src/mame/video/raiden.c b/src/mame/video/raiden.c
index 2ebeadab147..ecb34d49c31 100644
--- a/src/mame/video/raiden.c
+++ b/src/mame/video/raiden.c
@@ -119,7 +119,7 @@ WRITE16_HANDLER( raidena_control_w )
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int pri_mask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri_mask)
{
raiden_state *state = machine.driver_data<raiden_state>();
UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16;
@@ -153,7 +153,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( raiden )
+SCREEN_UPDATE_IND16( raiden )
{
raiden_state *state = screen.machine().driver_data<raiden_state>();
/* Setup the tilemaps, alternate version has different scroll positions */
diff --git a/src/mame/video/rainbow.c b/src/mame/video/rainbow.c
index 61ed333e7e2..288abf35b99 100644
--- a/src/mame/video/rainbow.c
+++ b/src/mame/video/rainbow.c
@@ -42,7 +42,7 @@ WRITE16_HANDLER( jumping_spritectrl_w )
/***************************************************************************/
-SCREEN_UPDATE( rbisland )
+SCREEN_UPDATE_IND16( rainbow )
{
rbisland_state *state = screen.machine().driver_data<rbisland_state>();
int layer[2];
@@ -87,7 +87,7 @@ VIDEO_START( jumping )
}
-SCREEN_UPDATE( jumping )
+SCREEN_UPDATE_IND16( jumping )
{
rbisland_state *state = screen.machine().driver_data<rbisland_state>();
UINT16 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/rallyx.c b/src/mame/video/rallyx.c
index aa7d8b54337..0f7bf67b5c9 100644
--- a/src/mame/video/rallyx.c
+++ b/src/mame/video/rallyx.c
@@ -446,7 +446,7 @@ WRITE8_HANDLER( tactcian_starson_w )
}
-static void plot_star( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int x, int y, int color )
+static void plot_star( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y, int color )
{
if (y < cliprect.min_y || y > cliprect.max_y ||
x < cliprect.min_x || x > cliprect.max_x)
@@ -462,7 +462,7 @@ static void plot_star( running_machine &machine, bitmap_t &bitmap, const rectang
bitmap.pix16(y, x) = STARS_COLOR_BASE + color;
}
-static void draw_stars( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_stars( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
int offs;
@@ -478,7 +478,7 @@ static void draw_stars( running_machine &machine, bitmap_t &bitmap, const rectan
}
-static void rallyx_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int displacement )
+static void rallyx_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int displacement )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -505,7 +505,7 @@ static void rallyx_draw_sprites( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void locomotn_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int displacement )
+static void locomotn_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int displacement )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -529,7 +529,7 @@ static void locomotn_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void rallyx_draw_bullets( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int transpen )
+static void rallyx_draw_bullets( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int transpen )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
int offs;
@@ -560,7 +560,7 @@ static void rallyx_draw_bullets( running_machine &machine, bitmap_t &bitmap, con
}
}
-static void jungler_draw_bullets( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int transpen )
+static void jungler_draw_bullets( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int transpen )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
int offs;
@@ -589,7 +589,7 @@ static void jungler_draw_bullets( running_machine &machine, bitmap_t &bitmap, co
}
}
-static void locomotn_draw_bullets( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int transpen )
+static void locomotn_draw_bullets( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int transpen )
{
rallyx_state *state = machine.driver_data<rallyx_state>();
int offs;
@@ -627,7 +627,7 @@ static void locomotn_draw_bullets( running_machine &machine, bitmap_t &bitmap, c
}
-SCREEN_UPDATE( rallyx )
+SCREEN_UPDATE_IND16( rallyx )
{
rallyx_state *state = screen.machine().driver_data<rallyx_state>();
/* the radar tilemap is just 8x32. We rely on the tilemap code to repeat it across
@@ -661,7 +661,7 @@ SCREEN_UPDATE( rallyx )
}
-SCREEN_UPDATE( jungler )
+SCREEN_UPDATE_IND16( jungler )
{
rallyx_state *state = screen.machine().driver_data<rallyx_state>();
/* the radar tilemap is just 8x32. We rely on the tilemap code to repeat it across
@@ -699,7 +699,7 @@ SCREEN_UPDATE( jungler )
}
-SCREEN_UPDATE( locomotn )
+SCREEN_UPDATE_IND16( locomotn )
{
rallyx_state *state = screen.machine().driver_data<rallyx_state>();
/* the radar tilemap is just 8x32. We rely on the tilemap code to repeat it across
diff --git a/src/mame/video/rampart.c b/src/mame/video/rampart.c
index a22811554dc..5b9de153fd8 100644
--- a/src/mame/video/rampart.c
+++ b/src/mame/video/rampart.c
@@ -10,7 +10,7 @@
#include "includes/rampart.h"
-static void rampart_bitmap_render(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+static void rampart_bitmap_render(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
/*************************************
*
@@ -72,10 +72,10 @@ VIDEO_START( rampart )
*
*************************************/
-SCREEN_UPDATE( rampart )
+SCREEN_UPDATE_IND16( rampart )
{
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
@@ -109,7 +109,7 @@ SCREEN_UPDATE( rampart )
*
*************************************/
-static void rampart_bitmap_render(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void rampart_bitmap_render(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rampart_state *state = machine.driver_data<rampart_state>();
int x, y;
diff --git a/src/mame/video/rastan.c b/src/mame/video/rastan.c
index b53eb70ff70..31b3b6d6bac 100644
--- a/src/mame/video/rastan.c
+++ b/src/mame/video/rastan.c
@@ -31,7 +31,7 @@ WRITE16_HANDLER( rastan_spritectrl_w )
/***************************************************************************/
-SCREEN_UPDATE( rastan )
+SCREEN_UPDATE_IND16( rastan )
{
rastan_state *state = screen.machine().driver_data<rastan_state>();
int layer[2];
diff --git a/src/mame/video/realbrk.c b/src/mame/video/realbrk.c
index 9be1953e377..b9b6e9d5047 100644
--- a/src/mame/video/realbrk.c
+++ b/src/mame/video/realbrk.c
@@ -164,8 +164,8 @@ VIDEO_START(realbrk)
tilemap_set_transparent_pen(state->m_tilemap_1,0);
tilemap_set_transparent_pen(state->m_tilemap_2,0);
- state->m_tmpbitmap0 = auto_bitmap_alloc(machine,32,32, machine.primary_screen->format());
- state->m_tmpbitmap1 = auto_bitmap_alloc(machine,32,32, machine.primary_screen->format());
+ state->m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine,32,32);
+ state->m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine,32,32);
}
/***************************************************************************
@@ -213,7 +213,7 @@ VIDEO_START(realbrk)
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
realbrk_state *state = machine.driver_data<realbrk_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -380,7 +380,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
/* DaiDaiKakumei */
/* layer : 0== bghigh<spr 1== bglow<spr<bghigh 2==spr<bglow 3==boarder */
-static void dai2kaku_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, int layer)
+static void dai2kaku_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect, int layer)
{
realbrk_state *state = machine.driver_data<realbrk_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -497,7 +497,7 @@ WRITE16_HANDLER( realbrk_vregs_w )
}
}
-SCREEN_UPDATE(realbrk)
+SCREEN_UPDATE_IND16(realbrk)
{
realbrk_state *state = screen.machine().driver_data<realbrk_state>();
int layers_ctrl = -1;
@@ -540,7 +540,7 @@ if ( screen.machine().input().code_pressed(KEYCODE_Z) )
}
/* DaiDaiKakumei */
-SCREEN_UPDATE(dai2kaku)
+SCREEN_UPDATE_IND16(dai2kaku)
{
realbrk_state *state = screen.machine().driver_data<realbrk_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/redalert.c b/src/mame/video/redalert.c
index b43bb41c0c9..9b4a5bcd788 100644
--- a/src/mame/video/redalert.c
+++ b/src/mame/video/redalert.c
@@ -186,7 +186,7 @@ static VIDEO_START( ww3 )
*
*************************************/
-static SCREEN_UPDATE( redalert )
+static SCREEN_UPDATE_RGB32( redalert )
{
redalert_state *state = screen.machine().driver_data<redalert_state>();
pen_t pens[NUM_CHARMAP_PENS + NUM_BITMAP_PENS + 1];
@@ -259,7 +259,7 @@ static SCREEN_UPDATE( redalert )
*
*************************************/
-static SCREEN_UPDATE( demoneye )
+static SCREEN_UPDATE_RGB32( demoneye )
{
redalert_state *state = screen.machine().driver_data<redalert_state>();
pen_t pens[NUM_CHARMAP_PENS + NUM_BITMAP_PENS + 1];
@@ -334,7 +334,7 @@ static SCREEN_UPDATE( demoneye )
*
*************************************/
-static SCREEN_UPDATE( panther )
+static SCREEN_UPDATE_RGB32( panther )
{
redalert_state *state = screen.machine().driver_data<redalert_state>();
pen_t pens[NUM_CHARMAP_PENS + NUM_BITMAP_PENS + 1];
@@ -408,12 +408,11 @@ static SCREEN_UPDATE( panther )
static MACHINE_CONFIG_FRAGMENT( redalert_video_common )
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(redalert)
+ MCFG_SCREEN_UPDATE_STATIC(redalert)
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( redalert_video )
@@ -441,12 +440,11 @@ MACHINE_CONFIG_FRAGMENT( demoneye_video )
MCFG_VIDEO_START(redalert)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(demoneye)
+ MCFG_SCREEN_UPDATE_STATIC(demoneye)
MACHINE_CONFIG_END
@@ -455,11 +453,10 @@ MACHINE_CONFIG_FRAGMENT( panther_video )
MCFG_VIDEO_START(ww3)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE(panther)
+ MCFG_SCREEN_UPDATE_STATIC(panther)
MACHINE_CONFIG_END
diff --git a/src/mame/video/redclash.c b/src/mame/video/redclash.c
index ad07b4aade6..f167c0f1a02 100644
--- a/src/mame/video/redclash.c
+++ b/src/mame/video/redclash.c
@@ -183,7 +183,7 @@ VIDEO_START( redclash )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ladybug_state *state = machine.driver_data<ladybug_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -267,7 +267,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void draw_bullets( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_bullets( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ladybug_state *state = machine.driver_data<ladybug_state>();
int offs;
@@ -360,7 +360,7 @@ void redclash_set_stars_speed( running_machine &machine, UINT8 speed )
/* Space Raider doesn't use the Va bit, and it is also set up to */
/* window the stars to a certain x range */
-void redclash_draw_stars( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 palette_offset, UINT8 sraider, UINT8 firstx, UINT8 lastx )
+void redclash_draw_stars( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 palette_offset, UINT8 sraider, UINT8 firstx, UINT8 lastx )
{
ladybug_state *redclash = machine.driver_data<ladybug_state>();
int i;
@@ -423,7 +423,7 @@ SCREEN_EOF( redclash )
redclash_update_stars_state(screen.machine());
}
-SCREEN_UPDATE( redclash )
+SCREEN_UPDATE_IND16( redclash )
{
ladybug_state *state = screen.machine().driver_data<ladybug_state>();
diff --git a/src/mame/video/relief.c b/src/mame/video/relief.c
index ef658b95d99..5970c681c46 100644
--- a/src/mame/video/relief.c
+++ b/src/mame/video/relief.c
@@ -108,12 +108,12 @@ VIDEO_START( relief )
*
*************************************/
-SCREEN_UPDATE( relief )
+SCREEN_UPDATE_IND16( relief )
{
relief_state *state = screen.machine().driver_data<relief_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/renegade.c b/src/mame/video/renegade.c
index 1913a3a76ef..3fb1a5e66bb 100644
--- a/src/mame/video/renegade.c
+++ b/src/mame/video/renegade.c
@@ -79,7 +79,7 @@ VIDEO_START( renegade )
state_save_register_global(machine, state->m_scrollx);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
renegade_state *state = machine.driver_data<renegade_state>();
UINT8 *source = state->m_spriteram;
@@ -131,7 +131,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( renegade )
+SCREEN_UPDATE_IND16( renegade )
{
renegade_state *state = screen.machine().driver_data<renegade_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scrollx);
diff --git a/src/mame/video/retofinv.c b/src/mame/video/retofinv.c
index a55f3d71981..9e39cc13695 100644
--- a/src/mame/video/retofinv.c
+++ b/src/mame/video/retofinv.c
@@ -169,7 +169,7 @@ WRITE8_HANDLER( retofinv_gfx_ctrl_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap)
{
retofinv_state *state = machine.driver_data<retofinv_state>();
UINT8 *spriteram = state->m_sharedram + 0x0780;
@@ -225,7 +225,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap)
-SCREEN_UPDATE( retofinv )
+SCREEN_UPDATE_IND16( retofinv )
{
retofinv_state *state = screen.machine().driver_data<retofinv_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/rltennis.c b/src/mame/video/rltennis.c
index 2b499b6634f..fe33c5f0047 100644
--- a/src/mame/video/rltennis.c
+++ b/src/mame/video/rltennis.c
@@ -224,13 +224,13 @@ WRITE16_HANDLER(rlt_blitter_w)
VIDEO_START( rltennis )
{
rltennis_state *state = machine.driver_data<rltennis_state>();
- state->m_tmp_bitmap[BITMAP_BG] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
- state->m_tmp_bitmap[BITMAP_FG_1] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
- state->m_tmp_bitmap[BITMAP_FG_2] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
- state->m_tmp_bitmap[BITMAP_FG_DISPLAY] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
+ state->m_tmp_bitmap[BITMAP_BG] = auto_bitmap_ind16_alloc(machine, 512, 256);
+ state->m_tmp_bitmap[BITMAP_FG_1] = auto_bitmap_ind16_alloc(machine, 512, 256);
+ state->m_tmp_bitmap[BITMAP_FG_2] = auto_bitmap_ind16_alloc(machine, 512, 256);
+ state->m_tmp_bitmap[BITMAP_FG_DISPLAY] = auto_bitmap_ind16_alloc(machine, 512, 256);
}
-SCREEN_UPDATE( rltennis )
+SCREEN_UPDATE_IND16( rltennis )
{
rltennis_state *state = screen.machine().driver_data<rltennis_state>();
copybitmap(bitmap, *state->m_tmp_bitmap[BITMAP_BG], 0, 0, 0, 0, cliprect);
diff --git a/src/mame/video/rockrage.c b/src/mame/video/rockrage.c
index c8444804d0d..9f79662d308 100644
--- a/src/mame/video/rockrage.c
+++ b/src/mame/video/rockrage.c
@@ -96,7 +96,7 @@ WRITE8_HANDLER( rockrage_vreg_w )
***************************************************************************/
-SCREEN_UPDATE( rockrage )
+SCREEN_UPDATE_IND16( rockrage )
{
rockrage_state *state = screen.machine().driver_data<rockrage_state>();
diff --git a/src/mame/video/rocnrope.c b/src/mame/video/rocnrope.c
index 34db915c7fb..a79b7068ebb 100644
--- a/src/mame/video/rocnrope.c
+++ b/src/mame/video/rocnrope.c
@@ -122,7 +122,7 @@ VIDEO_START( rocnrope )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
rocnrope_state *state = machine.driver_data<rocnrope_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -142,7 +142,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( rocnrope )
+SCREEN_UPDATE_IND16( rocnrope )
{
rocnrope_state *state = screen.machine().driver_data<rocnrope_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/rohga.c b/src/mame/video/rohga.c
index 154133f4aa0..7893a9d3e7b 100644
--- a/src/mame/video/rohga.c
+++ b/src/mame/video/rohga.c
@@ -27,7 +27,7 @@ VIDEO_START( rohga )
/******************************************************************************/
-static void rohga_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT16 *spriteptr, int is_schmeisr )
+static void rohga_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT16 *spriteptr, int is_schmeisr )
{
int offs;
@@ -109,7 +109,7 @@ static void rohga_draw_sprites( running_machine &machine, bitmap_t &bitmap, cons
}
}
-static void wizdfire_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 *spriteptr, int mode, int bank )
+static void wizdfire_draw_sprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 *spriteptr, int mode, int bank )
{
int offs;
@@ -211,7 +211,7 @@ static void wizdfire_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void nitrobal_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT16 *spriteptr, int gfxbank )
+static void nitrobal_draw_sprites( running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, const UINT16 *spriteptr, int gfxbank )
{
rohga_state *state = machine.driver_data<rohga_state>();
int offs, end, inc;
@@ -419,7 +419,7 @@ sprite 2:
/******************************************************************************/
-static void update_rohga( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int is_schmeisr )
+static void update_rohga( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int is_schmeisr )
{
rohga_state *state = screen.machine().driver_data<rohga_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -466,13 +466,13 @@ static void update_rohga( screen_device &screen, bitmap_t &bitmap, const rectang
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
}
-SCREEN_UPDATE( rohga )
+SCREEN_UPDATE_IND16( rohga )
{
update_rohga(screen, bitmap, cliprect, 0);
return 0;
}
-SCREEN_UPDATE( schmeisr )
+SCREEN_UPDATE_IND16( schmeisr )
{
// The Schmeisr pcb has wire mods which seem to remap sprite palette indices.
// Otherwise video update is the same as Rohga.
@@ -480,7 +480,7 @@ SCREEN_UPDATE( schmeisr )
return 0;
}
-SCREEN_UPDATE( wizdfire )
+SCREEN_UPDATE_RGB32( wizdfire )
{
rohga_state *state = screen.machine().driver_data<rohga_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -513,7 +513,7 @@ SCREEN_UPDATE( wizdfire )
return 0;
}
-SCREEN_UPDATE( nitrobal )
+SCREEN_UPDATE_RGB32( nitrobal )
{
rohga_state *state = screen.machine().driver_data<rohga_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
diff --git a/src/mame/video/rollerg.c b/src/mame/video/rollerg.c
index 7f350a11328..0f726e18e48 100644
--- a/src/mame/video/rollerg.c
+++ b/src/mame/video/rollerg.c
@@ -59,7 +59,7 @@ VIDEO_START( rollerg )
***************************************************************************/
-SCREEN_UPDATE( rollerg )
+SCREEN_UPDATE_IND16( rollerg )
{
rollerg_state *state = screen.machine().driver_data<rollerg_state>();
int bg_colorbase = 16;
diff --git a/src/mame/video/rollrace.c b/src/mame/video/rollrace.c
index 99ae958c876..240427d5b35 100644
--- a/src/mame/video/rollrace.c
+++ b/src/mame/video/rollrace.c
@@ -101,7 +101,7 @@ WRITE8_HANDLER( rollrace_flipx_w )
state->m_ra_flipx = data & 0x01;
}
-SCREEN_UPDATE( rollrace )
+SCREEN_UPDATE_IND16( rollrace )
{
rollrace_state *state = screen.machine().driver_data<rollrace_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/route16.c b/src/mame/video/route16.c
index 2b7c193e688..c93b7e0c5c9 100644
--- a/src/mame/video/route16.c
+++ b/src/mame/video/route16.c
@@ -70,7 +70,7 @@ static pen_t ttmajng_make_pen(UINT8 color)
* a black output.
*/
-SCREEN_UPDATE( route16 )
+SCREEN_UPDATE_RGB32( route16 )
{
route16_state *state = screen.machine().driver_data<route16_state>();
offs_t offs;
@@ -125,7 +125,7 @@ SCREEN_UPDATE( route16 )
* The Stratovox video connections have been verified from the schematics
*/
-static int video_update_stratvox_ttmahjng(running_machine &machine, bitmap_t &bitmap,
+static int video_update_stratvox_ttmahjng(running_machine &machine, bitmap_rgb32 &bitmap,
const rectangle &cliprect,
pen_t (*make_pen)(UINT8))
{
@@ -177,13 +177,13 @@ static int video_update_stratvox_ttmahjng(running_machine &machine, bitmap_t &bi
}
-SCREEN_UPDATE( stratvox )
+SCREEN_UPDATE_RGB32( stratvox )
{
return video_update_stratvox_ttmahjng(screen.machine(), bitmap, cliprect, route16_make_pen);
}
-SCREEN_UPDATE( ttmahjng )
+SCREEN_UPDATE_RGB32( ttmahjng )
{
return video_update_stratvox_ttmahjng(screen.machine(), bitmap, cliprect, ttmajng_make_pen);
}
diff --git a/src/mame/video/rpunch.c b/src/mame/video/rpunch.c
index c356178e93d..fa71f7d8754 100644
--- a/src/mame/video/rpunch.c
+++ b/src/mame/video/rpunch.c
@@ -201,7 +201,7 @@ WRITE16_HANDLER( rpunch_ins_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int start, int stop)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int start, int stop)
{
rpunch_state *state = machine.driver_data<rpunch_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -239,7 +239,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-static void draw_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rpunch_state *state = machine.driver_data<rpunch_state>();
int colourbase;
@@ -272,7 +272,7 @@ static void draw_bitmap(running_machine &machine, bitmap_t &bitmap, const rectan
*
*************************************/
-SCREEN_UPDATE( rpunch )
+SCREEN_UPDATE_IND16( rpunch )
{
rpunch_state *state = screen.machine().driver_data<rpunch_state>();
int effbins;
diff --git a/src/mame/video/runaway.c b/src/mame/video/runaway.c
index 5d0a4da6817..f6ac17afb21 100644
--- a/src/mame/video/runaway.c
+++ b/src/mame/video/runaway.c
@@ -89,7 +89,7 @@ VIDEO_START( qwak )
-SCREEN_UPDATE( runaway )
+SCREEN_UPDATE_IND16( runaway )
{
runaway_state *state = screen.machine().driver_data<runaway_state>();
int i;
@@ -124,7 +124,7 @@ SCREEN_UPDATE( runaway )
}
-SCREEN_UPDATE( qwak )
+SCREEN_UPDATE_IND16( qwak )
{
runaway_state *state = screen.machine().driver_data<runaway_state>();
int i;
diff --git a/src/mame/video/rungun.c b/src/mame/video/rungun.c
index ababb538b52..b3688d410b2 100644
--- a/src/mame/video/rungun.c
+++ b/src/mame/video/rungun.c
@@ -103,7 +103,7 @@ VIDEO_START( rng )
state->m_sprite_colorbase = 0x20;
}
-SCREEN_UPDATE(rng)
+SCREEN_UPDATE_IND16(rng)
{
rungun_state *state = screen.machine().driver_data<rungun_state>();
diff --git a/src/mame/video/sauro.c b/src/mame/video/sauro.c
index d3e1482d5de..4ab5e4ae760 100644
--- a/src/mame/video/sauro.c
+++ b/src/mame/video/sauro.c
@@ -106,7 +106,7 @@ VIDEO_START( sauro )
state->m_palette_bank = 0;
}
-static void sauro_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void sauro_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sauro_state *state = machine.driver_data<sauro_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -154,7 +154,7 @@ static void sauro_draw_sprites(running_machine &machine, bitmap_t &bitmap, const
}
}
-SCREEN_UPDATE( sauro )
+SCREEN_UPDATE_IND16( sauro )
{
sauro_state *state = screen.machine().driver_data<sauro_state>();
@@ -174,7 +174,7 @@ VIDEO_START( trckydoc )
8, 8, 32, 32);
}
-static void trckydoc_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void trckydoc_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sauro_state *state = machine.driver_data<sauro_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -230,7 +230,7 @@ static void trckydoc_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( trckydoc )
+SCREEN_UPDATE_IND16( trckydoc )
{
sauro_state *state = screen.machine().driver_data<sauro_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/sbasketb.c b/src/mame/video/sbasketb.c
index a87258daa24..6a251f5af7c 100644
--- a/src/mame/video/sbasketb.c
+++ b/src/mame/video/sbasketb.c
@@ -135,7 +135,7 @@ VIDEO_START( sbasketb )
tilemap_set_scroll_cols(state->m_bg_tilemap, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
sbasketb_state *state = machine.driver_data<sbasketb_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -171,7 +171,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( sbasketb )
+SCREEN_UPDATE_IND16( sbasketb )
{
sbasketb_state *state = screen.machine().driver_data<sbasketb_state>();
int col;
diff --git a/src/mame/video/sbugger.c b/src/mame/video/sbugger.c
index 9c18846338a..2a65e5bbf52 100644
--- a/src/mame/video/sbugger.c
+++ b/src/mame/video/sbugger.c
@@ -36,7 +36,7 @@ VIDEO_START(sbugger)
state->m_tilemap = tilemap_create(machine, get_sbugger_tile_info, tilemap_scan_rows, 8, 16, 64, 16);
}
-SCREEN_UPDATE(sbugger)
+SCREEN_UPDATE_IND16(sbugger)
{
sbugger_state *state = screen.machine().driver_data<sbugger_state>();
tilemap_draw(bitmap,cliprect,state->m_tilemap,0,0);
diff --git a/src/mame/video/scotrsht.c b/src/mame/video/scotrsht.c
index 040ff7f3b38..8f978de334c 100644
--- a/src/mame/video/scotrsht.c
+++ b/src/mame/video/scotrsht.c
@@ -99,7 +99,7 @@ static TILE_GET_INFO( scotrsht_get_bg_tile_info )
}
/* Same as Jailbreak + palette bank */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
scotrsht_state *state = machine.driver_data<scotrsht_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -138,7 +138,7 @@ VIDEO_START( scotrsht )
tilemap_set_scroll_cols(state->m_bg_tilemap, 64);
}
-SCREEN_UPDATE( scotrsht )
+SCREEN_UPDATE_IND16( scotrsht )
{
scotrsht_state *state = screen.machine().driver_data<scotrsht_state>();
int col;
diff --git a/src/mame/video/sderby.c b/src/mame/video/sderby.c
index 667107dadec..6c4960336df 100644
--- a/src/mame/video/sderby.c
+++ b/src/mame/video/sderby.c
@@ -65,7 +65,7 @@ WRITE16_HANDLER( sderby_fg_videoram_w )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int codeshift)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int codeshift)
{
sderby_state *state = machine.driver_data<sderby_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -108,7 +108,7 @@ VIDEO_START( sderby )
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
}
-SCREEN_UPDATE( sderby )
+SCREEN_UPDATE_IND16( sderby )
{
sderby_state *state = screen.machine().driver_data<sderby_state>();
@@ -119,7 +119,7 @@ SCREEN_UPDATE( sderby )
return 0;
}
-SCREEN_UPDATE( pmroulet )
+SCREEN_UPDATE_IND16( pmroulet )
{
sderby_state *state = screen.machine().driver_data<sderby_state>();
diff --git a/src/mame/video/sega16sp.c b/src/mame/video/sega16sp.c
index 80cff8ba5c3..359f619985e 100644
--- a/src/mame/video/sega16sp.c
+++ b/src/mame/video/sega16sp.c
@@ -76,7 +76,7 @@ INLINE const sega16sp_interface *get_interface( device_t *device )
pri[x] = 0xff; \
} \
-void segaic16_sprites_hangon_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_hangon_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x10000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -241,7 +241,7 @@ void segaic16_sprites_hangon_draw(running_machine &machine, device_t *device, bi
pri[x] = 0xff; \
} \
-void segaic16_sprites_sharrier_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_sharrier_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x20000;
const UINT32 *spritebase = (const UINT32 *)machine.region("gfx2")->base();
@@ -412,7 +412,7 @@ void segaic16_sprites_sharrier_draw(running_machine &machine, device_t *device,
pri[x] = 0xff; \
} \
-void segaic16_sprites_16a_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_16a_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x10000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -573,7 +573,7 @@ void segaic16_sprites_16a_draw(running_machine &machine, device_t *device, bitma
pri[x] = 0xff; \
} \
-void segaic16_sprites_16b_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_16b_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks;
const UINT16 *spritebase;
@@ -739,7 +739,7 @@ void segaic16_sprites_16b_draw(running_machine &machine, device_t *device, bitma
pri[x] = 0; \
} \
-void segaic16_sprites_yboard_16b_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_yboard_16b_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x20000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -917,7 +917,7 @@ void segaic16_sprites_yboard_16b_draw(running_machine &machine, device_t *device
pri[x] = 0xff; \
} \
-static void segaic16_sprites_xboard_outrun_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int type)
+static void segaic16_sprites_xboard_outrun_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int type)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x40000;
const UINT32 *spritebase = (const UINT32 *)machine.region("gfx2")->base();
@@ -1043,12 +1043,12 @@ static void segaic16_sprites_xboard_outrun_draw(running_machine &machine, device
}
}
-void segaic16_sprites_outrun_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_outrun_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
segaic16_sprites_xboard_outrun_draw(machine, device, bitmap, cliprect, SEGAIC16_SPRITES_OUTRUN);
}
-void segaic16_sprites_xboard_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_xboard_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
segaic16_sprites_xboard_outrun_draw(machine, device, bitmap, cliprect, SEGAIC16_SPRITES_XBOARD);
}
@@ -1088,7 +1088,7 @@ void segaic16_sprites_xboard_draw(running_machine &machine, device_t *device, bi
if (x >= minx && x <= maxx && ind < 0x1fe) \
dest[x] = ind | colorpri; \
-void segaic16_sprites_yboard_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_yboard_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx1")->bytes() / 0x80000;
const UINT64 *spritebase = (const UINT64 *)machine.region("gfx1")->base();
@@ -1382,7 +1382,7 @@ void segaic16_sprites_yboard_draw(running_machine &machine, device_t *device, bi
-void segaic16_sprites_16a_bootleg_wb3bl_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_16a_bootleg_wb3bl_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x10000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -1405,7 +1405,7 @@ void segaic16_sprites_16a_bootleg_wb3bl_draw(running_machine &machine, device_t
}
/* 4 player passing shot is different to this.. */
-void segaic16_sprites_16a_bootleg_passhtb_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_16a_bootleg_passhtb_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x10000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -1427,7 +1427,7 @@ void segaic16_sprites_16a_bootleg_passhtb_draw(running_machine &machine, device_
}
}
-void segaic16_sprites_16a_bootleg_shinobld_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect)
+void segaic16_sprites_16a_bootleg_shinobld_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x10000;
const UINT16 *spritebase = (const UINT16 *)machine.region("gfx2")->base();
@@ -1455,7 +1455,7 @@ void segaic16_sprites_16a_bootleg_shinobld_draw(running_machine &machine, device
*
*************************************/
-void segaic16_sprites_draw(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int which)
+void segaic16_sprites_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which)
{
device_t* device = 0;
sega16sp_state *sega16sp;
diff --git a/src/mame/video/segag80r.c b/src/mame/video/segag80r.c
index 116bbc9233d..dc8cbee61af 100644
--- a/src/mame/video/segag80r.c
+++ b/src/mame/video/segag80r.c
@@ -640,7 +640,7 @@ WRITE8_HANDLER( sindbadm_back_port_w )
*
*************************************/
-static void draw_videoram(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *transparent_pens)
+static void draw_videoram(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *transparent_pens)
{
segag80r_state *state = machine.driver_data<segag80r_state>();
UINT8 *videoram = state->m_videoram;
@@ -670,10 +670,10 @@ static void draw_videoram(running_machine &machine, bitmap_t &bitmap, const rect
*
*************************************/
-static void draw_background_spaceod(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background_spaceod(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
segag80r_state *state = machine.driver_data<segag80r_state>();
- bitmap_t &pixmap = tilemap_get_pixmap(!(state->m_spaceod_bg_control & 0x02) ? state->m_spaceod_bg_htilemap : state->m_spaceod_bg_vtilemap);
+ bitmap_ind16 &pixmap = tilemap_get_pixmap(!(state->m_spaceod_bg_control & 0x02) ? state->m_spaceod_bg_htilemap : state->m_spaceod_bg_vtilemap);
int flipmask = (state->m_spaceod_bg_control & 0x01) ? 0xff : 0x00;
int xoffset = (state->m_spaceod_bg_control & 0x02) ? 0x10 : 0x00;
int xmask = pixmap.width() - 1;
@@ -728,10 +728,10 @@ static void draw_background_spaceod(running_machine &machine, bitmap_t &bitmap,
*
*************************************/
-static void draw_background_page_scroll(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background_page_scroll(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
segag80r_state *state = machine.driver_data<segag80r_state>();
- bitmap_t &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
+ bitmap_ind16 &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
int flipmask = (state->m_video_control & 0x08) ? 0xff : 0x00;
int xmask = pixmap.width() - 1;
int ymask = pixmap.height() - 1;
@@ -769,10 +769,10 @@ static void draw_background_page_scroll(running_machine &machine, bitmap_t &bitm
*
*************************************/
-static void draw_background_full_scroll(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background_full_scroll(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
segag80r_state *state = machine.driver_data<segag80r_state>();
- bitmap_t &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
+ bitmap_ind16 &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
int flipmask = (state->m_video_control & 0x08) ? 0x3ff : 0x000;
int xmask = pixmap.width() - 1;
int ymask = pixmap.height() - 1;
@@ -809,7 +809,7 @@ static void draw_background_full_scroll(running_machine &machine, bitmap_t &bitm
*
*************************************/
-SCREEN_UPDATE( segag80r )
+SCREEN_UPDATE_IND16( segag80r )
{
segag80r_state *state = screen.machine().driver_data<segag80r_state>();
UINT8 transparent_pens[16];
diff --git a/src/mame/video/segag80v.c b/src/mame/video/segag80v.c
index d990aa62182..ce93f1e649a 100644
--- a/src/mame/video/segag80v.c
+++ b/src/mame/video/segag80v.c
@@ -335,9 +335,9 @@ VIDEO_START( segag80v )
}
-SCREEN_UPDATE( segag80v )
+SCREEN_UPDATE_RGB32( segag80v )
{
sega_generate_vector_list(screen.machine());
- SCREEN_UPDATE_CALL(vector);
+ SCREEN_UPDATE32_CALL(vector);
return 0;
}
diff --git a/src/mame/video/segahang.c b/src/mame/video/segahang.c
index 4a0febb9177..7590fc3a927 100644
--- a/src/mame/video/segahang.c
+++ b/src/mame/video/segahang.c
@@ -49,7 +49,7 @@ VIDEO_START( sharrier )
*
*************************************/
-SCREEN_UPDATE( hangon )
+SCREEN_UPDATE_IND16( hangon )
{
/* if no drawing is happening, fill with black and get out */
if (!segaic16_display_enable)
diff --git a/src/mame/video/segaic16.c b/src/mame/video/segaic16.c
index b20455b2f07..abf374c8f38 100644
--- a/src/mame/video/segaic16.c
+++ b/src/mame/video/segaic16.c
@@ -518,7 +518,7 @@ WRITE16_HANDLER( segaic16_paletteram_w )
*
*************************************/
-static void segaic16_draw_virtual_tilemap(running_machine &machine, struct tilemap_info *info, bitmap_t &bitmap, const rectangle &cliprect, UINT16 pages, UINT16 xscroll, UINT16 yscroll, UINT32 flags, UINT32 priority)
+static void segaic16_draw_virtual_tilemap(running_machine &machine, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 pages, UINT16 xscroll, UINT16 yscroll, UINT32 flags, UINT32 priority)
{
int leftmin = -1, leftmax = -1, rightmin = -1, rightmax = -1;
int topmin = -1, topmax = -1, bottommin = -1, bottommax = -1;
@@ -744,7 +744,7 @@ static TILE_GET_INFO( segaic16_tilemap_16a_text_info )
}
-static void segaic16_tilemap_16a_draw_layer(running_machine &machine, struct tilemap_info *info, bitmap_t &bitmap, const rectangle &cliprect, int which, int flags, int priority)
+static void segaic16_tilemap_16a_draw_layer(running_machine &machine, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority)
{
UINT16 *textram = info->textram;
@@ -986,7 +986,7 @@ static TILE_GET_INFO( segaic16_tilemap_16b_alt_text_info )
}
-static void segaic16_tilemap_16b_draw_layer(running_machine &machine, struct tilemap_info *info, bitmap_t &bitmap, const rectangle &cliprect, int which, int flags, int priority)
+static void segaic16_tilemap_16b_draw_layer(running_machine &machine, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority)
{
UINT16 *textram = info->textram;
UINT16 xscroll, yscroll, pages;
@@ -1224,7 +1224,7 @@ void segaic16_tilemap_init(running_machine &machine, int which, int type, int co
*
*************************************/
-void segaic16_tilemap_draw(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int which, int map, int priority, int priority_mark)
+void segaic16_tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int map, int priority, int priority_mark)
{
running_machine &machine = screen.machine();
struct tilemap_info *info = &bg_tilemap[which];
@@ -1431,7 +1431,7 @@ static void segaic16_road_hangon_decode(running_machine &machine, struct road_in
}
-static void segaic16_road_hangon_draw(struct road_info *info, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
UINT16 *roadram = info->roadram;
int x, y;
@@ -1701,7 +1701,7 @@ static void segaic16_road_outrun_decode(running_machine &machine, struct road_in
}
-static void segaic16_road_outrun_draw(struct road_info *info, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
UINT16 *roadram = info->buffer;
int x, y;
@@ -1927,7 +1927,7 @@ void segaic16_road_init(running_machine &machine, int which, int type, int color
*
*************************************/
-void segaic16_road_draw(int which, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+void segaic16_road_draw(int which, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
struct road_info *info = &segaic16_road[which];
(*info->draw)(info, bitmap, cliprect, priority);
@@ -2029,7 +2029,7 @@ void segaic16_rotate_init(running_machine &machine, int which, int type, int col
*
*************************************/
-void segaic16_rotate_draw(running_machine &machine, int which, bitmap_t &bitmap, const rectangle &cliprect, bitmap_t *srcbitmap)
+void segaic16_rotate_draw(running_machine &machine, int which, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind16 *srcbitmap)
{
struct rotate_info *info = &segaic16_rotate[which];
INT32 currx = (info->buffer[0x3f0] << 16) | info->buffer[0x3f1];
diff --git a/src/mame/video/segaic16.h b/src/mame/video/segaic16.h
index 2cd0d7d3f7f..b7e5990422d 100644
--- a/src/mame/video/segaic16.h
+++ b/src/mame/video/segaic16.h
@@ -37,7 +37,7 @@ WRITE16_HANDLER( segaic16_paletteram_w );
void segaic16_tilemap_init(running_machine &machine, int which, int type, int colorbase, int xoffs, int numbanks);
void segaic16_tilemap_reset(running_machine &machine, int which);
-void segaic16_tilemap_draw(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int which, int map, int priority, int priority_mark);
+void segaic16_tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int map, int priority, int priority_mark);
void segaic16_tilemap_set_bank(running_machine &machine, int which, int banknum, int offset);
void segaic16_tilemap_set_flip(running_machine &machine, int which, int flip);
void segaic16_tilemap_set_rowscroll(running_machine &machine, int which, int enable);
@@ -52,7 +52,7 @@ WRITE16_HANDLER( segaic16_textram_0_w );
#define SEGAIC16_SPRITES_OUTRUN 4
#define SEGAIC16_SPRITES_XBOARD 5
-void segaic16_sprites_draw(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int which);
+void segaic16_sprites_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which);
void segaic16_sprites_set_bank(running_machine &machine, int which, int banknum, int offset);
void segaic16_sprites_set_flip(running_machine &machine, int which, int flip);
void segaic16_sprites_set_shadow(running_machine &machine, int which, int shadow);
@@ -71,7 +71,7 @@ WRITE16_HANDLER( segaic16_sprites_draw_1_w );
#define SEGAIC16_ROAD_FOREGROUND 1
void segaic16_road_init(running_machine &machine, int which, int type, int colorbase1, int colorbase2, int colorbase3, int xoffs);
-void segaic16_road_draw(int which, bitmap_t &bitmap, const rectangle &cliprect, int priority);
+void segaic16_road_draw(int which, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
READ16_HANDLER( segaic16_road_control_0_r );
WRITE16_HANDLER( segaic16_road_control_0_w );
@@ -81,7 +81,7 @@ WRITE16_HANDLER( segaic16_road_control_0_w );
#define SEGAIC16_ROTATE_YBOARD 0
void segaic16_rotate_init(running_machine &machine, int which, int type, int colorbase);
-void segaic16_rotate_draw(running_machine &machine, int which, bitmap_t &bitmap, const rectangle &cliprect, bitmap_t *srcbitmap);
+void segaic16_rotate_draw(running_machine &machine, int which, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind16 *srcbitmap);
READ16_HANDLER( segaic16_rotate_control_0_r );
/*************************************
@@ -118,7 +118,7 @@ struct tilemap_info
struct tilemap_callback_info tmap_info[16]; /* callback info for 16 tilemap pages */
struct tilemap_callback_info textmap_info; /* callback info for a single textmap page */
void (*reset)(running_machine &machine, struct tilemap_info *info);/* reset callback */
- void (*draw_layer)(running_machine &machine, struct tilemap_info *info, bitmap_t &bitmap, const rectangle &cliprect, int which, int flags, int priority);
+ void (*draw_layer)(running_machine &machine, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority);
UINT16 * textram; /* pointer to textram pointer */
UINT16 * tileram; /* pointer to tileram pointer */
emu_timer * latch_timer; /* timer for latching 16b tilemap scroll values */
@@ -133,7 +133,7 @@ struct road_info
UINT16 colorbase2; /* color base for road background data */
UINT16 colorbase3; /* color base for sky data */
INT32 xoffs; /* X scroll offset */
- void (*draw)(struct road_info *info, bitmap_t &bitmap, const rectangle &cliprect, int priority);
+ void (*draw)(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
UINT16 * roadram; /* pointer to roadram pointer */
UINT16 * buffer; /* buffered roadram pointer */
UINT8 * gfx; /* expanded road graphics */
@@ -165,7 +165,7 @@ struct _sega16sp_interface
UINT16 colorbase; /* base color index */
INT32 ramsize; /* size of sprite RAM */
INT32 xoffs; /* X scroll offset */
- void (*draw)(running_machine &machine, device_t* device, bitmap_t &bitmap, const rectangle &cliprect);
+ void (*draw)(running_machine &machine, device_t* device, bitmap_ind16 &bitmap, const rectangle &cliprect);
int buffer; /* should ram be buffered? */
};
@@ -183,7 +183,7 @@ struct _sega16sp_state
UINT16 colorbase; /* base color index */
INT32 ramsize; /* size of sprite RAM */
INT32 xoffs; /* X scroll offset */
- void (*draw)(running_machine &machine, device_t* device, bitmap_t &bitmap, const rectangle &cliprect);
+ void (*draw)(running_machine &machine, device_t* device, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT16 * spriteram; /* pointer to spriteram pointer */
UINT16 * buffer; /* buffered spriteram for those that use it */
@@ -195,17 +195,17 @@ struct _sega16sp_state
DECLARE_LEGACY_DEVICE(SEGA16SP, sega16sp);
-void segaic16_sprites_hangon_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_sharrier_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_16a_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_16b_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_yboard_16b_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_yboard_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_outrun_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_xboard_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_16a_bootleg_wb3bl_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_16a_bootleg_passhtb_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
-void segaic16_sprites_16a_bootleg_shinobld_draw(running_machine &machine, device_t *device, bitmap_t &bitmap, const rectangle &cliprect);
+void segaic16_sprites_hangon_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_sharrier_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_16a_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_16b_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_yboard_16b_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_yboard_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_outrun_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_xboard_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_16a_bootleg_wb3bl_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_16a_bootleg_passhtb_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
+void segaic16_sprites_16a_bootleg_shinobld_draw(running_machine &machine, device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
/* the various sprite configs */
static const sega16sp_interface hangon_sega16sp_intf =
diff --git a/src/mame/video/segaic24.c b/src/mame/video/segaic24.c
index 009d55a3718..20f7ba2c79e 100644
--- a/src/mame/video/segaic24.c
+++ b/src/mame/video/segaic24.c
@@ -100,7 +100,7 @@ void segas24_tile::device_start()
save_pointer(NAME(char_ram), 0x80000/2);
}
-void segas24_tile::draw_rect(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const UINT16 *mask,
+void segas24_tile::draw_rect(bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_ind16 &dm, const UINT16 *mask,
UINT16 tpri, UINT8 lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2)
{
int y;
@@ -234,13 +234,13 @@ void segas24_tile::draw_rect(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const UIN
// about sprite priority hence the lack of support for the
// priority_bitmap
-void segas24_tile::draw_rect_rgb(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const UINT16 *mask,
+void segas24_tile::draw_rect(bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_rgb32 &dm, const UINT16 *mask,
UINT16 tpri, UINT8 lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2)
{
int y;
const UINT16 *source = &bm.pix16(sy, sx);
const UINT8 *trans = &tm.pix8(sy, sx);
- UINT16 *dest = &dm.pix16(0);
+ UINT32 *dest = &dm.pix32(0);
const pen_t *pens = machine().pens;
tpri |= TILEMAP_PIXEL_LAYER0;
@@ -258,7 +258,7 @@ void segas24_tile::draw_rect_rgb(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const
for(y=0; y<yy2; y++) {
const UINT16 *src = source;
const UINT8 *srct = trans;
- UINT16 *dst = dest;
+ UINT32 *dst = dest;
const UINT16 *mask1 = mask;
int llx = xx2;
int cur_x = xx1;
@@ -346,7 +346,8 @@ void segas24_tile::draw_rect_rgb(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const
}
}
-void segas24_tile::draw(bitmap_t &bitmap, const rectangle &cliprect, int layer, int lpri, int flags)
+template<class _BitmapClass>
+void segas24_tile::draw_common(_BitmapClass &bitmap, const rectangle &cliprect, int layer, int lpri, int flags)
{
UINT16 hscr = tile_ram[0x5000+(layer >> 1)];
UINT16 vscr = tile_ram[0x5004+(layer >> 1)];
@@ -466,17 +467,10 @@ void segas24_tile::draw(bitmap_t &bitmap, const rectangle &cliprect, int layer,
}
} else {
- void (segas24_tile::*draw)(bitmap_t &, bitmap_t &, bitmap_t &, const UINT16 *,
- UINT16, UINT8, int, int, int, int, int, int, int);
int win = layer & 1;
- if(bitmap.format() != BITMAP_FORMAT_INDEXED16)
- draw = &segas24_tile::draw_rect_rgb;
- else
- draw = &segas24_tile::draw_rect;
-
- bitmap_t &bm = tilemap_get_pixmap(tile_layer[layer]);
- bitmap_t &tm = tilemap_get_flagsmap(tile_layer[layer]);
+ bitmap_ind16 &bm = tilemap_get_pixmap(tile_layer[layer]);
+ bitmap_ind8 &tm = tilemap_get_flagsmap(tile_layer[layer]);
if(hscr & 0x8000) {
int y;
@@ -487,11 +481,11 @@ void segas24_tile::draw(bitmap_t &bitmap, const rectangle &cliprect, int layer,
hscr = (-hscrtb[y]) & 0x1ff;
if(hscr + 496 <= 512) {
// Horizontal split unnecessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, y, 496, y+1);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, y, 496, y+1);
} else {
// Horizontal split necessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, y, 512-hscr, y+1);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, y, 496, y+1);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, y, 512-hscr, y+1);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, y, 496, y+1);
}
vscr = (vscr + 1) & 0x1ff;
}
@@ -503,31 +497,37 @@ void segas24_tile::draw(bitmap_t &bitmap, const rectangle &cliprect, int layer,
// Horizontal split unnecessary
if(vscr + 384 <= 512) {
// Vertical split unnecessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 496, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 496, 384);
} else {
// Vertical split necessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 496, 512-vscr);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, 0, 0, 512-vscr, 496, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 496, 512-vscr);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, 0, 0, 512-vscr, 496, 384);
}
} else {
// Horizontal split necessary
if(vscr + 384 <= 512) {
// Vertical split unnecessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 512-hscr, 384);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, 0, 496, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 512-hscr, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, 0, 496, 384);
} else {
// Vertical split necessary
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 512-hscr, 512-vscr);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, 0, 496, 512-vscr);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, hscr, 0, 0, 512-vscr, 512-hscr, 384);
- (this->*draw)(bm, tm, bitmap, mask, tpri, lpri, win, 0, 0, 512-hscr, 512-vscr, 496, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, vscr, 0, 0, 512-hscr, 512-vscr);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, 0, vscr, 512-hscr, 0, 496, 512-vscr);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, hscr, 0, 0, 512-vscr, 512-hscr, 384);
+ draw_rect(bm, tm, bitmap, mask, tpri, lpri, win, 0, 0, 512-hscr, 512-vscr, 496, 384);
}
}
}
}
}
+void segas24_tile::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags)
+{ draw_common(bitmap, cliprect, layer, lpri, flags); }
+
+void segas24_tile::draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags)
+{ draw_common(bitmap, cliprect, layer, lpri, flags); }
+
READ16_MEMBER(segas24_tile::tile_r)
{
return tile_ram[offset];
@@ -612,7 +612,7 @@ void segas24_sprite::device_start()
0 11------ --------
*/
-void segas24_sprite::draw(bitmap_t &bitmap, const rectangle &cliprect, const int *spri)
+void segas24_sprite::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, const int *spri)
{
UINT16 curspr = 0;
int countspr = 0;
diff --git a/src/mame/video/segaic24.h b/src/mame/video/segaic24.h
index 01c1f6cba03..bde01c16ce0 100644
--- a/src/mame/video/segaic24.h
+++ b/src/mame/video/segaic24.h
@@ -30,7 +30,8 @@ public:
DECLARE_READ32_MEMBER(char32_r);
DECLARE_WRITE32_MEMBER(char32_w);
- void draw(bitmap_t &bitmap, const rectangle &cliprect, int layer, int pri, int flags);
+ void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int pri, int flags);
+ void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int pri, int flags);
protected:
virtual void device_start();
@@ -53,11 +54,13 @@ private:
static TILE_GET_INFO_DEVICE(tile_info_1s);
static TILE_GET_INFO_DEVICE(tile_info_1w);
- void draw_rect(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const UINT16 *mask,
+ void draw_rect(bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_ind16 &dm, const UINT16 *mask,
UINT16 tpri, UINT8 lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2);
- void draw_rect_rgb(bitmap_t &bm, bitmap_t &tm, bitmap_t &dm, const UINT16 *mask,
+ void draw_rect(bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_rgb32 &dm, const UINT16 *mask,
UINT16 tpri, UINT8 lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2);
+ template<class _BitmapClass>
+ void draw_common(_BitmapClass &bitmap, const rectangle &cliprect, int layer, int pri, int flags);
};
class segas24_sprite : public device_t
@@ -70,7 +73,7 @@ public:
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
- void draw(bitmap_t &bitmap, const rectangle &cliprect, const int *spri);
+ void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, const int *spri);
protected:
virtual void device_start();
diff --git a/src/mame/video/segaorun.c b/src/mame/video/segaorun.c
index 5f9c8d85115..25a5c884ebe 100644
--- a/src/mame/video/segaorun.c
+++ b/src/mame/video/segaorun.c
@@ -49,7 +49,7 @@ VIDEO_START( outrun )
*
*************************************/
-SCREEN_UPDATE( shangon )
+SCREEN_UPDATE_IND16( shangon )
{
/* reset priorities */
screen.machine().priority_bitmap.fill(0, cliprect);
@@ -80,7 +80,7 @@ SCREEN_UPDATE( shangon )
}
-SCREEN_UPDATE( outrun )
+SCREEN_UPDATE_IND16( outrun )
{
/* if no drawing is happening, fill with black and get out */
if (!segaic16_display_enable)
diff --git a/src/mame/video/segas16a.c b/src/mame/video/segas16a.c
index f531b476d8d..d891a2f458e 100644
--- a/src/mame/video/segas16a.c
+++ b/src/mame/video/segas16a.c
@@ -33,7 +33,7 @@ VIDEO_START( system16a )
*
*************************************/
-SCREEN_UPDATE( system16a )
+SCREEN_UPDATE_IND16( system16a )
{
/* if no drawing is happening, fill with black and get out */
if (!segaic16_display_enable)
@@ -50,7 +50,7 @@ SCREEN_UPDATE( system16a )
segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00);
/* draw background again, just to set the priorities on non-transparent pixels */
- bitmap_t dummy_bitmap;
+ bitmap_ind16 dummy_bitmap;
segaic16_tilemap_draw(screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01);
segaic16_tilemap_draw(screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02);
diff --git a/src/mame/video/segas16b.c b/src/mame/video/segas16b.c
index 24d2dcea42a..2f3b1ac641c 100644
--- a/src/mame/video/segas16b.c
+++ b/src/mame/video/segas16b.c
@@ -45,7 +45,7 @@ VIDEO_START( timscanr )
*
*************************************/
-SCREEN_UPDATE( system16b )
+SCREEN_UPDATE_IND16( system16b )
{
/* if no drawing is happening, fill with black and get out */
if (!segaic16_display_enable)
@@ -62,7 +62,7 @@ SCREEN_UPDATE( system16b )
segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00);
/* draw background again, just to set the priorities on non-transparent pixels */
- bitmap_t dummy_bitmap;
+ bitmap_ind16 dummy_bitmap;
segaic16_tilemap_draw(screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01);
segaic16_tilemap_draw(screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02);
diff --git a/src/mame/video/segas18.c b/src/mame/video/segas18.c
index 47eb65a6876..76ddcfac376 100644
--- a/src/mame/video/segas18.c
+++ b/src/mame/video/segas18.c
@@ -47,7 +47,7 @@ VIDEO_START( system18 )
/* create a temp bitmap to draw the VDP data into */
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_tmp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tmp_bitmap = auto_bitmap_ind16_alloc(machine, width, height);
state->save_item(NAME(state->m_grayscale_enable));
@@ -116,11 +116,11 @@ void system18_set_vdp_mixing(running_machine &machine, int mixing)
*
*************************************/
-static void draw_vdp(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void draw_vdp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
segas1x_state *state = screen.machine().driver_data<segas1x_state>();
int x, y;
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
@@ -148,7 +148,7 @@ static void draw_vdp(screen_device &screen, bitmap_t &bitmap, const rectangle &c
*
*************************************/
-SCREEN_UPDATE( system18 )
+SCREEN_UPDATE_IND16( system18 )
{
segas1x_state *state = screen.machine().driver_data<segas1x_state>();
int vdppri, vdplayer;
diff --git a/src/mame/video/segas24.c b/src/mame/video/segas24.c
index 85da6f77930..02e798ac7c8 100644
--- a/src/mame/video/segas24.c
+++ b/src/mame/video/segas24.c
@@ -23,7 +23,7 @@ namespace {
};
};
-SCREEN_UPDATE(system24)
+SCREEN_UPDATE_IND16(system24)
{
segas24_state *state = screen.machine().driver_data<segas24_state>();
diff --git a/src/mame/video/segas32.c b/src/mame/video/segas32.c
index a64680bae79..ef0d079beab 100644
--- a/src/mame/video/segas32.c
+++ b/src/mame/video/segas32.c
@@ -265,7 +265,7 @@ static void common_start(running_machine &machine, int multi32)
/* allocate the bitmaps (a few extra for multi32) */
for (tmap = 0; tmap < 9 + 2 * multi32; tmap++)
{
- state->m_layer_data[tmap].bitmap = auto_bitmap_alloc(machine, 416, 224, BITMAP_FORMAT_INDEXED16);
+ state->m_layer_data[tmap].bitmap = auto_bitmap_ind16_alloc(machine, 416, 224);
state->m_layer_data[tmap].transparent = auto_alloc_array_clear(machine, UINT8, 256);
}
@@ -545,7 +545,7 @@ READ16_HANDLER( system32_sprite_control_r )
/* D1 : Seems to be '1' only during an erase in progress, this
occurs very briefly though.
D0 : Selected frame buffer (0= A, 1= B) */
- return 0xfffc | (int)(state->m_layer_data[MIXER_LAYER_SPRITES].bitmap < state->m_layer_data[MIXER_LAYER_SPRITES_2].bitmap);
+ return 0xfffc | (int)(&state->m_layer_data[MIXER_LAYER_SPRITES].bitmap < &state->m_layer_data[MIXER_LAYER_SPRITES_2].bitmap);
case 1:
/* D1 : ?
@@ -913,7 +913,7 @@ static void update_tilemap_zoom(screen_device &screen, struct layer_info *layer,
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
int clipenable, clipout, clips, clipdraw_start;
- bitmap_t &bitmap = *layer->bitmap;
+ bitmap_ind16 &bitmap = *layer->bitmap;
struct extents_list clip_extents;
tilemap_t *tilemaps[4];
UINT32 srcx, srcx_start, srcy;
@@ -996,8 +996,8 @@ static void update_tilemap_zoom(screen_device &screen, struct layer_info *layer,
UINT16 *src[2];
/* look up the pages and get their source pixmaps */
- bitmap_t &tm0 = tilemap_get_pixmap(tilemaps[((srcy >> 27) & 2) + 0]);
- bitmap_t &tm1 = tilemap_get_pixmap(tilemaps[((srcy >> 27) & 2) + 1]);
+ bitmap_ind16 &tm0 = tilemap_get_pixmap(tilemaps[((srcy >> 27) & 2) + 0]);
+ bitmap_ind16 &tm1 = tilemap_get_pixmap(tilemaps[((srcy >> 27) & 2) + 1]);
src[0] = &tm0.pix16((srcy >> 20) & 0xff);
src[1] = &tm1.pix16((srcy >> 20) & 0xff);
@@ -1066,7 +1066,7 @@ static void update_tilemap_rowscroll(screen_device &screen, struct layer_info *l
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
int clipenable, clipout, clips, clipdraw_start;
- bitmap_t &bitmap = *layer->bitmap;
+ bitmap_ind16 &bitmap = *layer->bitmap;
struct extents_list clip_extents;
tilemap_t *tilemaps[4];
int rowscroll, rowselect;
@@ -1154,8 +1154,8 @@ static void update_tilemap_rowscroll(screen_device &screen, struct layer_info *l
}
/* look up the pages and get their source pixmaps */
- bitmap_t &tm0 = tilemap_get_pixmap(tilemaps[((srcy >> 7) & 2) + 0]);
- bitmap_t &tm1 = tilemap_get_pixmap(tilemaps[((srcy >> 7) & 2) + 1]);
+ bitmap_ind16 &tm0 = tilemap_get_pixmap(tilemaps[((srcy >> 7) & 2) + 0]);
+ bitmap_ind16 &tm1 = tilemap_get_pixmap(tilemaps[((srcy >> 7) & 2) + 1]);
src[0] = &tm0.pix16(srcy & 0xff);
src[1] = &tm1.pix16(srcy & 0xff);
@@ -1217,7 +1217,7 @@ static void update_tilemap_rowscroll(screen_device &screen, struct layer_info *l
static void update_tilemap_text(screen_device &screen, struct layer_info *layer, const rectangle &cliprect)
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
- bitmap_t &bitmap = *layer->bitmap;
+ bitmap_ind16 &bitmap = *layer->bitmap;
UINT16 *tilebase;
UINT16 *gfxbase;
int startx, starty;
@@ -1378,7 +1378,7 @@ static void update_bitmap(screen_device &screen, struct layer_info *layer, const
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
int clipenable, clipout, clips, clipdraw_start;
- bitmap_t &bitmap = *layer->bitmap;
+ bitmap_ind16 &bitmap = *layer->bitmap;
struct extents_list clip_extents;
int xscroll, yscroll;
int color;
@@ -1480,7 +1480,7 @@ static void update_bitmap(screen_device &screen, struct layer_info *layer, const
static void update_background(segas32_state *state, struct layer_info *layer, const rectangle &cliprect)
{
- bitmap_t &bitmap = *layer->bitmap;
+ bitmap_ind16 &bitmap = *layer->bitmap;
int x, y;
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -1678,7 +1678,7 @@ static int draw_one_sprite(running_machine &machine, UINT16 *data, int xoffs, in
{ 0x1fff, 0x0fff, 0x07ff, 0x03ff }
};
- bitmap_t &bitmap = *state->m_layer_data[(!state->m_is_multi32 || !(data[3] & 0x0800)) ? MIXER_LAYER_SPRITES_2 : MIXER_LAYER_MULTISPR_2].bitmap;
+ bitmap_ind16 &bitmap = *state->m_layer_data[(!state->m_is_multi32 || !(data[3] & 0x0800)) ? MIXER_LAYER_SPRITES_2 : MIXER_LAYER_MULTISPR_2].bitmap;
UINT8 numbanks = machine.region("gfx2")->bytes() / 0x400000;
const UINT32 *spritebase = (const UINT32 *)machine.region("gfx2")->base();
@@ -2008,7 +2008,7 @@ INLINE UINT16 *get_layer_scanline(segas32_state *state, int layer, int scanline)
return &state->m_layer_data[layer].bitmap->pix16(scanline);
}
-static void mix_all_layers(segas32_state *state, int which, int xoffs, bitmap_t &bitmap, const rectangle &cliprect, UINT8 enablemask)
+static void mix_all_layers(segas32_state *state, int which, int xoffs, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 enablemask)
{
int blendenable = state->m_mixer_control[which][0x4e/2] & 0x0800;
int blendfactor = (state->m_mixer_control[which][0x4e/2] >> 8) & 7;
@@ -2419,7 +2419,7 @@ static void print_mixer_data(segas32_state *state, int which)
}
}
-SCREEN_UPDATE( system32 )
+SCREEN_UPDATE_RGB32( system32 )
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
UINT8 enablemask;
@@ -2598,7 +2598,7 @@ for (showclip = 0; showclip < 4; showclip++)
}
-static UINT32 multi32_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int index)
+static UINT32 multi32_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index)
{
segas32_state *state = screen.machine().driver_data<segas32_state>();
UINT8 enablemask;
@@ -2660,8 +2660,8 @@ if (PRINTF_MIXER_DATA)
return 0;
}
-SCREEN_UPDATE( multi32_left ) { return multi32_update(screen, bitmap, cliprect, 0); }
-SCREEN_UPDATE( multi32_right ) { return multi32_update(screen, bitmap, cliprect, 1); }
+SCREEN_UPDATE_RGB32( multi32_left ) { return multi32_update(screen, bitmap, cliprect, 0); }
+SCREEN_UPDATE_RGB32( multi32_right ) { return multi32_update(screen, bitmap, cliprect, 1); }
/*
diff --git a/src/mame/video/segaxbd.c b/src/mame/video/segaxbd.c
index be8d153651e..5b0eca97ef2 100644
--- a/src/mame/video/segaxbd.c
+++ b/src/mame/video/segaxbd.c
@@ -34,7 +34,7 @@ VIDEO_START( xboard )
*
*************************************/
-SCREEN_UPDATE( xboard )
+SCREEN_UPDATE_IND16( xboard )
{
segas1x_state *state = screen.machine().driver_data<segas1x_state>();
diff --git a/src/mame/video/segaybd.c b/src/mame/video/segaybd.c
index 5470f5f5e71..0030d457db5 100644
--- a/src/mame/video/segaybd.c
+++ b/src/mame/video/segaybd.c
@@ -23,7 +23,7 @@ VIDEO_START( yboard )
segaic16_palette_init(0x2000);
/* allocate a bitmap for the yboard layer */
- state->m_tmp_bitmap = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
+ state->m_tmp_bitmap = auto_bitmap_ind16_alloc(machine, 512, 512);
/* initialize the rotation layer */
segaic16_rotate_init(machine, 0, SEGAIC16_ROTATE_YBOARD, 0x000);
@@ -39,7 +39,7 @@ VIDEO_START( yboard )
*
*************************************/
-SCREEN_UPDATE( yboard )
+SCREEN_UPDATE_IND16( yboard )
{
segas1x_state *state = screen.machine().driver_data<segas1x_state>();
rectangle yboard_clip;
diff --git a/src/mame/video/sei_crtc.c b/src/mame/video/sei_crtc.c
index 6cac9ad70f4..d985625b69e 100644
--- a/src/mame/video/sei_crtc.c
+++ b/src/mame/video/sei_crtc.c
@@ -206,7 +206,7 @@ static TILE_GET_INFO( seibucrtc_sc3_tile_info )
SET_TILE_INFO(4, tile, color, 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int pri)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri)
{
UINT16 *spriteram16 = reinterpret_cast<UINT16 *>(memory_get_shared(machine, "spriteram"));
int offs,fx,fy,x,y,color,sprite;
@@ -269,7 +269,7 @@ VIDEO_START( seibu_crtc )
seibucrtc_sc0bank = 0;
}
-SCREEN_UPDATE( seibu_crtc )
+SCREEN_UPDATE_IND16( seibu_crtc )
{
bitmap.fill(screen.machine().pens[0x7ff], cliprect); //black pen
diff --git a/src/mame/video/seibuspi.c b/src/mame/video/seibuspi.c
index 925d7337477..1b499887c8b 100644
--- a/src/mame/video/seibuspi.c
+++ b/src/mame/video/seibuspi.c
@@ -218,7 +218,7 @@ WRITE32_HANDLER( video_dma_address_w )
COMBINE_DATA( &state->m_video_dma_address );
}
-static void drawgfx_blend(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy)
+static void drawgfx_blend(bitmap_rgb32 &bitmap, const rectangle &cliprect, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy)
{
seibuspi_state *state = gfx->machine().driver_data<seibuspi_state>();
const pen_t *pens = &gfx->machine().pens[gfx->color_base];
@@ -343,7 +343,7 @@ static const int sprite_ytable[2][8] =
{ 7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 }
};
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri_mask)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri_mask)
{
seibuspi_state *state = machine.driver_data<seibuspi_state>();
INT16 xpos, ypos;
@@ -558,7 +558,7 @@ static void set_scroll(tilemap_t *layer, int scroll)
#endif
-static void combine_tilemap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, tilemap_t *tile, int x, int y, int opaque, INT16 *rowscroll)
+static void combine_tilemap(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tile, int x, int y, int opaque, INT16 *rowscroll)
{
seibuspi_state *state = machine.driver_data<seibuspi_state>();
int i,j;
@@ -567,8 +567,8 @@ static void combine_tilemap(running_machine &machine, bitmap_t &bitmap, const re
UINT8 *t;
UINT32 xscroll_mask, yscroll_mask;
- bitmap_t &pen_bitmap = tilemap_get_pixmap(tile);
- bitmap_t &flags_bitmap = tilemap_get_flagsmap(tile);
+ bitmap_ind16 &pen_bitmap = tilemap_get_pixmap(tile);
+ bitmap_ind8 &flags_bitmap = tilemap_get_flagsmap(tile);
xscroll_mask = pen_bitmap.width() - 1;
yscroll_mask = pen_bitmap.height() - 1;
@@ -605,7 +605,7 @@ static void combine_tilemap(running_machine &machine, bitmap_t &bitmap, const re
-SCREEN_UPDATE( spi )
+SCREEN_UPDATE_RGB32( spi )
{
seibuspi_state *state = screen.machine().driver_data<seibuspi_state>();
INT16 *back_rowscroll, *mid_rowscroll, *fore_rowscroll;
@@ -668,7 +668,7 @@ VIDEO_START( sys386f2 )
memset(state->m_alpha_table, 0, 8192 * sizeof(UINT8));
}
-SCREEN_UPDATE( sys386f2 )
+SCREEN_UPDATE_RGB32( sys386f2 )
{
bitmap.fill(0, cliprect);
draw_sprites(screen.machine(), bitmap, cliprect, 0);
diff --git a/src/mame/video/seicross.c b/src/mame/video/seicross.c
index f673a35d397..01f66ef37d4 100644
--- a/src/mame/video/seicross.c
+++ b/src/mame/video/seicross.c
@@ -97,7 +97,7 @@ VIDEO_START( seicross )
tilemap_set_scroll_cols(state->m_bg_tilemap, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
seicross_state *state = machine.driver_data<seicross_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -137,7 +137,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( seicross )
+SCREEN_UPDATE_IND16( seicross )
{
seicross_state *state = screen.machine().driver_data<seicross_state>();
int col;
diff --git a/src/mame/video/senjyo.c b/src/mame/video/senjyo.c
index 20a46e9abd6..1a4ccf0d0d9 100644
--- a/src/mame/video/senjyo.c
+++ b/src/mame/video/senjyo.c
@@ -175,7 +175,7 @@ WRITE8_HANDLER( senjyo_bgstripes_w )
***************************************************************************/
-static void draw_bgbitmap(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_bgbitmap(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
senjyo_state *state = machine.driver_data<senjyo_state>();
int x,y,pen,strwid,count;
@@ -212,7 +212,7 @@ static void draw_bgbitmap(running_machine &machine, bitmap_t &bitmap,const recta
}
}
-static void draw_radar(running_machine &machine,bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_radar(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect)
{
senjyo_state *state = machine.driver_data<senjyo_state>();
int offs,x;
@@ -238,7 +238,7 @@ static void draw_radar(running_machine &machine,bitmap_t &bitmap,const rectangle
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int priority)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int priority)
{
senjyo_state *state = machine.driver_data<senjyo_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -289,7 +289,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( senjyo )
+SCREEN_UPDATE_IND16( senjyo )
{
senjyo_state *state = screen.machine().driver_data<senjyo_state>();
int i;
diff --git a/src/mame/video/seta.c b/src/mame/video/seta.c
index a209281e86d..b5adeda3012 100644
--- a/src/mame/video/seta.c
+++ b/src/mame/video/seta.c
@@ -770,11 +770,11 @@ static void usclssic_set_pens(running_machine &machine)
-static void draw_tilemap_palette_effect(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, tilemap_t *tilemap, int scrollx, int scrolly, int gfxnum, int flipscreen)
+static void draw_tilemap_palette_effect(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *tilemap, int scrollx, int scrolly, int gfxnum, int flipscreen)
{
int y;
const gfx_element *gfx_tilemap = machine.gfx[gfxnum];
- const bitmap_t &src_bitmap = tilemap_get_pixmap(tilemap);
+ const bitmap_ind16 &src_bitmap = tilemap_get_pixmap(tilemap);
int width_mask, height_mask;
int opaque_mask = gfx_tilemap->color_granularity - 1;
int pixel_effect_mask = gfx_tilemap->color_base + (gfx_tilemap->total_colors - 1) * gfx_tilemap->color_granularity;
@@ -828,7 +828,7 @@ static void draw_tilemap_palette_effect(running_machine &machine, bitmap_t &bitm
/* For games without tilemaps */
-SCREEN_UPDATE( seta_no_layers )
+SCREEN_UPDATE_IND16( seta_no_layers )
{
set_pens(screen.machine());
bitmap.fill(0x1f0, cliprect);
@@ -839,7 +839,7 @@ SCREEN_UPDATE( seta_no_layers )
/* For games with 1 or 2 tilemaps */
-void seta_layers_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int sprite_bank_size, int sprite_setac )
+void seta_layers_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int sprite_bank_size, int sprite_setac )
{
seta_state *state = screen.machine().driver_data<seta_state>();
int layers_ctrl = -1;
@@ -1046,14 +1046,14 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
}
-static SCREEN_UPDATE( seta_layers )
+static SCREEN_UPDATE_IND16( seta_layers )
{
seta_layers_update(screen, bitmap, cliprect, 0x1000, 1 );
return 0;
}
-SCREEN_UPDATE( setaroul )
+SCREEN_UPDATE_IND16( setaroul )
{
bitmap.fill(0x0, cliprect);
@@ -1072,22 +1072,22 @@ SCREEN_EOF( setaroul )
-SCREEN_UPDATE( seta )
+SCREEN_UPDATE_IND16( seta )
{
set_pens(screen.machine());
- return SCREEN_UPDATE_CALL(seta_layers);
+ return SCREEN_UPDATE16_CALL(seta_layers);
}
-SCREEN_UPDATE( usclssic )
+SCREEN_UPDATE_IND16( usclssic )
{
usclssic_set_pens(screen.machine());
- return SCREEN_UPDATE_CALL(seta_layers);
+ return SCREEN_UPDATE16_CALL(seta_layers);
}
-SCREEN_UPDATE( inttoote )
+SCREEN_UPDATE_IND16( inttoote )
{
/* no palette to set */
- return SCREEN_UPDATE_CALL(seta_layers);
+ return SCREEN_UPDATE16_CALL(seta_layers);
}
diff --git a/src/mame/video/seta001.c b/src/mame/video/seta001.c
index 63f90394fc4..0fd86077167 100644
--- a/src/mame/video/seta001.c
+++ b/src/mame/video/seta001.c
@@ -198,7 +198,7 @@ doraemon: 19 2a 00 03 (always)
-void seta001_device::seta001_draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size, int setac_type)
+void seta001_device::seta001_draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size, int setac_type)
{
int transpen;
@@ -319,7 +319,7 @@ void seta001_device::seta001_draw_background( running_machine &machine, bitmap_t
}
-void seta001_device::seta001_draw_foreground( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size)
+void seta001_device::seta001_draw_foreground( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size)
{
int screenflip = (m_spritectrl[0] & 0x40) >> 6;
int i;
@@ -457,7 +457,7 @@ void seta001_device::tnzs_eof( void )
}
-void seta001_device::seta001_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size, int setac)
+void seta001_device::seta001_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size, int setac)
{
seta001_draw_background(machine, bitmap, cliprect, bank_size, setac);
seta001_draw_foreground(machine, bitmap, cliprect, bank_size);
diff --git a/src/mame/video/seta001.h b/src/mame/video/seta001.h
index 61abe2205b2..fcb3a47bb65 100644
--- a/src/mame/video/seta001.h
+++ b/src/mame/video/seta001.h
@@ -7,7 +7,7 @@ public:
seta001_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void seta001_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size, int setac);
+ void seta001_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size, int setac);
void setac_eof( void );
void tnzs_eof( void );
@@ -52,8 +52,8 @@ protected:
private:
- void seta001_draw_background( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size, int setac_type);
- void seta001_draw_foreground( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_size);
+ void seta001_draw_background( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size, int setac_type);
+ void seta001_draw_foreground( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size);
};
diff --git a/src/mame/video/seta2.c b/src/mame/video/seta2.c
index b8db90566bd..cf0a0769e5f 100644
--- a/src/mame/video/seta2.c
+++ b/src/mame/video/seta2.c
@@ -161,7 +161,7 @@ WRITE16_HANDLER( seta2_vregs_w )
***************************************************************************/
-static void seta_drawgfx( bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx,
+static void seta_drawgfx( bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,
int shadow_depth )
{
@@ -212,7 +212,7 @@ static void seta_drawgfx( bitmap_t &bitmap, const rectangle &cliprect, const gfx
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
// Sprites list
@@ -478,7 +478,7 @@ VIDEO_START( seta2_yoffset )
state->m_yoffset = 0x10;
}
-SCREEN_UPDATE( seta2 )
+SCREEN_UPDATE_IND16( seta2 )
{
seta2_state *state = screen.machine().driver_data<seta2_state>();
diff --git a/src/mame/video/sf.c b/src/mame/video/sf.c
index 78ea75c3bc9..64b1f4cbab2 100644
--- a/src/mame/video/sf.c
+++ b/src/mame/video/sf.c
@@ -129,7 +129,7 @@ INLINE int sf_invert( int nb )
return nb ^ delta[(nb >> 3) & 3];
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect )
{
sf_state *state = machine.driver_data<sf_state>();
int offs;
@@ -218,7 +218,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap,const recta
}
-SCREEN_UPDATE( sf )
+SCREEN_UPDATE_IND16( sf )
{
sf_state *state = screen.machine().driver_data<sf_state>();
diff --git a/src/mame/video/shadfrce.c b/src/mame/video/shadfrce.c
index ed99d639e6f..5b551821175 100644
--- a/src/mame/video/shadfrce.c
+++ b/src/mame/video/shadfrce.c
@@ -113,7 +113,7 @@ WRITE16_HANDLER ( shadfrce_bg1scrolly_w )
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* | ---- ---- hhhf Fe-Y | ---- ---- yyyy yyyy | ---- ---- TTTT TTTT | ---- ---- tttt tttt |
@@ -162,7 +162,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( shadfrce )
+SCREEN_UPDATE_IND16( shadfrce )
{
shadfrce_state *state = screen.machine().driver_data<shadfrce_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/shangha3.c b/src/mame/video/shangha3.c
index 1db911ff28a..d4bbf27b86f 100644
--- a/src/mame/video/shangha3.c
+++ b/src/mame/video/shangha3.c
@@ -69,7 +69,7 @@ VIDEO_START( shangha3 )
shangha3_state *state = machine.driver_data<shangha3_state>();
int i;
- state->m_rawbitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_rawbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
for (i = 0;i < 14;i++)
state->m_drawmode_table[i] = DRAWMODE_SOURCE;
@@ -109,7 +109,7 @@ WRITE16_HANDLER( shangha3_blitter_go_w )
{
shangha3_state *state = space->machine().driver_data<shangha3_state>();
UINT16 *shangha3_ram = state->m_ram;
- bitmap_t &rawbitmap = *state->m_rawbitmap;
+ bitmap_ind16 &rawbitmap = state->m_rawbitmap;
UINT8 *drawmode_table = state->m_drawmode_table;
int offs;
@@ -261,10 +261,10 @@ else
}
-SCREEN_UPDATE( shangha3 )
+SCREEN_UPDATE_IND16( shangha3 )
{
shangha3_state *state = screen.machine().driver_data<shangha3_state>();
- copybitmap(bitmap, *state->m_rawbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_rawbitmap, 0, 0, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/shangkid.c b/src/mame/video/shangkid.c
index eba9d3200d4..409f59f7d22 100644
--- a/src/mame/video/shangkid.c
+++ b/src/mame/video/shangkid.c
@@ -60,7 +60,7 @@ WRITE8_HANDLER( shangkid_videoram_w )
tilemap_mark_tile_dirty( state->m_background, offset&0x7ff );
}
-static void draw_sprite(running_machine &machine, const UINT8 *source, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprite(running_machine &machine, const UINT8 *source, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
shangkid_state *state = machine.driver_data<shangkid_state>();
const gfx_element *gfx;
@@ -172,7 +172,7 @@ static void draw_sprite(running_machine &machine, const UINT8 *source, bitmap_t
}
}
-static void shangkid_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void shangkid_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
shangkid_state *state = machine.driver_data<shangkid_state>();
const UINT8 *source, *finish;
@@ -185,7 +185,7 @@ static void shangkid_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( shangkid )
+SCREEN_UPDATE_IND16( shangkid )
{
shangkid_state *state = screen.machine().driver_data<shangkid_state>();
int flipscreen = state->m_videoreg[1]&0x80;
@@ -235,7 +235,7 @@ PALETTE_INIT( dynamski )
}
-static void dynamski_draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri )
+static void dynamski_draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
shangkid_state *state = machine.driver_data<shangkid_state>();
UINT8 *videoram = state->m_videoram;
@@ -289,7 +289,7 @@ static void dynamski_draw_background(running_machine &machine, bitmap_t &bitmap,
}
}
-static void dynamski_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void dynamski_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
shangkid_state *state = machine.driver_data<shangkid_state>();
UINT8 *videoram = state->m_videoram;
@@ -321,7 +321,7 @@ static void dynamski_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-SCREEN_UPDATE( dynamski )
+SCREEN_UPDATE_IND16( dynamski )
{
dynamski_draw_background(screen.machine(), bitmap,cliprect, 0 );
dynamski_draw_sprites(screen.machine(), bitmap,cliprect );
diff --git a/src/mame/video/shaolins.c b/src/mame/video/shaolins.c
index 57b668dfffa..4a47eb91aab 100644
--- a/src/mame/video/shaolins.c
+++ b/src/mame/video/shaolins.c
@@ -158,7 +158,7 @@ VIDEO_START( shaolins )
tilemap_set_scroll_cols(state->m_bg_tilemap, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
shaolins_state *state = machine.driver_data<shaolins_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -192,7 +192,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( shaolins )
+SCREEN_UPDATE_IND16( shaolins )
{
shaolins_state *state = screen.machine().driver_data<shaolins_state>();
diff --git a/src/mame/video/shisen.c b/src/mame/video/shisen.c
index 1948388b964..c8536057778 100644
--- a/src/mame/video/shisen.c
+++ b/src/mame/video/shisen.c
@@ -62,7 +62,7 @@ VIDEO_START( sichuan2 )
8, 8, 64, 32);
}
-SCREEN_UPDATE( sichuan2 )
+SCREEN_UPDATE_IND16( sichuan2 )
{
shisen_state *state = screen.machine().driver_data<shisen_state>();
diff --git a/src/mame/video/shootout.c b/src/mame/video/shootout.c
index 3df9580521f..b98db514319 100644
--- a/src/mame/video/shootout.c
+++ b/src/mame/video/shootout.c
@@ -91,7 +91,7 @@ VIDEO_START( shootout )
tilemap_set_transparent_pen( state->m_foreground, 0 );
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank_bits )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_bits )
{
shootout_state *state = machine.driver_data<shootout_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -171,7 +171,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( shootout )
+SCREEN_UPDATE_IND16( shootout )
{
shootout_state *state = screen.machine().driver_data<shootout_state>();
@@ -183,7 +183,7 @@ SCREEN_UPDATE( shootout )
return 0;
}
-SCREEN_UPDATE( shootouj )
+SCREEN_UPDATE_IND16( shootouj )
{
shootout_state *state = screen.machine().driver_data<shootout_state>();
diff --git a/src/mame/video/shuuz.c b/src/mame/video/shuuz.c
index 3ccf52d60ba..83a972449b5 100644
--- a/src/mame/video/shuuz.c
+++ b/src/mame/video/shuuz.c
@@ -89,11 +89,11 @@ VIDEO_START( shuuz )
*
*************************************/
-SCREEN_UPDATE( shuuz )
+SCREEN_UPDATE_IND16( shuuz )
{
shuuz_state *state = screen.machine().driver_data<shuuz_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/sidearms.c b/src/mame/video/sidearms.c
index afe914c2c49..41b0dae92f8 100644
--- a/src/mame/video/sidearms.c
+++ b/src/mame/video/sidearms.c
@@ -174,7 +174,7 @@ VIDEO_START( sidearms )
state->m_flipon = state->m_charon = state->m_staron = state->m_objon = state->m_bgon = 0;
}
-static void draw_sprites_region(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int start_offset, int end_offset )
+static void draw_sprites_region(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset, int end_offset )
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
const gfx_element *gfx = machine.gfx[2];
@@ -207,7 +207,7 @@ static void draw_sprites_region(running_machine &machine, bitmap_t &bitmap, cons
}
}
-static void sidearms_draw_starfield( running_machine &machine, bitmap_t &bitmap )
+static void sidearms_draw_starfield( running_machine &machine, bitmap_ind16 &bitmap )
{
int x, y, i;
UINT32 hadd_283, vadd_283, _hflop_74a_n, _hcount_191, _vcount_191;
@@ -331,7 +331,7 @@ static void sidearms_draw_starfield( running_machine &machine, bitmap_t &bitmap
#endif
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sidearms_state *state = machine.driver_data<sidearms_state>();
@@ -346,7 +346,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( sidearms )
+SCREEN_UPDATE_IND16( sidearms )
{
sidearms_state *state = screen.machine().driver_data<sidearms_state>();
diff --git a/src/mame/video/sidepckt.c b/src/mame/video/sidepckt.c
index 737a1c865c1..625cca12280 100644
--- a/src/mame/video/sidepckt.c
+++ b/src/mame/video/sidepckt.c
@@ -107,7 +107,7 @@ WRITE8_HANDLER( sidepckt_flipscreen_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
sidepckt_state *state = machine.driver_data<sidepckt_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -141,7 +141,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-SCREEN_UPDATE( sidepckt )
+SCREEN_UPDATE_IND16( sidepckt )
{
sidepckt_state *state = screen.machine().driver_data<sidepckt_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,TILEMAP_DRAW_LAYER1,0);
diff --git a/src/mame/video/silkroad.c b/src/mame/video/silkroad.c
index d35da269e8e..7abbd832a47 100644
--- a/src/mame/video/silkroad.c
+++ b/src/mame/video/silkroad.c
@@ -7,7 +7,7 @@
/* Clean Up */
/* is theres a bg colour register? */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
silkroad_state *state = machine.driver_data<silkroad_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -141,7 +141,7 @@ VIDEO_START(silkroad)
tilemap_set_transparent_pen(state->m_fg3_tilemap, 0);
}
-SCREEN_UPDATE(silkroad)
+SCREEN_UPDATE_IND16(silkroad)
{
silkroad_state *state = screen.machine().driver_data<silkroad_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/simpl156.c b/src/mame/video/simpl156.c
index a1657b3951f..90a020b46a1 100644
--- a/src/mame/video/simpl156.c
+++ b/src/mame/video/simpl156.c
@@ -25,7 +25,7 @@ VIDEO_START( simpl156 )
state_save_register_global_pointer(machine, machine.generic.paletteram.u16, 0x1000/2);
}
-SCREEN_UPDATE( simpl156 )
+SCREEN_UPDATE_IND16( simpl156 )
{
simpl156_state *state = screen.machine().driver_data<simpl156_state>();
@@ -41,6 +41,6 @@ SCREEN_UPDATE( simpl156 )
//FIXME: flip_screen_x should not be written!
flip_screen_set_no_update(screen.machine(), 1);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x800); // 0x800 needed to charlien title
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x800); // 0x800 needed to charlien title
return 0;
}
diff --git a/src/mame/video/simpsons.c b/src/mame/video/simpsons.c
index d7985571509..1981477833f 100644
--- a/src/mame/video/simpsons.c
+++ b/src/mame/video/simpsons.c
@@ -122,7 +122,7 @@ void simpsons_video_banking( running_machine &machine, int bank )
***************************************************************************/
-SCREEN_UPDATE( simpsons )
+SCREEN_UPDATE_IND16( simpsons )
{
simpsons_state *state = screen.machine().driver_data<simpsons_state>();
int layer[3], bg_colorbase;
diff --git a/src/mame/video/sknsspr.c b/src/mame/video/sknsspr.c
index 207f7563070..ad51e50cbac 100644
--- a/src/mame/video/sknsspr.c
+++ b/src/mame/video/sknsspr.c
@@ -165,7 +165,7 @@ void sknsspr_device::skns_sprite_kludge(int x, int y)
old2 += 0x40; \
}
-static void blit_nf_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
+static void blit_nf_z(bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
{
z_decls(sx);
z_clamp_x_min();
@@ -179,7 +179,7 @@ static void blit_nf_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *
}
}
-static void blit_fy_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
+static void blit_fy_z(bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
{
z_decls(sx);
z_clamp_x_min();
@@ -193,7 +193,7 @@ static void blit_fy_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *
}
}
-static void blit_fx_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
+static void blit_fx_z(bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
{
z_decls(sx);
z_clamp_x_max();
@@ -207,7 +207,7 @@ static void blit_fx_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *
}
}
-static void blit_fxy_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
+static void blit_fxy_z(bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
{
z_decls(sx);
z_clamp_x_max();
@@ -221,14 +221,14 @@ static void blit_fxy_z(bitmap_t &bitmap, const rectangle &cliprect, const UINT8
}
}
-static void (*const blit_z[4])(bitmap_t &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour) = {
+static void (*const blit_z[4])(bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour) = {
blit_nf_z,
blit_fy_z,
blit_fx_z,
blit_fxy_z,
};
-void sknsspr_device::skns_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32* spriteram_source, size_t spriteram_size, UINT8* gfx_source, size_t gfx_length, UINT32* sprite_regs)
+void sknsspr_device::skns_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32* spriteram_source, size_t spriteram_size, UINT8* gfx_source, size_t gfx_length, UINT32* sprite_regs)
{
/*- SPR RAM Format -**
diff --git a/src/mame/video/sknsspr.h b/src/mame/video/sknsspr.h
index 2b2841dbb0c..3d6e4d2c197 100644
--- a/src/mame/video/sknsspr.h
+++ b/src/mame/video/sknsspr.h
@@ -3,7 +3,7 @@ class sknsspr_device : public device_t
{
public:
sknsspr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void skns_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32* spriteram_source, size_t spriteram_size, UINT8* gfx_source, size_t gfx_length, UINT32* sprite_regs);
+ void skns_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32* spriteram_source, size_t spriteram_size, UINT8* gfx_source, size_t gfx_length, UINT32* sprite_regs);
void skns_sprite_kludge(int x, int y);
protected:
diff --git a/src/mame/video/skullxbo.c b/src/mame/video/skullxbo.c
index 6b57dda21d0..3a99b1faf96 100644
--- a/src/mame/video/skullxbo.c
+++ b/src/mame/video/skullxbo.c
@@ -243,11 +243,11 @@ void skullxbo_scanline_update(running_machine &machine, int scanline)
*
*************************************/
-SCREEN_UPDATE( skullxbo )
+SCREEN_UPDATE_IND16( skullxbo )
{
skullxbo_state *state = screen.machine().driver_data<skullxbo_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/skydiver.c b/src/mame/video/skydiver.c
index 037828f0661..25701b762f9 100644
--- a/src/mame/video/skydiver.c
+++ b/src/mame/video/skydiver.c
@@ -168,7 +168,7 @@ WRITE8_HANDLER( skydiver_2000_201F_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skydiver_state *state = machine.driver_data<skydiver_state>();
int pic;
@@ -206,7 +206,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( skydiver )
+SCREEN_UPDATE_IND16( skydiver )
{
skydiver_state *state = screen.machine().driver_data<skydiver_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/skyfox.c b/src/mame/video/skyfox.c
index b0c098c8288..248c3cc234f 100644
--- a/src/mame/video/skyfox.c
+++ b/src/mame/video/skyfox.c
@@ -159,7 +159,7 @@ Offset: Value:
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
skyfox_state *state = machine.driver_data<skyfox_state>();
int offs;
@@ -238,7 +238,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skyfox_state *state = machine.driver_data<skyfox_state>();
UINT8 *RAM = machine.region("gfx2")->base();
@@ -281,7 +281,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
***************************************************************************/
-SCREEN_UPDATE( skyfox )
+SCREEN_UPDATE_IND16( skyfox )
{
bitmap.fill(255, cliprect); // the bg is black
draw_background(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/skykid.c b/src/mame/video/skykid.c
index 58b4496aba7..dfb21d8207d 100644
--- a/src/mame/video/skykid.c
+++ b/src/mame/video/skykid.c
@@ -185,7 +185,7 @@ WRITE8_HANDLER( skykid_flipscreen_priority_w )
***************************************************************************/
/* the sprite generator IC is the same as Mappy */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
skykid_state *state = machine.driver_data<skykid_state>();
UINT8 *spriteram = state->m_spriteram + 0x780;
@@ -238,7 +238,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-SCREEN_UPDATE( skykid )
+SCREEN_UPDATE_IND16( skykid )
{
skykid_state *state = screen.machine().driver_data<skykid_state>();
if (flip_screen_get(screen.machine()))
diff --git a/src/mame/video/skyraid.c b/src/mame/video/skyraid.c
index 60dc7f226db..51e91f7ff8a 100644
--- a/src/mame/video/skyraid.c
+++ b/src/mame/video/skyraid.c
@@ -12,11 +12,11 @@ VIDEO_START( skyraid )
{
skyraid_state *state = machine.driver_data<skyraid_state>();
- state->m_helper = auto_bitmap_alloc(machine, 128, 240, machine.primary_screen->format());
+ state->m_helper = auto_bitmap_ind16_alloc(machine, 128, 240);
}
-static void draw_text(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_text(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skyraid_state *state = machine.driver_data<skyraid_state>();
const UINT8* p = state->m_alpha_num_ram;
@@ -36,7 +36,7 @@ static void draw_text(running_machine &machine, bitmap_t &bitmap, const rectangl
}
-static void draw_terrain(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_terrain(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skyraid_state *state = machine.driver_data<skyraid_state>();
const UINT8* p = machine.region("user1")->base();
@@ -72,7 +72,7 @@ static void draw_terrain(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skyraid_state *state = machine.driver_data<skyraid_state>();
int i;
@@ -94,7 +94,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_missiles(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_missiles(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
skyraid_state *state = machine.driver_data<skyraid_state>();
int i;
@@ -117,7 +117,7 @@ static void draw_missiles(running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_trapezoid(running_machine &machine, bitmap_t& dst, bitmap_t& src)
+static void draw_trapezoid(running_machine &machine, bitmap_ind16& dst, bitmap_ind16& src)
{
const UINT8* p = machine.region("user2")->base();
@@ -138,7 +138,7 @@ static void draw_trapezoid(running_machine &machine, bitmap_t& dst, bitmap_t& sr
}
-SCREEN_UPDATE( skyraid )
+SCREEN_UPDATE_IND16( skyraid )
{
skyraid_state *state = screen.machine().driver_data<skyraid_state>();
diff --git a/src/mame/video/slapfght.c b/src/mame/video/slapfght.c
index df814e5cdd0..ffcbbeb3419 100644
--- a/src/mame/video/slapfght.c
+++ b/src/mame/video/slapfght.c
@@ -153,7 +153,7 @@ static void slapfght_log_vram(running_machine &machine)
Render the Sprites
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority_to_display )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority_to_display )
{
slapfght_state *state = machine.driver_data<slapfght_state>();
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
@@ -187,7 +187,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( perfrman )
+SCREEN_UPDATE_IND16( perfrman )
{
slapfght_state *state = screen.machine().driver_data<slapfght_state>();
tilemap_set_flip( state->m_pf1_tilemap, state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
@@ -209,7 +209,7 @@ SCREEN_UPDATE( perfrman )
}
-SCREEN_UPDATE( slapfight )
+SCREEN_UPDATE_IND16( slapfight )
{
slapfght_state *state = screen.machine().driver_data<slapfght_state>();
UINT8 *buffered_spriteram = screen.machine().generic.buffered_spriteram.u8;
diff --git a/src/mame/video/slapshot.c b/src/mame/video/slapshot.c
index 7b94c8a2994..8bf3b56f36e 100644
--- a/src/mame/video/slapshot.c
+++ b/src/mame/video/slapshot.c
@@ -34,7 +34,7 @@ VIDEO_START( slapshot )
SPRITE DRAW ROUTINES
************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int *primasks, int y_offset )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks, int y_offset )
{
/*
Sprite format:
@@ -454,7 +454,7 @@ One exception is the "puck" in early attract which is
a bg layer given priority over some sprites.
********************************************************************/
-SCREEN_UPDATE( slapshot )
+SCREEN_UPDATE_IND16( slapshot )
{
slapshot_state *state = screen.machine().driver_data<slapshot_state>();
UINT8 layer[5];
diff --git a/src/mame/video/snes.c b/src/mame/video/snes.c
index 96e5d2e9d25..9d9a1919900 100644
--- a/src/mame/video/snes.c
+++ b/src/mame/video/snes.c
@@ -1498,7 +1498,7 @@ INLINE void snes_draw_blend( UINT16 offset, UINT16 *colour, UINT8 prevent_color_
* the optimized averaging algorithm.
*********************************************/
-static void snes_refresh_scanline( running_machine &machine, bitmap_t &bitmap, UINT16 curline )
+static void snes_refresh_scanline( running_machine &machine, bitmap_rgb32 &bitmap, UINT16 curline )
{
UINT16 ii;
int x;
@@ -1789,7 +1789,7 @@ VIDEO_START( snes )
state_save_register_global_pointer(machine, snes_oam, SNES_OAM_SIZE/2);
}
-SCREEN_UPDATE( snes )
+SCREEN_UPDATE_RGB32( snes )
{
int y;
diff --git a/src/mame/video/snk.c b/src/mame/video/snk.c
index c09522ea640..5e594d5d082 100644
--- a/src/mame/video/snk.c
+++ b/src/mame/video/snk.c
@@ -744,7 +744,7 @@ WRITE8_HANDLER( tdfever_spriteram_w )
/**************************************************************************************/
-static void marvins_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void marvins_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
const int scrollx, const int scrolly, const int from, const int to)
{
snk_state *state = machine.driver_data<snk_state>();
@@ -789,7 +789,7 @@ static void marvins_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
}
-static void tnk3_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, const int xscroll, const int yscroll)
+static void tnk3_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, const int xscroll, const int yscroll)
{
snk_state *state = machine.driver_data<snk_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -854,7 +854,7 @@ static void tnk3_draw_sprites(running_machine &machine, bitmap_t &bitmap, const
}
-static void ikari_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void ikari_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
const int start, const int xscroll, const int yscroll, const UINT8 *source, const int gfxnum )
{
snk_state *state = machine.driver_data<snk_state>();
@@ -926,7 +926,7 @@ byte3: attributes
-xx-x--- (bank number)
x------- (x offset bit8)
*/
-static void tdfever_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void tdfever_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
const int xscroll, const int yscroll, const UINT8 *source, const int gfxnum, const int hw_xflip, const int from, const int to )
{
snk_state *state = machine.driver_data<snk_state>();
@@ -990,7 +990,7 @@ static void tdfever_draw_sprites(running_machine &machine, bitmap_t &bitmap, con
/**************************************************************/
-SCREEN_UPDATE( marvins )
+SCREEN_UPDATE_IND16( marvins )
{
snk_state *state = screen.machine().driver_data<snk_state>();
@@ -1009,7 +1009,7 @@ SCREEN_UPDATE( marvins )
}
-SCREEN_UPDATE( tnk3 )
+SCREEN_UPDATE_IND16( tnk3 )
{
snk_state *state = screen.machine().driver_data<snk_state>();
@@ -1024,7 +1024,7 @@ SCREEN_UPDATE( tnk3 )
}
-SCREEN_UPDATE( ikari )
+SCREEN_UPDATE_IND16( ikari )
{
snk_state *state = screen.machine().driver_data<snk_state>();
@@ -1042,7 +1042,7 @@ SCREEN_UPDATE( ikari )
}
-SCREEN_UPDATE( gwar )
+SCREEN_UPDATE_IND16( gwar )
{
snk_state *state = screen.machine().driver_data<snk_state>();
@@ -1061,7 +1061,7 @@ SCREEN_UPDATE( gwar )
}
-SCREEN_UPDATE( tdfever )
+SCREEN_UPDATE_IND16( tdfever )
{
snk_state *state = screen.machine().driver_data<snk_state>();
diff --git a/src/mame/video/snk6502.c b/src/mame/video/snk6502.c
index 1bc2be690a6..27eccdff6ef 100644
--- a/src/mame/video/snk6502.c
+++ b/src/mame/video/snk6502.c
@@ -203,7 +203,7 @@ VIDEO_START( pballoon )
}
-SCREEN_UPDATE( snk6502 )
+SCREEN_UPDATE_IND16( snk6502 )
{
snk6502_state *state = screen.machine().driver_data<snk6502_state>();
diff --git a/src/mame/video/snk68.c b/src/mame/video/snk68.c
index eccd610c5c9..a5ad0ac3832 100644
--- a/src/mame/video/snk68.c
+++ b/src/mame/video/snk68.c
@@ -199,7 +199,7 @@ WRITE16_HANDLER( pow_paletteram16_word_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int group)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int group)
{
snk68_state *state = machine.driver_data<snk68_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -288,7 +288,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( pow )
+SCREEN_UPDATE_IND16( pow )
{
snk68_state *state = screen.machine().driver_data<snk68_state>();
diff --git a/src/mame/video/snookr10.c b/src/mame/video/snookr10.c
index e98ec4db3ba..451e52d6db0 100644
--- a/src/mame/video/snookr10.c
+++ b/src/mame/video/snookr10.c
@@ -187,7 +187,7 @@ VIDEO_START( apple10 )
state->m_bg_tilemap = tilemap_create(machine, apple10_get_bg_tile_info, tilemap_scan_rows, 4, 8, 128, 30);
}
-SCREEN_UPDATE( snookr10 )
+SCREEN_UPDATE_IND16( snookr10 )
{
snookr10_state *state = screen.machine().driver_data<snookr10_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/solomon.c b/src/mame/video/solomon.c
index a74d1e3a0e1..39f62016d44 100644
--- a/src/mame/video/solomon.c
+++ b/src/mame/video/solomon.c
@@ -76,7 +76,7 @@ VIDEO_START( solomon )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
solomon_state *state = machine.driver_data<solomon_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -107,7 +107,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( solomon )
+SCREEN_UPDATE_IND16( solomon )
{
solomon_state *state = screen.machine().driver_data<solomon_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/sonson.c b/src/mame/video/sonson.c
index 58bd89a0d89..53f6e4eda92 100644
--- a/src/mame/video/sonson.c
+++ b/src/mame/video/sonson.c
@@ -140,7 +140,7 @@ VIDEO_START( sonson )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
sonson_state *state = machine.driver_data<sonson_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -175,7 +175,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( sonson )
+SCREEN_UPDATE_IND16( sonson )
{
sonson_state *state = screen.machine().driver_data<sonson_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/spacefb.c b/src/mame/video/spacefb.c
index d2bbf67d2f7..e4661e47a9e 100644
--- a/src/mame/video/spacefb.c
+++ b/src/mame/video/spacefb.c
@@ -138,7 +138,7 @@ static void get_starfield_pens(spacefb_state *state, pen_t *pens)
}
-static void draw_starfield(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_starfield(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
spacefb_state *state = screen.machine().driver_data<spacefb_state>();
int y;
@@ -248,7 +248,7 @@ static void get_sprite_pens(running_machine &machine, pen_t *pens)
}
-static void draw_bullet(running_machine &machine, offs_t offs, pen_t pen, bitmap_t &bitmap, const rectangle &cliprect, int flip)
+static void draw_bullet(running_machine &machine, offs_t offs, pen_t pen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flip)
{
spacefb_state *state = machine.driver_data<spacefb_state>();
UINT8 sy;
@@ -300,7 +300,7 @@ static void draw_bullet(running_machine &machine, offs_t offs, pen_t pen, bitmap
}
-static void draw_sprite(running_machine &machine, offs_t offs, pen_t *pens, bitmap_t &bitmap, const rectangle &cliprect, int flip)
+static void draw_sprite(running_machine &machine, offs_t offs, pen_t *pens, bitmap_rgb32 &bitmap, const rectangle &cliprect, int flip)
{
spacefb_state *state = machine.driver_data<spacefb_state>();
UINT8 sy;
@@ -358,7 +358,7 @@ static void draw_sprite(running_machine &machine, offs_t offs, pen_t *pens, bitm
}
-static void draw_objects(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_objects(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
spacefb_state *state = machine.driver_data<spacefb_state>();
pen_t sprite_pens[NUM_SPRITE_PENS];
@@ -397,7 +397,7 @@ static void draw_objects(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-SCREEN_UPDATE( spacefb )
+SCREEN_UPDATE_RGB32( spacefb )
{
draw_objects(screen.machine(), bitmap, cliprect);
draw_starfield(screen, bitmap, cliprect);
diff --git a/src/mame/video/spbactn.c b/src/mame/video/spbactn.c
index d21951e3e24..282d41597fc 100644
--- a/src/mame/video/spbactn.c
+++ b/src/mame/video/spbactn.c
@@ -6,7 +6,7 @@
static void blendbitmaps(running_machine &machine,
- bitmap_t &dest,bitmap_t &src1,bitmap_t &src2,
+ bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind16 &src2,
const rectangle &cliprect)
{
int y,x;
@@ -35,7 +35,7 @@ static void blendbitmaps(running_machine &machine,
/* from gals pinball (which was in turn from ninja gaiden) */
-static int draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static int draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
static const UINT8 layout[8][8] =
{
@@ -114,16 +114,16 @@ VIDEO_START( spbactn )
int width = machine.primary_screen->width();
int height = machine.primary_screen->height();
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
}
-SCREEN_UPDATE( spbactn )
+SCREEN_UPDATE_RGB32( spbactn )
{
spbactn_state *state = screen.machine().driver_data<spbactn_state>();
int offs, sx, sy;
- state->m_tile_bitmap_fg->fill(0, cliprect);
+ state->m_tile_bitmap_fg.fill(0, cliprect);
/* draw table bg gfx */
for (sx = sy = offs = 0; offs < 0x4000 / 2; offs++)
@@ -135,7 +135,7 @@ SCREEN_UPDATE( spbactn )
color = ((attr & 0x00f0) >> 4) | 0x80;
- drawgfx_transpen_raw(*state->m_tile_bitmap_bg, cliprect, screen.machine().gfx[1],
+ drawgfx_transpen_raw(state->m_tile_bitmap_bg, cliprect, screen.machine().gfx[1],
code,
screen.machine().gfx[1]->color_base + color * screen.machine().gfx[1]->color_granularity,
0, 0,
@@ -150,7 +150,7 @@ SCREEN_UPDATE( spbactn )
}
}
- if (draw_sprites(screen.machine(), *state->m_tile_bitmap_bg, cliprect, 0))
+ if (draw_sprites(screen.machine(), state->m_tile_bitmap_bg, cliprect, 0))
{
/* kludge: draw table bg gfx again if priority 0 sprites are enabled */
for (sx = sy = offs = 0; offs < 0x4000 / 2; offs++)
@@ -162,7 +162,7 @@ SCREEN_UPDATE( spbactn )
color = ((attr & 0x00f0) >> 4) | 0x80;
- drawgfx_transpen_raw(*state->m_tile_bitmap_bg, cliprect, screen.machine().gfx[1],
+ drawgfx_transpen_raw(state->m_tile_bitmap_bg, cliprect, screen.machine().gfx[1],
code,
screen.machine().gfx[1]->color_base + color * screen.machine().gfx[1]->color_granularity,
0, 0,
@@ -178,7 +178,7 @@ SCREEN_UPDATE( spbactn )
}
}
- draw_sprites(screen.machine(), *state->m_tile_bitmap_bg, cliprect, 1);
+ draw_sprites(screen.machine(), state->m_tile_bitmap_bg, cliprect, 1);
/* draw table fg gfx */
for (sx = sy = offs = 0; offs < 0x4000 / 2; offs++)
@@ -196,7 +196,7 @@ SCREEN_UPDATE( spbactn )
else
color |= 0x0080;
- drawgfx_transpen_raw(*state->m_tile_bitmap_fg, cliprect, screen.machine().gfx[0],
+ drawgfx_transpen_raw(state->m_tile_bitmap_fg, cliprect, screen.machine().gfx[0],
code,
screen.machine().gfx[0]->color_base + color * screen.machine().gfx[0]->color_granularity,
0, 0,
@@ -211,10 +211,10 @@ SCREEN_UPDATE( spbactn )
}
}
- draw_sprites(screen.machine(), *state->m_tile_bitmap_fg, cliprect, 2);
- draw_sprites(screen.machine(), *state->m_tile_bitmap_fg, cliprect, 3);
+ draw_sprites(screen.machine(), state->m_tile_bitmap_fg, cliprect, 2);
+ draw_sprites(screen.machine(), state->m_tile_bitmap_fg, cliprect, 3);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(screen.machine(), bitmap, *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, cliprect);
+ blendbitmaps(screen.machine(), bitmap, state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, cliprect);
return 0;
}
diff --git a/src/mame/video/spcforce.c b/src/mame/video/spcforce.c
index 63c4183641f..3ce1c598dee 100644
--- a/src/mame/video/spcforce.c
+++ b/src/mame/video/spcforce.c
@@ -16,7 +16,7 @@ WRITE8_HANDLER( spcforce_flip_screen_w )
}
-SCREEN_UPDATE( spcforce )
+SCREEN_UPDATE_IND16( spcforce )
{
spcforce_state *state = screen.machine().driver_data<spcforce_state>();
int offs;
diff --git a/src/mame/video/spdodgeb.c b/src/mame/video/spdodgeb.c
index 9127a5f5d1c..6b991703c6f 100644
--- a/src/mame/video/spdodgeb.c
+++ b/src/mame/video/spdodgeb.c
@@ -150,7 +150,7 @@ WRITE8_HANDLER( spdodgeb_videoram_w )
cliprect,gfx, \
(which+order),color+ 8 * state->m_sprite_palbank,flipx,flipy,sx,sy,0);
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
spdodgeb_state *state = machine.driver_data<spdodgeb_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -208,7 +208,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
#undef DRAW_SPRITE
-SCREEN_UPDATE( spdodgeb )
+SCREEN_UPDATE_IND16( spdodgeb )
{
spdodgeb_state *state = screen.machine().driver_data<spdodgeb_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_lastscroll+5);
diff --git a/src/mame/video/speedatk.c b/src/mame/video/speedatk.c
index 198224b2c4b..fdd62c9f6e8 100644
--- a/src/mame/video/speedatk.c
+++ b/src/mame/video/speedatk.c
@@ -87,7 +87,7 @@ WRITE8_HANDLER( speedatk_6845_w )
}
}
-SCREEN_UPDATE( speedatk )
+SCREEN_UPDATE_IND16( speedatk )
{
speedatk_state *state = screen.machine().driver_data<speedatk_state>();
int x,y;
diff --git a/src/mame/video/speedbal.c b/src/mame/video/speedbal.c
index 846717eaeae..958c4a318f7 100644
--- a/src/mame/video/speedbal.c
+++ b/src/mame/video/speedbal.c
@@ -84,7 +84,7 @@ WRITE8_HANDLER( speedbal_background_videoram_w )
* *
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
speedbal_state *state = machine.driver_data<speedbal_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -127,7 +127,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
* *
*************************************/
-SCREEN_UPDATE( speedbal )
+SCREEN_UPDATE_IND16( speedbal )
{
speedbal_state *state = screen.machine().driver_data<speedbal_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/speedspn.c b/src/mame/video/speedspn.c
index 1d90b7500ce..8a40d8747ef 100644
--- a/src/mame/video/speedspn.c
+++ b/src/mame/video/speedspn.c
@@ -59,7 +59,7 @@ WRITE8_HANDLER(speedspn_global_display_w)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
speedspn_state *state = machine.driver_data<speedspn_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -93,7 +93,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE(speedspn)
+SCREEN_UPDATE_IND16(speedspn)
{
speedspn_state *state = screen.machine().driver_data<speedspn_state>();
if (state->m_display_disable)
diff --git a/src/mame/video/splash.c b/src/mame/video/splash.c
index 4922985d5e4..b1634ef830d 100644
--- a/src/mame/video/splash.c
+++ b/src/mame/video/splash.c
@@ -80,7 +80,7 @@ WRITE16_HANDLER( splash_vram_w )
tilemap_mark_tile_dirty(state->m_bg_tilemap[offset >> 11],((offset << 1) & 0x0fff) >> 1);
}
-static void draw_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bitmap(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
splash_state *state = machine.driver_data<splash_state>();
int sx,sy,color,count,colxor,bitswap;
@@ -210,7 +210,7 @@ VIDEO_START( splash )
400| xxxxxxxx -------- | unused
*/
-static void splash_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void splash_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
splash_state *state = machine.driver_data<splash_state>();
int i;
@@ -231,7 +231,7 @@ static void splash_draw_sprites(running_machine &machine, bitmap_t &bitmap,const
}
}
-static void funystrp_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void funystrp_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
splash_state *state = machine.driver_data<splash_state>();
int i;
@@ -258,7 +258,7 @@ static void funystrp_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
***************************************************************************/
-SCREEN_UPDATE( splash )
+SCREEN_UPDATE_IND16( splash )
{
splash_state *state = screen.machine().driver_data<splash_state>();
@@ -274,7 +274,7 @@ SCREEN_UPDATE( splash )
return 0;
}
-SCREEN_UPDATE( funystrp )
+SCREEN_UPDATE_IND16( funystrp )
{
splash_state *state = screen.machine().driver_data<splash_state>();
diff --git a/src/mame/video/sprcros2.c b/src/mame/video/sprcros2.c
index 3718f36aa3d..c821cefcf73 100644
--- a/src/mame/video/sprcros2.c
+++ b/src/mame/video/sprcros2.c
@@ -146,7 +146,7 @@ VIDEO_START( sprcros2 )
colortable_configure_tilemap_groups(machine.colortable, state->m_fgtilemap, machine.gfx[2], 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
sprcros2_state *state = machine.driver_data<sprcros2_state>();
int offs,sx,sy,color,flipx,flipy;
@@ -194,7 +194,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( sprcros2 )
+SCREEN_UPDATE_IND16( sprcros2 )
{
sprcros2_state *state = screen.machine().driver_data<sprcros2_state>();
diff --git a/src/mame/video/sprint2.c b/src/mame/video/sprint2.c
index 5840220e12b..08164dcca59 100644
--- a/src/mame/video/sprint2.c
+++ b/src/mame/video/sprint2.c
@@ -46,7 +46,7 @@ static TILE_GET_INFO( get_tile_info )
VIDEO_START( sprint2 )
{
sprint2_state *state = machine.driver_data<sprint2_state>();
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 16, 8, 32, 32);
}
@@ -94,7 +94,7 @@ static UINT8 collision_check(sprint2_state *state, colortable_t *colortable, rec
for (y = rect.min_y; y <= rect.max_y; y++)
for (x = rect.min_x; x <= rect.max_x; x++)
{
- UINT16 a = colortable_entry_get_value(colortable, state->m_helper->pix16(y, x));
+ UINT16 a = colortable_entry_get_value(colortable, state->m_helper.pix16(y, x));
if (a == 0)
data |= 0x40;
@@ -121,7 +121,7 @@ INLINE int get_sprite_y(UINT8 *video_ram, int n)
}
-SCREEN_UPDATE( sprint2 )
+SCREEN_UPDATE_IND16( sprint2 )
{
sprint2_state *state = screen.machine().driver_data<sprint2_state>();
UINT8 *video_ram = state->m_video_ram;
@@ -180,9 +180,9 @@ SCREEN_EOF( sprint2 )
/* check for sprite-tilemap collisions */
- tilemap_draw(*state->m_helper, rect, state->m_bg_tilemap, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1],
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
get_sprite_code(video_ram, i),
0,
0, 0,
@@ -196,7 +196,7 @@ SCREEN_EOF( sprint2 )
for (j = 0; j < 4; j++)
if (j != i)
{
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1],
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
get_sprite_code(video_ram, j),
1,
0, 0,
@@ -204,7 +204,7 @@ SCREEN_EOF( sprint2 )
get_sprite_y(video_ram, j), 0);
}
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1],
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
get_sprite_code(video_ram, i),
0,
0, 0,
diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c
index 27d5df1b393..60b04295fca 100644
--- a/src/mame/video/sprint4.c
+++ b/src/mame/video/sprint4.c
@@ -51,13 +51,13 @@ static TILE_GET_INFO( sprint4_tile_info )
VIDEO_START( sprint4 )
{
sprint4_state *state = machine.driver_data<sprint4_state>();
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_playfield = tilemap_create(machine, sprint4_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-SCREEN_UPDATE( sprint4 )
+SCREEN_UPDATE_IND16( sprint4 )
{
sprint4_state *state = screen.machine().driver_data<sprint4_state>();
UINT8 *videoram = state->m_videoram;
@@ -118,12 +118,12 @@ SCREEN_EOF( sprint4 )
rect &= screen.machine().primary_screen->visible_area();
- tilemap_draw(*state->m_helper, rect, state->m_playfield, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
if (i & 1)
bank = 32;
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1],
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
(code >> 3) | bank,
4,
0, 0,
@@ -132,7 +132,7 @@ SCREEN_EOF( sprint4 )
for (y = rect.min_y; y <= rect.max_y; y++)
for (x = rect.min_x; x <= rect.max_x; x++)
- if (colortable_entry_get_value(screen.machine().colortable, state->m_helper->pix16(y, x)) != 0)
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != 0)
state->m_collision[i] = 1;
}
diff --git a/src/mame/video/sprint8.c b/src/mame/video/sprint8.c
index 22f4555f0b3..efa219d2c1d 100644
--- a/src/mame/video/sprint8.c
+++ b/src/mame/video/sprint8.c
@@ -117,8 +117,8 @@ WRITE8_HANDLER( sprint8_video_ram_w )
VIDEO_START( sprint8 )
{
sprint8_state *state = machine.driver_data<sprint8_state>();
- state->m_helper1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_tilemap1 = tilemap_create(machine, get_tile_info1, tilemap_scan_rows, 16, 8, 32, 32);
state->m_tilemap2 = tilemap_create(machine, get_tile_info2, tilemap_scan_rows, 16, 8, 32, 32);
@@ -128,7 +128,7 @@ VIDEO_START( sprint8 )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sprint8_state *state = machine.driver_data<sprint8_state>();
int i;
@@ -158,7 +158,7 @@ static TIMER_CALLBACK( sprint8_collision_callback )
}
-SCREEN_UPDATE( sprint8 )
+SCREEN_UPDATE_IND16( sprint8 )
{
sprint8_state *state = screen.machine().driver_data<sprint8_state>();
set_pens(state, screen.machine().colortable);
@@ -175,16 +175,16 @@ SCREEN_EOF( sprint8 )
int y;
const rectangle &visarea = screen.machine().primary_screen->visible_area();
- tilemap_draw(*state->m_helper2, visarea, state->m_tilemap2, 0, 0);
+ tilemap_draw(state->m_helper2, visarea, state->m_tilemap2, 0, 0);
- state->m_helper1->fill(0x20, visarea);
+ state->m_helper1.fill(0x20, visarea);
- draw_sprites(screen.machine(), *state->m_helper1, visarea);
+ draw_sprites(screen.machine(), state->m_helper1, visarea);
for (y = visarea.min_y; y <= visarea.max_y; y++)
{
- const UINT16* p1 = &state->m_helper1->pix16(y);
- const UINT16* p2 = &state->m_helper2->pix16(y);
+ const UINT16* p1 = &state->m_helper1.pix16(y);
+ const UINT16* p2 = &state->m_helper2.pix16(y);
for (x = visarea.min_x; x <= visarea.max_x; x++)
if (p1[x] != 0x20 && p2[x] == 0x23)
diff --git a/src/mame/video/spy.c b/src/mame/video/spy.c
index c8de687cdd1..a73934694a9 100644
--- a/src/mame/video/spy.c
+++ b/src/mame/video/spy.c
@@ -62,7 +62,7 @@ VIDEO_START( spy )
***************************************************************************/
-SCREEN_UPDATE( spy )
+SCREEN_UPDATE_IND16( spy )
{
spy_state *state = screen.machine().driver_data<spy_state>();
diff --git a/src/mame/video/srmp2.c b/src/mame/video/srmp2.c
index 25ee5326b7f..9ca918379f1 100644
--- a/src/mame/video/srmp2.c
+++ b/src/mame/video/srmp2.c
@@ -50,7 +50,7 @@ int srmp3_gfxbank_callback( running_machine &machine, UINT16 code, UINT8 color )
}
-SCREEN_UPDATE( srmp2 )
+SCREEN_UPDATE_IND16( srmp2 )
{
srmp2_state *state = screen.machine().driver_data<srmp2_state>();
bitmap.fill(0x1ff, cliprect);
@@ -68,7 +68,7 @@ SCREEN_UPDATE( srmp2 )
return 0;
}
-SCREEN_UPDATE( srmp3 )
+SCREEN_UPDATE_IND16( srmp3 )
{
//srmp2_state *state = screen.machine().driver_data<srmp2_state>();
bitmap.fill(0x1f0, cliprect);
@@ -84,7 +84,7 @@ SCREEN_UPDATE( srmp3 )
return 0;
}
-SCREEN_UPDATE( mjyuugi )
+SCREEN_UPDATE_IND16( mjyuugi )
{
//srmp2_state *state = screen.machine().driver_data<srmp2_state>();
bitmap.fill(0x1f0, cliprect);
diff --git a/src/mame/video/srumbler.c b/src/mame/video/srumbler.c
index 547a9be1a8a..e960feddc49 100644
--- a/src/mame/video/srumbler.c
+++ b/src/mame/video/srumbler.c
@@ -113,7 +113,7 @@ WRITE8_HANDLER( srumbler_scroll_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8;
int offs;
@@ -160,7 +160,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( srumbler )
+SCREEN_UPDATE_IND16( srumbler )
{
srumbler_state *state = screen.machine().driver_data<srumbler_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,TILEMAP_DRAW_LAYER1,0);
diff --git a/src/mame/video/sshangha.c b/src/mame/video/sshangha.c
index 0a5c251da4e..ba8c256f2be 100644
--- a/src/mame/video/sshangha.c
+++ b/src/mame/video/sshangha.c
@@ -23,21 +23,21 @@ WRITE16_HANDLER (sshangha_video_w)
VIDEO_START( sshangha )
{
- machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap(machine);
- machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap(machine);
+ machine.device<decospr_device>("spritegen1")->alloc_sprite_bitmap();
+ machine.device<decospr_device>("spritegen2")->alloc_sprite_bitmap();
}
/******************************************************************************/
-SCREEN_UPDATE( sshangha )
+SCREEN_UPDATE_RGB32( sshangha )
{
sshangha_state *state = screen.machine().driver_data<sshangha_state>();
- screen.machine().device<decospr_device>("spritegen1")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.spriteram.u16, 0x800, true);
+ screen.machine().device<decospr_device>("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.spriteram.u16, 0x800, true);
// I'm pretty sure only the original has the 2nd spriteram, used for the Japanese text on the 2nd scene (non-scrolling text) in the intro of the quest (3rd in JPN) mode
if (screen.machine().generic.spriteram2.u16)
- screen.machine().device<decospr_device>("spritegen2")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.spriteram2.u16, 0x800, true);
+ screen.machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.spriteram2.u16, 0x800, true);
tilemap_set_flip_all(screen.machine(),flip_screen_x_get(screen.machine()) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
@@ -48,18 +48,18 @@ SCREEN_UPDATE( sshangha )
/* the tilemap 4bpp + 4bpp = 8bpp mixing actually seems external to the tilemap, note video_control is not part of the tilemap chip */
if ((state->m_video_control&4)==0) {
deco16ic_tilemap_12_combine_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0, 1);
- screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0200, 0x0200, 0x100, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0200, 0x0200, 0x100, 0x1ff);
}
else {
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0200, 0x0200, 0x100, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0200, 0x0200, 0x100, 0x1ff);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
}
if (screen.machine().generic.spriteram2.u16)
- screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0000, 0, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen2")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0000, 0, 0x1ff);
- screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(screen.machine(), bitmap, cliprect, 0x0000, 0x0200, 0, 0x1ff);
+ screen.machine().device<decospr_device>("spritegen1")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0200, 0, 0x1ff);
return 0;
}
diff --git a/src/mame/video/sslam.c b/src/mame/video/sslam.c
index 20b05ecbe6e..92f2e2b7336 100644
--- a/src/mame/video/sslam.c
+++ b/src/mame/video/sslam.c
@@ -22,7 +22,7 @@ WRITE16_HANDLER( sslam_paletteram_w )
palette_set_color_rgb(space->machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sslam_state *state = machine.driver_data<sslam_state>();
const gfx_element *gfx = machine.gfx[0];
@@ -191,7 +191,7 @@ VIDEO_START(powerbls)
state->save_item(NAME(state->m_sprites_x_offset));
}
-SCREEN_UPDATE(sslam)
+SCREEN_UPDATE_IND16(sslam)
{
sslam_state *state = screen.machine().driver_data<sslam_state>();
@@ -231,7 +231,7 @@ SCREEN_UPDATE(sslam)
return 0;
}
-SCREEN_UPDATE(powerbls)
+SCREEN_UPDATE_IND16(powerbls)
{
sslam_state *state = screen.machine().driver_data<sslam_state>();
diff --git a/src/mame/video/ssozumo.c b/src/mame/video/ssozumo.c
index 5975b864152..8870ddcf064 100644
--- a/src/mame/video/ssozumo.c
+++ b/src/mame/video/ssozumo.c
@@ -150,7 +150,7 @@ VIDEO_START( ssozumo )
tilemap_set_transparent_pen(state->m_fg_tilemap, 0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
ssozumo_state *state = machine.driver_data<ssozumo_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -184,7 +184,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( ssozumo )
+SCREEN_UPDATE_IND16( ssozumo )
{
ssozumo_state *state = screen.machine().driver_data<ssozumo_state>();
diff --git a/src/mame/video/sspeedr.c b/src/mame/video/sspeedr.c
index 43b241fe390..ec051d52a3e 100644
--- a/src/mame/video/sspeedr.c
+++ b/src/mame/video/sspeedr.c
@@ -92,7 +92,7 @@ WRITE8_HANDLER( sspeedr_track_ice_w )
}
-static void draw_track(running_machine &machine, bitmap_t &bitmap)
+static void draw_track(running_machine &machine, bitmap_ind16 &bitmap)
{
sspeedr_state *state = machine.driver_data<sspeedr_state>();
const UINT8* p = machine.region("gfx3")->base();
@@ -181,7 +181,7 @@ static void draw_track(running_machine &machine, bitmap_t &bitmap)
}
-static void draw_drones(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_drones(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sspeedr_state *state = machine.driver_data<sspeedr_state>();
static const UINT8 code[6] =
@@ -221,7 +221,7 @@ static void draw_drones(running_machine &machine, bitmap_t &bitmap, const rectan
}
-static void draw_driver(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_driver(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
sspeedr_state *state = machine.driver_data<sspeedr_state>();
int x;
@@ -258,7 +258,7 @@ VIDEO_START( sspeedr )
}
-SCREEN_UPDATE( sspeedr )
+SCREEN_UPDATE_IND16( sspeedr )
{
draw_track(screen.machine(), bitmap);
draw_drones(screen.machine(), bitmap, cliprect);
diff --git a/src/mame/video/ssrj.c b/src/mame/video/ssrj.c
index 509eb103372..f09352ef488 100644
--- a/src/mame/video/ssrj.c
+++ b/src/mame/video/ssrj.c
@@ -236,7 +236,7 @@ VIDEO_START( ssrj )
}
-static void draw_objects(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_objects(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
ssrj_state *state = machine.driver_data<ssrj_state>();
int i,j,k,x,y;
@@ -280,7 +280,7 @@ PALETTE_INIT( ssrj )
palette_set_color_rgb(machine, i*8+j, fakecols[i][j][0], fakecols[i][j][1], fakecols[i][j][2]);
}
-SCREEN_UPDATE( ssrj )
+SCREEN_UPDATE_IND16( ssrj )
{
ssrj_state *state = screen.machine().driver_data<ssrj_state>();
diff --git a/src/mame/video/ssv.c b/src/mame/video/ssv.c
index 2fc13c795d4..925ae3ed3d5 100644
--- a/src/mame/video/ssv.c
+++ b/src/mame/video/ssv.c
@@ -141,7 +141,7 @@ Note: press Z to show some info on each sprite (debug builds only)
#endif
-static void ssv_drawgfx( bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx,
+static void ssv_drawgfx( bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,
int shadow )
{
@@ -606,7 +606,7 @@ From the above some noteworthy cases are:
/* Draw a tilemap sprite */
-static void draw_row(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int sx, int sy, int scroll)
+static void draw_row(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int sy, int scroll)
{
ssv_state *state = machine.driver_data<ssv_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -741,7 +741,7 @@ static void draw_row(running_machine &machine, bitmap_t &bitmap, const rectangle
/* Draw the "background layer" using multiple tilemap sprites */
-static void draw_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int nr)
+static void draw_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int nr)
{
int sy;
for ( sy = 0; sy <= machine.primary_screen->visible_area().max_y; sy += 0x40 )
@@ -750,7 +750,7 @@ static void draw_layer(running_machine &machine, bitmap_t &bitmap, const rectang
/* Draw sprites in the sprites list */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* Sprites list */
ssv_state *state = machine.driver_data<ssv_state>();
@@ -984,9 +984,9 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( eaglshot )
+SCREEN_UPDATE_IND16( eaglshot )
{
- return SCREEN_UPDATE_CALL(ssv);
+ return SCREEN_UPDATE16_CALL(ssv);
}
/*
@@ -1042,7 +1042,7 @@ SCREEN_UPDATE( eaglshot )
E.h Unused
*/
-static void gdfs_draw_zooming_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void gdfs_draw_zooming_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
/* Sprites list */
@@ -1165,12 +1165,12 @@ static void gdfs_draw_zooming_sprites(running_machine &machine, bitmap_t &bitmap
} /* sprites list */
}
-SCREEN_UPDATE( gdfs )
+SCREEN_UPDATE_IND16( gdfs )
{
ssv_state *state = screen.machine().driver_data<ssv_state>();
int pri;
- SCREEN_UPDATE_CALL(ssv);
+ SCREEN_UPDATE16_CALL(ssv);
for (pri = 0; pri <= 0xf; pri++)
gdfs_draw_zooming_sprites(screen.machine(), bitmap, cliprect, pri);
@@ -1189,7 +1189,7 @@ void ssv_enable_video(running_machine &machine, int enable)
state->m_enable_video = enable;
}
-SCREEN_UPDATE( ssv )
+SCREEN_UPDATE_IND16( ssv )
{
rectangle clip;
diff --git a/src/mame/video/st0016.c b/src/mame/video/st0016.c
index c6dcb6f705e..4d9650c247e 100644
--- a/src/mame/video/st0016.c
+++ b/src/mame/video/st0016.c
@@ -212,7 +212,7 @@ WRITE8_HANDLER(st0016_vregs_w)
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/*
object ram :
@@ -488,7 +488,7 @@ VIDEO_START( st0016 )
}
-static void draw_bgmap(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, int priority)
+static void draw_bgmap(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect, int priority)
{
gfx_element *gfx = machine.gfx[st0016_ramgfx];
int j;
@@ -584,14 +584,14 @@ static void draw_bgmap(running_machine &machine, bitmap_t &bitmap,const rectangl
}
-void st0016_draw_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+void st0016_draw_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
draw_bgmap(screen.machine(), bitmap,cliprect,0);
draw_sprites(screen.machine(), bitmap,cliprect);
draw_bgmap(screen.machine(), bitmap,cliprect,1);
}
-SCREEN_UPDATE( st0016 )
+SCREEN_UPDATE_IND16( st0016 )
{
#ifdef MAME_DEBUG
diff --git a/src/mame/video/stactics.c b/src/mame/video/stactics.c
index ad0f134bb29..fba25af01fa 100644
--- a/src/mame/video/stactics.c
+++ b/src/mame/video/stactics.c
@@ -236,7 +236,7 @@ INLINE int get_pixel_on_plane(UINT8 *videoram, UINT8 y, UINT8 x, UINT8 y_scroll)
}
-static void draw_background(stactics_state *state, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(stactics_state *state, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int y;
@@ -388,7 +388,7 @@ static VIDEO_START( stactics )
*
*************************************/
-static SCREEN_UPDATE( stactics )
+static SCREEN_UPDATE_IND16( stactics )
{
stactics_state *state = screen.machine().driver_data<stactics_state>();
@@ -416,10 +416,9 @@ MACHINE_CONFIG_FRAGMENT( stactics_video )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE(stactics)
+ MCFG_SCREEN_UPDATE_STATIC(stactics)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/video/stadhero.c b/src/mame/video/stadhero.c
index 8dd7cb39b6b..0bcd0cd7c1b 100644
--- a/src/mame/video/stadhero.c
+++ b/src/mame/video/stadhero.c
@@ -19,7 +19,7 @@
/******************************************************************************/
-SCREEN_UPDATE( stadhero )
+SCREEN_UPDATE_IND16( stadhero )
{
stadhero_state *state = screen.machine().driver_data<stadhero_state>();
// tilemap_set_flip_all(screen.machine(),state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
diff --git a/src/mame/video/starcrus.c b/src/mame/video/starcrus.c
index 3732b048a51..7bb0d9eb8f7 100644
--- a/src/mame/video/starcrus.c
+++ b/src/mame/video/starcrus.c
@@ -20,11 +20,11 @@ WRITE8_HANDLER( starcrus_p2_y_w ) { space->machine().driver_data<starcrus_state>
VIDEO_START( starcrus )
{
starcrus_state *state = machine.driver_data<starcrus_state>();
- state->m_ship1_vid = auto_bitmap_alloc(machine, 16, 16, machine.primary_screen->format());
- state->m_ship2_vid = auto_bitmap_alloc(machine, 16, 16, machine.primary_screen->format());
+ state->m_ship1_vid = auto_bitmap_ind16_alloc(machine, 16, 16);
+ state->m_ship2_vid = auto_bitmap_ind16_alloc(machine, 16, 16);
- state->m_proj1_vid = auto_bitmap_alloc(machine, 16, 16, machine.primary_screen->format());
- state->m_proj2_vid = auto_bitmap_alloc(machine, 16, 16, machine.primary_screen->format());
+ state->m_proj1_vid = auto_bitmap_ind16_alloc(machine, 16, 16);
+ state->m_proj2_vid = auto_bitmap_ind16_alloc(machine, 16, 16);
}
WRITE8_HANDLER( starcrus_ship_parm_1_w )
@@ -425,7 +425,7 @@ static int collision_check_s2p1p2(running_machine &machine)
return 0;
}
-SCREEN_UPDATE( starcrus )
+SCREEN_UPDATE_IND16( starcrus )
{
starcrus_state *state = screen.machine().driver_data<starcrus_state>();
diff --git a/src/mame/video/starfire.c b/src/mame/video/starfire.c
index a67a78eee4a..248cc96dd15 100644
--- a/src/mame/video/starfire.c
+++ b/src/mame/video/starfire.c
@@ -19,7 +19,7 @@ VIDEO_START( starfire )
{
starfire_state *state = machine.driver_data<starfire_state>();
- state->m_starfire_screen = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_starfire_screen.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_scanline_timer = machine.scheduler().timer_alloc(FUNC(starfire_scanline_callback));
state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(STARFIRE_VBEND), STARFIRE_VBEND);
@@ -250,14 +250,14 @@ static TIMER_CALLBACK( starfire_scanline_callback )
int data = pix[0];
int color = col[0];
- state->m_starfire_screen->pix32(y, x + 0) = pens[color | ((data >> 2) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 1) = pens[color | ((data >> 1) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 2) = pens[color | ((data >> 0) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 3) = pens[color | ((data << 1) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 4) = pens[color | ((data << 2) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 5) = pens[color | ((data << 3) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 6) = pens[color | ((data << 4) & 0x20)];
- state->m_starfire_screen->pix32(y, x + 7) = pens[color | ((data << 5) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 0) = pens[color | ((data >> 2) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 1) = pens[color | ((data >> 1) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 2) = pens[color | ((data >> 0) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 3) = pens[color | ((data << 1) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 4) = pens[color | ((data << 2) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 5) = pens[color | ((data << 3) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 6) = pens[color | ((data << 4) & 0x20)];
+ state->m_starfire_screen.pix32(y, x + 7) = pens[color | ((data << 5) & 0x20)];
pix += 256;
col += 256;
@@ -268,10 +268,10 @@ static TIMER_CALLBACK( starfire_scanline_callback )
state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(y), y);
}
-SCREEN_UPDATE( starfire )
+SCREEN_UPDATE_RGB32( starfire )
{
starfire_state *state = screen.machine().driver_data<starfire_state>();
- copybitmap(bitmap, *state->m_starfire_screen, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, state->m_starfire_screen, 0, 0, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/starshp1.c b/src/mame/video/starshp1.c
index d6f6f11f8a6..882138f42dc 100644
--- a/src/mame/video/starshp1.c
+++ b/src/mame/video/starshp1.c
@@ -81,7 +81,7 @@ VIDEO_START( starshp1 )
val = (val << 1) | (bit & 1);
}
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
@@ -147,7 +147,7 @@ WRITE8_HANDLER( starshp1_playfield_w )
}
-static void draw_starfield(starshp1_state *state, bitmap_t &bitmap)
+static void draw_starfield(starshp1_state *state, bitmap_ind16 &bitmap)
{
/*
* The LSFR is reset once per frame at the position of
@@ -181,7 +181,7 @@ static int get_sprite_vpos(starshp1_state *state, int i)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
starshp1_state *state = machine.driver_data<starshp1_state>();
int i;
@@ -200,7 +200,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_spaceship(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_spaceship(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
starshp1_state *state = machine.driver_data<starshp1_state>();
double scaler = -5 * log(1 - state->m_ship_size / 256.0); /* ? */
@@ -226,7 +226,7 @@ static void draw_spaceship(running_machine &machine, bitmap_t &bitmap, const rec
}
-static void draw_phasor(starshp1_state *state, bitmap_t &bitmap)
+static void draw_phasor(starshp1_state *state, bitmap_ind16 &bitmap)
{
int i;
@@ -255,7 +255,7 @@ static int get_circle_vpos(starshp1_state *state)
}
-static void draw_circle_line(running_machine &machine, bitmap_t &bitmap, int x, int y, int l)
+static void draw_circle_line(running_machine &machine, bitmap_ind16 &bitmap, int x, int y, int l)
{
starshp1_state *state = machine.driver_data<starshp1_state>();
if (y >= 0 && y <= bitmap.height() - 1)
@@ -284,7 +284,7 @@ static void draw_circle_line(running_machine &machine, bitmap_t &bitmap, int x,
}
-static void draw_circle(running_machine &machine, bitmap_t &bitmap)
+static void draw_circle(running_machine &machine, bitmap_ind16 &bitmap)
{
starshp1_state *state = machine.driver_data<starshp1_state>();
int cx = get_circle_hpos(state);
@@ -314,7 +314,7 @@ static void draw_circle(running_machine &machine, bitmap_t &bitmap)
}
-static int spaceship_collision(running_machine &machine, bitmap_t &bitmap, const rectangle &rect)
+static int spaceship_collision(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &rect)
{
starshp1_state *state = machine.driver_data<starshp1_state>();
int x;
@@ -322,7 +322,7 @@ static int spaceship_collision(running_machine &machine, bitmap_t &bitmap, const
for (y = rect.min_y; y <= rect.max_y; y++)
{
- const UINT16* pLine = &state->m_helper->pix16(y);
+ const UINT16* pLine = &state->m_helper.pix16(y);
for (x = rect.min_x; x <= rect.max_x; x++)
if (pLine[x] != 0)
@@ -356,7 +356,7 @@ static int circle_collision(starshp1_state *state, const rectangle &rect)
}
-SCREEN_UPDATE( starshp1 )
+SCREEN_UPDATE_IND16( starshp1 )
{
starshp1_state *state = screen.machine().driver_data<starshp1_state>();
set_pens(state, screen.machine().colortable);
@@ -396,20 +396,13 @@ SCREEN_EOF( starshp1 )
rect.min_y = get_sprite_vpos(state, 13);
rect.max_x = rect.min_x + screen.machine().gfx[1]->width - 1;
rect.max_y = rect.min_y + screen.machine().gfx[1]->height - 1;
+
+ rect &= state->m_helper.cliprect();
- if (rect.min_x < 0)
- rect.min_x = 0;
- if (rect.min_y < 0)
- rect.min_y = 0;
- if (rect.max_x > state->m_helper->width() - 1)
- rect.max_x = state->m_helper->width() - 1;
- if (rect.max_y > state->m_helper->height() - 1)
- rect.max_y = state->m_helper->height() - 1;
-
- state->m_helper->fill(0, visarea);
+ state->m_helper.fill(0, visarea);
if (state->m_attract == 0)
- draw_spaceship(screen.machine(), *state->m_helper, visarea);
+ draw_spaceship(screen.machine(), state->m_helper, visarea);
if (circle_collision(state, visarea))
state->m_collision_latch |= 1;
@@ -417,9 +410,9 @@ SCREEN_EOF( starshp1 )
if (circle_collision(state, rect))
state->m_collision_latch |= 2;
- if (spaceship_collision(screen.machine(), *state->m_helper, rect))
+ if (spaceship_collision(screen.machine(), state->m_helper, rect))
state->m_collision_latch |= 4;
- if (spaceship_collision(screen.machine(), *state->m_helper, visarea))
+ if (spaceship_collision(screen.machine(), state->m_helper, visarea))
state->m_collision_latch |= 8;
}
diff --git a/src/mame/video/stfight.c b/src/mame/video/stfight.c
index eaa33f8e2bf..b8df16a8276 100644
--- a/src/mame/video/stfight.c
+++ b/src/mame/video/stfight.c
@@ -244,7 +244,7 @@ WRITE8_HANDLER( stfight_vh_latch_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
stfight_state *state = machine.driver_data<stfight_state>();
int offs,sx,sy;
@@ -292,7 +292,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( stfight )
+SCREEN_UPDATE_IND16( stfight )
{
stfight_state *state = screen.machine().driver_data<stfight_state>();
set_pens(screen.machine());
diff --git a/src/mame/video/stlforce.c b/src/mame/video/stlforce.c
index 23895a44a99..34021e4fb5b 100644
--- a/src/mame/video/stlforce.c
+++ b/src/mame/video/stlforce.c
@@ -99,7 +99,7 @@ WRITE16_HANDLER( stlforce_tx_videoram_w )
/* sprites - quite a bit still needs doing .. */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
stlforce_state *state = machine.driver_data<stlforce_state>();
const UINT16 *source = state->m_spriteram+0x0;
@@ -131,7 +131,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( stlforce )
+SCREEN_UPDATE_IND16( stlforce )
{
stlforce_state *state = screen.machine().driver_data<stlforce_state>();
int i;
diff --git a/src/mame/video/strnskil.c b/src/mame/video/strnskil.c
index 705f89449ef..07250b81b69 100644
--- a/src/mame/video/strnskil.c
+++ b/src/mame/video/strnskil.c
@@ -81,7 +81,7 @@ VIDEO_START( strnskil )
tilemap_set_scroll_rows(state->m_bg_tilemap, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
strnskil_state *state = machine.driver_data<strnskil_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -123,7 +123,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( strnskil )
+SCREEN_UPDATE_IND16( strnskil )
{
strnskil_state *state = screen.machine().driver_data<strnskil_state>();
int row;
diff --git a/src/mame/video/stvvdp2.c b/src/mame/video/stvvdp2.c
index 283f2413352..bfcabeaae3e 100644
--- a/src/mame/video/stvvdp2.c
+++ b/src/mame/video/stvvdp2.c
@@ -104,6 +104,7 @@ In other words,the first three types uses the offset and not the color allocated
#include "emu.h"
#include "profiler.h"
#include "includes/stv.h"
+#include "drawgfxm.h"
static UINT8 get_vblank(running_machine &machine);
static UINT8 get_hblank(running_machine &machine);
@@ -116,7 +117,7 @@ static void refresh_palette_data(running_machine &machine);
static int stv_vdp2_window_process(running_machine &machine,int x,int y);
static int stv_vdp2_apply_window_on_layer(running_machine &machine,rectangle &cliprect);
static void stv_vdp2_get_window0_coordinates(running_machine &machine,UINT16 *s_x, UINT16 *e_x, UINT16 *s_y, UINT16 *e_y);
-static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect);
+static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect);
enum
{
@@ -2433,21 +2434,18 @@ static UINT8 stv_vdp2_check_vram_cycle_pattern_registers(
return access_command_ok == 3 ? 1 : 0;
}
-INLINE UINT16 stv_add_blend(UINT16 a, UINT16 b)
+INLINE UINT32 stv_add_blend(UINT32 a, UINT32 b)
{
- UINT16 _r = ((a & 0x7c00) >> 10) + ((b & 0x7c00) >> 10);
- UINT16 _g = ((a & 0x03e0) >> 5) + ((b & 0x03e0) >> 5);
- UINT16 _b = ((a & 0x001f) >> 0) + ((b & 0x001f) >> 0);
-
- if ( _r > 0x1f ) _r = 0x1f;
- if ( _g > 0x1f ) _g = 0x1f;
- if ( _b > 0x1f ) _b = 0x1f;
-
- return (_r<<10) | (_g<<5) | (_b<<0);
+ UINT32 rb = (a & 0xff00ff) + (b & 0xff00ff);
+ UINT32 g = (a & 0x00ff00) + (b & 0x00ff00);
+ if (rb & 0x1000000) rb |= 0xff0000;
+ if (g & 0x10000) g = 0xff00;
+ if (rb & 0x100) rb |= 0xff;
+ return (rb & 0xff00ff) | g;
}
static void stv_vdp2_drawgfxzoom(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int transparency,int transparent_color,int scalex, int scaley,
int sprite_screen_width, int sprite_screen_height, int alpha)
@@ -2560,7 +2558,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2577,7 +2575,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2599,7 +2597,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2617,7 +2615,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2638,13 +2636,13 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
{
int c = source[x_index>>16];
- if( c != transparent_color ) dest[x] = alpha_blend_r16(dest[x], pal[c], alpha);
+ if( c != transparent_color ) dest[x] = alpha_blend_r32(dest[x], pal[c], alpha);
x_index += dx;
}
@@ -2660,7 +2658,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2678,7 +2676,7 @@ static void stv_vdp2_drawgfxzoom(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = source_base + (y_index>>16) * gfx->line_modulo;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -2699,12 +2697,9 @@ static void stv_vdp2_drawgfxzoom(
}
-static void stv_vdp2_compute_color_offset_RGB555( running_machine &machine,int *r, int *g, int *b, int cor )
+static void stv_vdp2_compute_color_offset( running_machine &machine,int *r, int *g, int *b, int cor )
{
saturn_state *state = machine.driver_data<saturn_state>();
- *r <<= 3;
- *g <<= 3;
- *b <<= 3;
if ( cor == 0 )
{
*r = (STV_VDP2_COAR & 0x100) ? (*r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + *r);
@@ -2723,18 +2718,14 @@ static void stv_vdp2_compute_color_offset_RGB555( running_machine &machine,int *
if(*g > 0xff) { *g = 0xff; }
if(*b < 0) { *b = 0; }
if(*b > 0xff) { *b = 0xff; }
- *r >>= 3;
- *g >>= 3;
- *b >>= 3;
-
}
-static void stv_vdp2_compute_color_offset_RGB555_UINT16(running_machine &machine,UINT16 *rgb, int cor)
+static void stv_vdp2_compute_color_offset_UINT32(running_machine &machine,UINT32 *rgb, int cor)
{
saturn_state *state = machine.driver_data<saturn_state>();
- int _r = (*rgb & 0x7c00) >> (10-3);
- int _g = (*rgb & 0x03e0) >> (5-3);
- int _b = (*rgb & 0x001f) << 3;
+ int _r = RGB_RED(*rgb);
+ int _g = RGB_GREEN(*rgb);
+ int _b = RGB_BLUE(*rgb);
if ( cor == 0 )
{
_r = (STV_VDP2_COAR & 0x100) ? (_r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + _r);
@@ -2753,14 +2744,11 @@ static void stv_vdp2_compute_color_offset_RGB555_UINT16(running_machine &machine
if(_g > 0xff) { _g = 0xff; }
if(_b < 0) { _b = 0; }
if(_b > 0xff) { _b = 0xff; }
- _r >>= 3;
- _g >>= 3;
- _b >>= 3;
- *rgb = (_r << 10) | (_g << 5) | _b;
+ *rgb = MAKE_RGB(_r, _g, _b);
}
-static void stv_vdp2_drawgfx_rgb555( bitmap_t &dest_bmp, const rectangle &clip, running_machine &machine, UINT32 code, int flipx, int flipy,
+static void stv_vdp2_drawgfx_rgb555( bitmap_rgb32 &dest_bmp, const rectangle &clip, running_machine &machine, UINT32 code, int flipx, int flipy,
int sx, int sy, int transparency, int alpha)
{
saturn_state *state = machine.driver_data<saturn_state>();
@@ -2837,7 +2825,7 @@ static void stv_vdp2_drawgfx_rgb555( bitmap_t &dest_bmp, const rectangle &clip,
for( y=sy; y<ey; y++ )
{
const UINT8 *source = gfxdata + (y_index>>16)*16;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
UINT16 data;
int x, x_index = x_index_base;
@@ -2849,16 +2837,16 @@ static void stv_vdp2_drawgfx_rgb555( bitmap_t &dest_bmp, const rectangle &clip,
t_pen = (data & 0x8000) || ( transparency == STV_TRANSPARENCY_NONE );
if (t_pen)
{
- b = (data & 0x7c00) >> 10;
- g = (data & 0x03e0) >> 5;
- r = (data & 0x001f);
+ b = (data & 0x7c00) >> 7;
+ g = (data & 0x03e0) >> 2;
+ r = (data & 0x001f) << 3;
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
if ( transparency == STV_TRANSPARENCY_ALPHA )
- dest[x] = alpha_blend_r16( dest[x], b | g << 5 | r << 10, alpha );
+ dest[x] = alpha_blend_r32( dest[x], MAKE_RGB(r, g, b), alpha );
else
- dest[x] = b | g << 5 | r << 10;
+ dest[x] = MAKE_RGB(r, g, b);
}
x_index += dx;
}
@@ -2873,7 +2861,7 @@ static void stv_vdp2_drawgfx_rgb555( bitmap_t &dest_bmp, const rectangle &clip,
}
-static void stv_vdp2_drawgfx_rgb888( bitmap_t &dest_bmp, const rectangle &clip, running_machine &machine, UINT32 code, int flipx, int flipy,
+static void stv_vdp2_drawgfx_rgb888( bitmap_rgb32 &dest_bmp, const rectangle &clip, running_machine &machine, UINT32 code, int flipx, int flipy,
int sx, int sy, int transparency, int alpha)
{
saturn_state *state = machine.driver_data<saturn_state>();
@@ -2949,7 +2937,7 @@ static void stv_vdp2_drawgfx_rgb888( bitmap_t &dest_bmp, const rectangle &clip,
for( y=sy; y<ey; y++ )
{
const UINT8 *source = gfxdata + (y_index>>16)*32;
- UINT16 *dest = &dest_bmp.pix16(y);
+ UINT32 *dest = &dest_bmp.pix32(y);
UINT32 data;
int x, x_index = x_index_base;
@@ -2965,18 +2953,14 @@ static void stv_vdp2_drawgfx_rgb888( bitmap_t &dest_bmp, const rectangle &clip,
b = (data & 0xff0000) >> 16;
g = (data & 0x00ff00) >> 8;
r = (data & 0x0000ff);
- /* HACK: downscale because we don't yet do true color */
- b >>= 3;
- g >>= 3;
- r >>= 3;
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
if ( transparency == STV_TRANSPARENCY_ALPHA )
- dest[x] = alpha_blend_r16( dest[x], b | g << 5 | r << 10, alpha );
+ dest[x] = alpha_blend_r32( dest[x], MAKE_RGB(r, g, b), alpha );
else
- dest[x] = b | g << 5 | r << 10;
+ dest[x] = MAKE_RGB(r, g, b);
}
x_index += dx;
}
@@ -2990,7 +2974,7 @@ static void stv_vdp2_drawgfx_rgb888( bitmap_t &dest_bmp, const rectangle &clip,
}
-static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
@@ -3003,7 +2987,7 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
int xlinesize = 0/*, xpixelsize = 0*/;
int xcnt,ycnt;
UINT8* gfxdata = state->m_vdp2.gfx_decode;
- static UINT16 *destline;
+ static UINT32 *destline;
UINT16 pal_color_offset = 0;
UINT8* gfxdatalow, *gfxdatahigh;
/*Window effect 1=no draw*/
@@ -3081,9 +3065,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 1) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix16(ycnt, xcnt+1) = machine.pens[((gfxdata[0] & 0x0f) >> 0) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
+ bitmap.pix32(ycnt, xcnt+1) = machine.pens[((gfxdata[0] & 0x0f) >> 0) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
else
- bitmap.pix16(ycnt, xcnt+1) = alpha_blend_r16(bitmap.pix16(ycnt, xcnt+1), machine.pens[((gfxdata[0] & 0x0f) >> 0) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
+ bitmap.pix32(ycnt, xcnt+1) = alpha_blend_r32(bitmap.pix32(ycnt, xcnt+1), machine.pens[((gfxdata[0] & 0x0f) >> 0) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
}
}
}
@@ -3097,9 +3081,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix16(ycnt, xcnt) = machine.pens[((gfxdata[0] & 0xf0) >> 4) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
+ bitmap.pix32(ycnt, xcnt) = machine.pens[((gfxdata[0] & 0xf0) >> 4) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
else
- bitmap.pix16(ycnt, xcnt) = alpha_blend_r16(bitmap.pix16(ycnt, xcnt), machine.pens[((gfxdata[0] & 0xf0) >> 4) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
+ bitmap.pix32(ycnt, xcnt) = alpha_blend_r32(bitmap.pix32(ycnt, xcnt), machine.pens[((gfxdata[0] & 0xf0) >> 4) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
}
}
}
@@ -3132,9 +3116,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix16(ycnt, xcnt) = machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
+ bitmap.pix32(ycnt, xcnt) = machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
else
- bitmap.pix16(ycnt, xcnt) = alpha_blend_r16(bitmap.pix16(ycnt, xcnt), machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
+ bitmap.pix32(ycnt, xcnt) = alpha_blend_r32(bitmap.pix32(ycnt, xcnt), machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
}
}
}
@@ -3163,7 +3147,7 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
gfxdata += xlinesize*(yy>>16);
yy &= 0xffff;
- destline = &bitmap.pix16(ycnt);
+ destline = &bitmap.pix32(ycnt);
xx = 0;
for (xcnt = cliprect.min_x; xcnt <= cliprect.max_x; xx+=stv2_current_tilemap.incx, xcnt++)
{
@@ -3178,9 +3162,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix16(ycnt, xcnt) = machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
+ bitmap.pix32(ycnt, xcnt) = machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset];
else
- bitmap.pix16(ycnt, xcnt) = alpha_blend_r16(bitmap.pix16(ycnt, xcnt), machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
+ bitmap.pix32(ycnt, xcnt) = alpha_blend_r32(bitmap.pix32(ycnt, xcnt), machine.pens[(gfxdata[xs] & 0xff) | (stv2_current_tilemap.bitmap_palette_number * 0x100) | pal_color_offset], stv2_current_tilemap.alpha);
}
}
}
@@ -3206,9 +3190,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix16(ycnt, xcnt) = machine.pens[((gfxdata[0] & 0x07) * 0x100) | (gfxdata[1] & 0xff) | pal_color_offset];
+ bitmap.pix32(ycnt, xcnt) = machine.pens[((gfxdata[0] & 0x07) * 0x100) | (gfxdata[1] & 0xff) | pal_color_offset];
else
- bitmap.pix16(ycnt, xcnt) = alpha_blend_r16(bitmap.pix16(ycnt, xcnt), machine.pens[((gfxdata[0] & 0x07) * 0x100) | (gfxdata[1] & 0xff) | pal_color_offset], stv2_current_tilemap.alpha);
+ bitmap.pix32(ycnt, xcnt) = alpha_blend_r32(bitmap.pix32(ycnt, xcnt), machine.pens[((gfxdata[0] & 0x07) * 0x100) | (gfxdata[1] & 0xff) | pal_color_offset], stv2_current_tilemap.alpha);
}
}
}
@@ -3233,7 +3217,7 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
for (ycnt = cliprect.min_y; ycnt <= cliprect.max_y; ycnt++)
{
- destline = &bitmap.pix16(ycnt);
+ destline = &bitmap.pix32(ycnt);
for (xcnt = cliprect.min_x; xcnt <= cliprect.max_x; xcnt++)
{
@@ -3244,20 +3228,20 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if(t_pen)
{
- b = ((gfxdata[2*xs] & 0x7c) >> 2);
- g = ((gfxdata[2*xs] & 0x03) << 3) | ((gfxdata[2*xs+1] & 0xe0) >> 5);
- r = ((gfxdata[2*xs+1] & 0x1f));
+ b = ((gfxdata[2*xs] & 0x7c) << 1);
+ g = ((gfxdata[2*xs] & 0x03) << 6) | ((gfxdata[2*xs+1] & 0xe0) >> 2);
+ r = ((gfxdata[2*xs+1] & 0x1f) << 3);
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
tw = stv_vdp2_window_process(machine,xcnt,ycnt);
if(tw == 0)
{
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- destline[xcnt] = b | g << 5 | r << 10;
+ destline[xcnt] = MAKE_RGB(r, g, b);
else
- destline[xcnt] = alpha_blend_r16( destline[xcnt], b | g << 5 | r << 10, stv2_current_tilemap.alpha );
+ destline[xcnt] = alpha_blend_r32( destline[xcnt], MAKE_RGB(r, g, b), stv2_current_tilemap.alpha );
}
}
}
@@ -3279,7 +3263,7 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
gfxdata += xlinesize*(yy>>16);
yy &= 0xffff;
- destline = &bitmap.pix16(ycnt);
+ destline = &bitmap.pix32(ycnt);
xx = 0;
for (xcnt = cliprect.min_x; xcnt <= cliprect.max_x; xx+=stv2_current_tilemap.incx, xcnt++)
{
@@ -3288,11 +3272,11 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
xs = xx >> 16;
t_pen = ((gfxdata[2*xs] & 0x80) >> 7);
if(stv2_current_tilemap.transparency == STV_TRANSPARENCY_NONE) t_pen = 1;
- b = ((gfxdata[2*xs] & 0x7c) >> 2);
- g = ((gfxdata[2*xs] & 0x03) << 3) | ((gfxdata[2*xs+1] & 0xe0) >> 5);
- r = ((gfxdata[2*xs+1] & 0x1f));
+ b = ((gfxdata[2*xs] & 0x7c) << 1);
+ g = ((gfxdata[2*xs] & 0x03) << 6) | ((gfxdata[2*xs+1] & 0xe0) >> 2);
+ r = ((gfxdata[2*xs+1] & 0x1f) << 3);
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555(machine, &r,&g,&b,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset(machine, &r,&g,&b,stv2_current_tilemap.fade_control & 2);
tw = stv_vdp2_window_process(machine,xcnt,ycnt);
if(tw == 0)
{
@@ -3301,9 +3285,9 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 1 )
- destline[xcnt] = alpha_blend_r16( destline[xcnt], b | g << 5 | r << 10, stv2_current_tilemap.alpha );
+ destline[xcnt] = alpha_blend_r32( destline[xcnt], MAKE_RGB(r, g, b), stv2_current_tilemap.alpha );
else
- destline[xcnt] = b | g << 5 | r << 10;
+ destline[xcnt] = MAKE_RGB(r, g, b);
}
}
}
@@ -3329,7 +3313,7 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
for (ycnt = cliprect.min_y; ycnt <= cliprect.max_y; ycnt++)
{
- destline = &bitmap.pix16(ycnt);
+ destline = &bitmap.pix32(ycnt);
for (xcnt = cliprect.min_x; xcnt <= cliprect.max_x; xcnt++)
{
@@ -3347,21 +3331,18 @@ static void stv_vdp2_draw_basic_bitmap(running_machine &machine, bitmap_t &bitma
b = ((dot_data & 0x00ff0000) >> 16);
g = ((dot_data & 0x0000ff00) >> 8);
r = ((dot_data & 0x000000ff) >> 0);
- b >>= 3;
- g >>= 3;
- r >>= 3;
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
tw = stv_vdp2_window_process(machine,xcnt,ycnt);
if(tw == 0)
{
if (((xcnt + 0) <= screen_x) && (ycnt <= screen_y))
{
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- destline[xcnt] = b | g << 5 | r << 10;
+ destline[xcnt] = MAKE_RGB(r, g, b);
else
- destline[xcnt] = alpha_blend_r16( destline[xcnt], b | g << 5 | r << 10, stv2_current_tilemap.alpha );
+ destline[xcnt] = alpha_blend_r32( destline[xcnt], MAKE_RGB(r, g, b), stv2_current_tilemap.alpha );
}
}
}
@@ -3545,7 +3526,7 @@ static void stv_vdp2_get_map_page( int x, int y, int *_map, int *_page )
*_map = map;
}
-static void stv_vdp2_draw_basic_tilemap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_basic_tilemap(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
/* hopefully this is easier to follow than it is efficient .. */
@@ -4037,7 +4018,7 @@ static void stv_vdp2_draw_basic_tilemap(running_machine &machine, bitmap_t &bitm
}
-static void stv_vdp2_check_tilemap_with_linescroll(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_check_tilemap_with_linescroll(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
rectangle mycliprect;
@@ -4169,7 +4150,7 @@ static void stv_vdp2_check_tilemap_with_linescroll(running_machine &machine, bit
}
}
-static void stv_vdp2_draw_line(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_line(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
int x,y;
@@ -4195,20 +4176,20 @@ static void stv_vdp2_draw_line(running_machine &machine, bitmap_t &bitmap, const
UINT16 pen;
pen = (gfxdata[base_offs+0]<<8)|gfxdata[base_offs+1];
- pix = bitmap.pix16(y, x);
+ pix = bitmap.pix32(y, x);
- bitmap.pix16(y, x) = stv_add_blend(machine.pens[pen & 0x7ff],pix);
+ bitmap.pix32(y, x) = stv_add_blend(machine.pens[pen & 0x7ff],pix);
}
}
}
}
-static void stv_vdp2_draw_mosaic(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 is_roz)
+static void stv_vdp2_draw_mosaic(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 is_roz)
{
saturn_state *state = machine.driver_data<saturn_state>();
int x,y,xi,yi;
UINT8 h_size,v_size;
- UINT16 pix;
+ UINT32 pix;
h_size = STV_VDP2_MZSZH+1;
v_size = STV_VDP2_MZSZV+1;
@@ -4226,16 +4207,16 @@ static void stv_vdp2_draw_mosaic(running_machine &machine, bitmap_t &bitmap, con
{
for(x=cliprect.min_x;x<=cliprect.max_x;x+=h_size)
{
- pix = bitmap.pix16(y, x);
+ pix = bitmap.pix32(y, x);
for(yi=0;yi<v_size;yi++)
for(xi=0;xi<h_size;xi++)
- bitmap.pix16(y+yi, x+xi) = pix;
+ bitmap.pix32(y+yi, x+xi) = pix;
}
}
}
-static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
/* the idea is here we check the tilemap capabilities / whats enabled and call an appropriate tilemap drawing routine, or
at the very list throw up a few errors if the tilemaps want to do something we don't support yet */
@@ -4349,12 +4330,12 @@ static void stv_vdp2_check_tilemap(running_machine &machine, bitmap_t &bitmap, c
}
}
-static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int iRP);
+static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int iRP);
-static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
+static void stv_vdp2_copy_roz_bitmap(bitmap_rgb32 &bitmap,
running_machine &machine,
- bitmap_t *roz_bitmap,
+ bitmap_rgb32 &roz_bitmap,
const rectangle &cliprect,
int iRP,
int planesizex,
@@ -4373,8 +4354,8 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
UINT32 *coeff_table_base, coeff_table_offset;
INT32 coeff_table_val;
UINT32 address;
- UINT16 *line;
- UINT16 pix;
+ UINT32 *line;
+ UINT32 pix;
//UINT32 coeff_line_color_screen_data;
INT32 clipxmask = 0, clipymask = 0;
@@ -4509,7 +4490,7 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
//dx = (RP.A * RP.dx) + (RP.B * RP.dy);
//dy = (RP.D * RP.dx) + (RP.E * RP.dy);
- line = &bitmap.pix16(vcnt);
+ line = &bitmap.pix32(vcnt);
if ( !use_coeff_table || RP.dkax == 0 )
{
@@ -4587,21 +4568,21 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
y = ys >> 16;
if ( x & clipxmask || y & clipymask ) continue;
- pix = roz_bitmap->pix16(y & planerenderedsizey, x & planerenderedsizex);
+ pix = roz_bitmap.pix32(y & planerenderedsizey, x & planerenderedsizex);
switch( stv2_current_tilemap.transparency )
{
case STV_TRANSPARENCY_PEN:
if ( pix != 0x0000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = pix;
}
break;
case STV_TRANSPARENCY_NONE:
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = pix;
break;
@@ -4609,16 +4590,16 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
if ( pix != 0x000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
- line[hcnt] = alpha_blend_r16( line[hcnt], pix, stv2_current_tilemap.alpha );
+ line[hcnt] = alpha_blend_r32( line[hcnt], pix, stv2_current_tilemap.alpha );
}
break;
case STV_TRANSPARENCY_ADD_BLEND:
if ( pix != 0x0000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = stv_add_blend( line[hcnt], pix );
}
@@ -4698,21 +4679,21 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
if ( x & clipxmask || y & clipymask ) continue;
- pix = roz_bitmap->pix16(y & planerenderedsizey, x & planerenderedsizex);
+ pix = roz_bitmap.pix32(y & planerenderedsizey, x & planerenderedsizex);
switch( stv2_current_tilemap.transparency )
{
case STV_TRANSPARENCY_PEN:
if ( pix != 0x0000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = pix;
}
break;
case STV_TRANSPARENCY_NONE:
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = pix;
break;
@@ -4720,16 +4701,16 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
if ( pix != 0x000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
- line[hcnt] = alpha_blend_r16( line[hcnt], pix, stv2_current_tilemap.alpha );
+ line[hcnt] = alpha_blend_r32( line[hcnt], pix, stv2_current_tilemap.alpha );
}
break;
case STV_TRANSPARENCY_ADD_BLEND:
if ( pix != 0x0000 )
{
if(stv2_current_tilemap.fade_control & 1)
- stv_vdp2_compute_color_offset_RGB555_UINT16(machine,&pix,stv2_current_tilemap.fade_control & 2);
+ stv_vdp2_compute_color_offset_UINT32(machine,&pix,stv2_current_tilemap.fade_control & 2);
line[hcnt] = stv_add_blend( line[hcnt], pix );
}
@@ -4740,7 +4721,7 @@ static void stv_vdp2_copy_roz_bitmap(bitmap_t &bitmap,
}
}
-static void stv_vdp2_draw_NBG0(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_NBG0(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
UINT32 base_mask;
@@ -4842,7 +4823,7 @@ static void stv_vdp2_draw_NBG0(running_machine &machine, bitmap_t &bitmap, const
stv_vdp2_check_tilemap(machine, bitmap, cliprect);
}
-static void stv_vdp2_draw_NBG1(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_NBG1(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
UINT32 base_mask;
@@ -4940,7 +4921,7 @@ static void stv_vdp2_draw_NBG1(running_machine &machine, bitmap_t &bitmap, const
stv_vdp2_check_tilemap(machine, bitmap, cliprect);
}
-static void stv_vdp2_draw_NBG2(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_NBG2(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
@@ -5045,7 +5026,7 @@ static void stv_vdp2_draw_NBG2(running_machine &machine, bitmap_t &bitmap, const
stv_vdp2_check_tilemap(machine, bitmap, cliprect);
}
-static void stv_vdp2_draw_NBG3(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_NBG3(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
/*
@@ -5150,7 +5131,7 @@ static void stv_vdp2_draw_NBG3(running_machine &machine, bitmap_t &bitmap, const
}
-static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int iRP)
+static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int iRP)
{
saturn_state *state = machine.driver_data<saturn_state>();
rectangle roz_clip_rect, mycliprect;
@@ -5254,8 +5235,8 @@ static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_t &bi
}
else
{
- if ( state->m_vdp2.roz_bitmap[iRP-1] == NULL )
- state->m_vdp2.roz_bitmap[iRP-1] = auto_alloc(machine, bitmap_t(4096, 4096, machine.primary_screen->format()));
+ if ( !state->m_vdp2.roz_bitmap[iRP-1].valid() )
+ state->m_vdp2.roz_bitmap[iRP-1].allocate(4096, 4096);
roz_clip_rect.min_x = roz_clip_rect.min_y = 0;
if ( (iRP == 1 && STV_VDP2_RAOVR == 3) ||
@@ -5292,8 +5273,8 @@ static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_t &bi
if ( (stv_rbg_cache_data.is_cache_dirty & iRP) ||
memcmp(&stv_rbg_cache_data.layer_data[iRP-1],&stv2_current_tilemap,sizeof(stv2_current_tilemap)) != 0 )
{
- state->m_vdp2.roz_bitmap[iRP-1]->fill(get_black_pen(machine), roz_clip_rect );
- stv_vdp2_check_tilemap(machine, *state->m_vdp2.roz_bitmap[iRP-1], roz_clip_rect);
+ state->m_vdp2.roz_bitmap[iRP-1].fill(get_black_pen(machine), roz_clip_rect );
+ stv_vdp2_check_tilemap(machine, state->m_vdp2.roz_bitmap[iRP-1], roz_clip_rect);
// prepare cache data
stv_rbg_cache_data.watch_vdp2_vram_writes |= iRP;
stv_rbg_cache_data.is_cache_dirty &= ~iRP;
@@ -5334,7 +5315,7 @@ static void stv_vdp2_draw_rotation_screen(running_machine &machine, bitmap_t &bi
}
-static void stv_vdp2_draw_RBG0(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_RBG0(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
/*
@@ -5437,7 +5418,7 @@ static void stv_vdp2_draw_RBG0(running_machine &machine, bitmap_t &bitmap, const
}
-static void stv_vdp2_draw_back(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void stv_vdp2_draw_back(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
int x,y;
@@ -5468,13 +5449,13 @@ static void stv_vdp2_draw_back(running_machine &machine, bitmap_t &bitmap, const
UINT16 dot;
dot = (gfxdata[base_offs+0]<<8)|gfxdata[base_offs+1];
- b = (dot & 0x7c00) >> 10;
- g = (dot & 0x03e0) >> 5;
- r = (dot & 0x001f) >> 0;
+ b = (dot & 0x7c00) >> 7;
+ g = (dot & 0x03e0) >> 2;
+ r = (dot & 0x001f) << 3;
if(STV_VDP2_BKCOEN)
- stv_vdp2_compute_color_offset_RGB555( machine, &r, &g, &b, STV_VDP2_BKCOSL );
+ stv_vdp2_compute_color_offset( machine, &r, &g, &b, STV_VDP2_BKCOSL );
- bitmap.pix16(y, x) = b | g << 5 | r << 10;
+ bitmap.pix32(y, x) = MAKE_RGB(r, g, b);
}
}
}
@@ -5907,7 +5888,8 @@ static void stv_vdp2_state_save_postload(running_machine &machine)
static void stv_vdp2_exit (running_machine &machine)
{
saturn_state *state = machine.driver_data<saturn_state>();
- state->m_vdp2.roz_bitmap[0] = state->m_vdp2.roz_bitmap[1] = NULL;
+ state->m_vdp2.roz_bitmap[0].reset();
+ state->m_vdp2.roz_bitmap[1].reset();
}
static int stv_vdp2_start (running_machine &machine)
@@ -5939,7 +5921,7 @@ static int stv_vdp2_start (running_machine &machine)
VIDEO_START( stv_vdp2 )
{
saturn_state *state = machine.driver_data<saturn_state>();
- state->m_vdp2.roz_bitmap[0] = state->m_vdp2.roz_bitmap[1] = NULL;
+ state->m_tmpbitmap.allocate(704, 256);
stv_vdp2_start(machine);
stv_vdp1_start(machine);
debug.l_en = 0xff;
@@ -6267,14 +6249,14 @@ static int stv_sprite_priorities_used[8];
static int stv_sprite_priorities_usage_valid;
static UINT8 stv_sprite_priorities_in_fb_line[512][8];
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 pri)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 pri)
{
saturn_state *state = machine.driver_data<saturn_state>();
int x,y,r,g,b;
int i;
UINT16 pix;
UINT16 *framebuffer_line;
- UINT16 *bitmap_line, *bitmap_line2 = NULL;
+ UINT32 *bitmap_line, *bitmap_line2 = NULL;
UINT8 interlace_framebuffer;
UINT8 double_x;
static const UINT16 sprite_colormask_table[] = {
@@ -6398,7 +6380,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
continue;
framebuffer_line = state->m_vdp1.framebuffer_display_lines[y];
- bitmap_line = &bitmap.pix16(y);
+ bitmap_line = &bitmap.pix32(y);
for ( x = mycliprect.min_x; x <= mycliprect.max_x; x++ )
{
@@ -6415,16 +6397,16 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
if(STV_VDP2_SPWINEN && pix == 0x8000) /* Pukunpa */
continue;
- b = (pix & 0x7c00) >> 10;
- g = (pix & 0x03e0) >> 5;
- r = (pix & 0x1f);
+ b = (pix & 0x7c00) >> 7;
+ g = (pix & 0x03e0) >> 2;
+ r = (pix & 0x1f) << 3;
if ( color_offset_pal )
{
- stv_vdp2_compute_color_offset_RGB555( machine, &r, &g, &b, STV_VDP2_SPCOSL );
+ stv_vdp2_compute_color_offset( machine, &r, &g, &b, STV_VDP2_SPCOSL );
}
- bitmap_line[x] = b | g << 5 | r << 10;
+ bitmap_line[x] = MAKE_RGB(r, g, b);
}
else
{
@@ -6440,7 +6422,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
if ( pix & ~sprite_shadow )
{
- bitmap_line[x] = (bitmap_line[x] & ~0x421) >> 1;
+ bitmap_line[x] = (bitmap_line[x] & ~0x010101) >> 1;
}
}
else
@@ -6451,7 +6433,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/*shadow - in reality, we should check from what layer pixel beneath comes...*/
if ( STV_VDP2_SDCTL & 0x3f )
{
- bitmap_line[x] = (bitmap_line[x] & ~0x421) >> 1;
+ bitmap_line[x] = (bitmap_line[x] & ~0x010101) >> 1;
}
/* note that when shadows are disabled, "shadow" palette entries are not drawn */
}
@@ -6476,7 +6458,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
continue;
framebuffer_line = state->m_vdp1.framebuffer_display_lines[y];
- bitmap_line = &bitmap.pix16(y);
+ bitmap_line = &bitmap.pix32(y);
for ( x = mycliprect.min_x; x <= mycliprect.max_x; x++ )
{
@@ -6490,21 +6472,21 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
continue;
};
- b = (pix & 0x7c00) >> 10;
- g = (pix & 0x03e0) >> 5;
- r = (pix & 0x1f);
+ b = (pix & 0x7c00) >> 7;
+ g = (pix & 0x03e0) >> 2;
+ r = (pix & 0x1f) << 3;
if ( color_offset_pal )
{
- stv_vdp2_compute_color_offset_RGB555( machine, &r, &g, &b, STV_VDP2_SPCOSL );
+ stv_vdp2_compute_color_offset( machine, &r, &g, &b, STV_VDP2_SPCOSL );
}
ccr = sprite_ccr[0];
if ( STV_VDP2_CCMD )
{
- bitmap_line[x] = stv_add_blend( bitmap_line[x], b | g << 5 | r << 10 );
+ bitmap_line[x] = stv_add_blend( bitmap_line[x], MAKE_RGB(r, g, b));
}
else
{
- bitmap_line[x] = alpha_blend_r16( bitmap_line[x], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f);
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], MAKE_RGB(r, g ,b), ((UINT16)(0x1f-ccr)*0xff)/0x1f);
}
}
else
@@ -6530,7 +6512,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
if ( pix & ~sprite_shadow )
{
- bitmap_line[x] = (bitmap_line[x] & ~0x421) >> 1;
+ bitmap_line[x] = (bitmap_line[x] & ~0x010101) >> 1;
}
}
else
@@ -6541,7 +6523,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/*shadow - in reality, we should check from what layer pixel beneath comes...*/
if ( STV_VDP2_SDCTL & 0x3f )
{
- bitmap_line[x] = (bitmap_line[x] & ~0x421) >> 1;
+ bitmap_line[x] = (bitmap_line[x] & ~0x010101) >> 1;
}
/* note that when shadows are disabled, "shadow" palette entries are not drawn */
} else if ( pix )
@@ -6557,7 +6539,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
else
{
- bitmap_line[x] = alpha_blend_r16( bitmap_line[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
}
else
@@ -6580,12 +6562,12 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
framebuffer_line = state->m_vdp1.framebuffer_display_lines[y];
if ( interlace_framebuffer == 0 )
{
- bitmap_line = &bitmap.pix16(y);
+ bitmap_line = &bitmap.pix32(y);
}
else
{
- bitmap_line = &bitmap.pix16(2*y);
- bitmap_line2 = &bitmap.pix16(2*y + 1);
+ bitmap_line = &bitmap.pix32(2*y);
+ bitmap_line2 = &bitmap.pix32(2*y + 1);
}
for ( x = mycliprect.min_x; x <= mycliprect.max_x /(double_x+1) ; x++ )
@@ -6599,26 +6581,26 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
stv_sprite_priorities_in_fb_line[y][sprite_priorities[0]] = 1;
continue;
};
- b = (pix & 0x7c00) >> 10;
- g = (pix & 0x03e0) >> 5;
- r = (pix & 0x1f);
+ b = (pix & 0x7c00) >> 7;
+ g = (pix & 0x03e0) >> 2;
+ r = (pix & 0x1f) << 3;
if ( color_offset_pal )
{
- stv_vdp2_compute_color_offset_RGB555( machine, &r, &g, &b, STV_VDP2_SPCOSL );
+ stv_vdp2_compute_color_offset( machine, &r, &g, &b, STV_VDP2_SPCOSL );
}
if ( alpha_enabled == 0 )
{
if(double_x)
{
- bitmap_line[x*2] = b | g << 5 | r << 10;
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = b | g << 5 | r << 10;
- bitmap_line[x*2+1] = b | g << 5 | r << 10;
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = b | g << 5 | r << 10;
+ bitmap_line[x*2] = MAKE_RGB(r, g, b);
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = MAKE_RGB(r, g, b);
+ bitmap_line[x*2+1] = MAKE_RGB(r, g, b);
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = MAKE_RGB(r, g, b);
}
else
{
- bitmap_line[x] = b | g << 5 | r << 10;
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = b | g << 5 | r << 10;
+ bitmap_line[x] = MAKE_RGB(r, g, b);
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = MAKE_RGB(r, g, b);
}
}
else // alpha_blend == 1
@@ -6629,30 +6611,30 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
if(double_x)
{
- bitmap_line[x*2] = stv_add_blend( bitmap_line[x*2], b | g << 5 | r << 10 );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = stv_add_blend( bitmap_line2[x*2], b | g << 5 | r << 10 );
- bitmap_line[x*2+1] = stv_add_blend( bitmap_line[x*2+1], b | g << 5 | r << 10 );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = stv_add_blend( bitmap_line2[x*2+1], b | g << 5 | r << 10 );
+ bitmap_line[x*2] = stv_add_blend( bitmap_line[x*2], MAKE_RGB(r, g, b) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = stv_add_blend( bitmap_line2[x*2], MAKE_RGB(r, g, b) );
+ bitmap_line[x*2+1] = stv_add_blend( bitmap_line[x*2+1], MAKE_RGB(r, g, b) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = stv_add_blend( bitmap_line2[x*2+1], MAKE_RGB(r, g, b) );
}
else
{
- bitmap_line[x] = stv_add_blend( bitmap_line[x], b | g << 5 | r << 10 );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = stv_add_blend( bitmap_line2[x], b | g << 5 | r << 10 );
+ bitmap_line[x] = stv_add_blend( bitmap_line[x], MAKE_RGB(r, g, b) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = stv_add_blend( bitmap_line2[x], MAKE_RGB(r, g, b) );
}
}
else
{
if(double_x)
{
- bitmap_line[x*2] = alpha_blend_r16( bitmap_line[x*2], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = alpha_blend_r16( bitmap_line2[x*2], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- bitmap_line[x*2+1] = alpha_blend_r16( bitmap_line[x*2+1], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = alpha_blend_r16( bitmap_line2[x*2+1], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f);
+ bitmap_line[x*2] = alpha_blend_r32( bitmap_line[x*2], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = alpha_blend_r32( bitmap_line2[x*2], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x*2+1] = alpha_blend_r32( bitmap_line[x*2+1], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = alpha_blend_r32( bitmap_line2[x*2+1], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f);
}
else
{
- bitmap_line[x] = alpha_blend_r16( bitmap_line[x], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f);
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = alpha_blend_r16( bitmap_line2[x], b | g << 5 | r << 10, ((UINT16)(0x1f-ccr)*0xff)/0x1f);
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f);
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = alpha_blend_r32( bitmap_line2[x], MAKE_RGB(r, g, b), ((UINT16)(0x1f-ccr)*0xff)/0x1f);
}
}
}
@@ -6737,15 +6719,15 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
if(double_x)
{
- bitmap_line[x*2] = alpha_blend_r16( bitmap_line[x*2], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = alpha_blend_r16( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- bitmap_line[x*2+1] = alpha_blend_r16( bitmap_line[x*2+1], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = alpha_blend_r16( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x*2] = alpha_blend_r32( bitmap_line[x*2], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = alpha_blend_r32( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x*2+1] = alpha_blend_r32( bitmap_line[x*2+1], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = alpha_blend_r32( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
else
{
- bitmap_line[x] = alpha_blend_r16( bitmap_line[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = alpha_blend_r16( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = alpha_blend_r32( bitmap_line2[x], machine.pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
}
}
@@ -6759,14 +6741,14 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
stv_sprite_priorities_usage_valid = 1;
}
-SCREEN_UPDATE( stv_vdp2 )
+SCREEN_UPDATE_RGB32( stv_vdp2 )
{
saturn_state *state = screen.machine().driver_data<saturn_state>();
static UINT8 pri;
stv_vdp2_fade_effects(screen.machine());
- stv_vdp2_draw_back(screen.machine(), bitmap,cliprect);
+ stv_vdp2_draw_back(screen.machine(), state->m_tmpbitmap,cliprect);
#if DEBUG_MODE
if(screen.machine().input().code_pressed_once(KEYCODE_T))
@@ -6810,12 +6792,12 @@ SCREEN_UPDATE( stv_vdp2 )
/*If a plane has a priority value of zero it isn't shown at all.*/
for(pri=1;pri<8;pri++)
{
- if (debug.l_en & 1) { if(pri==STV_VDP2_N3PRIN) stv_vdp2_draw_NBG3(screen.machine(), bitmap,cliprect); }
- if (debug.l_en & 2) { if(pri==STV_VDP2_N2PRIN) stv_vdp2_draw_NBG2(screen.machine(), bitmap,cliprect); }
- if (debug.l_en & 4) { if(pri==STV_VDP2_N1PRIN) stv_vdp2_draw_NBG1(screen.machine(), bitmap,cliprect); }
- if (debug.l_en & 8) { if(pri==STV_VDP2_N0PRIN) stv_vdp2_draw_NBG0(screen.machine(), bitmap,cliprect); }
- if (debug.l_en & 0x10) { if(pri==STV_VDP2_R0PRIN) stv_vdp2_draw_RBG0(screen.machine(), bitmap,cliprect); }
- if (debug.l_en & 0x20) { draw_sprites(screen.machine(),bitmap,cliprect,pri); }
+ if (debug.l_en & 1) { if(pri==STV_VDP2_N3PRIN) stv_vdp2_draw_NBG3(screen.machine(), state->m_tmpbitmap,cliprect); }
+ if (debug.l_en & 2) { if(pri==STV_VDP2_N2PRIN) stv_vdp2_draw_NBG2(screen.machine(), state->m_tmpbitmap,cliprect); }
+ if (debug.l_en & 4) { if(pri==STV_VDP2_N1PRIN) stv_vdp2_draw_NBG1(screen.machine(), state->m_tmpbitmap,cliprect); }
+ if (debug.l_en & 8) { if(pri==STV_VDP2_N0PRIN) stv_vdp2_draw_NBG0(screen.machine(), state->m_tmpbitmap,cliprect); }
+ if (debug.l_en & 0x10) { if(pri==STV_VDP2_R0PRIN) stv_vdp2_draw_RBG0(screen.machine(), state->m_tmpbitmap,cliprect); }
+ if (debug.l_en & 0x20) { draw_sprites(screen.machine(),state->m_tmpbitmap,cliprect,pri); }
}
}
@@ -6896,7 +6878,7 @@ SCREEN_UPDATE( stv_vdp2 )
#endif
-
+ copybitmap(bitmap, state->m_tmpbitmap, 0, 0, 0, 0, cliprect);
return 0;
}
@@ -7040,7 +7022,7 @@ static void saturn_vdp2_assign_variables(running_machine &machine,UINT32 offset,
}
}
-static void vdp2_draw_back(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void vdp2_draw_back(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
saturn_state *state = machine.driver_data<saturn_state>();
int x,y;
@@ -7077,7 +7059,7 @@ static void vdp2_draw_back(running_machine &machine, bitmap_t &bitmap, const rec
r <<= 3;
//if(STV_VDP2_BKCOEN)
- // stv_vdp2_compute_color_offset_RGB555( machine, &r, &g, &b, STV_VDP2_BKCOSL );
+ // stv_vdp2_compute_color_offset( machine, &r, &g, &b, STV_VDP2_BKCOSL );
/* TODO: this needs post-processing too! */
bitmap.pix32(y, x) = b | g << 8 | r << 16;
@@ -7250,7 +7232,7 @@ static void vdp2_calc_color_offset(running_machine &machine, UINT8 layer_name, i
}
/* now copy the vram buffer to the screen buffer, apply post-processing at this stage */
-static void draw_normal_screen(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, UINT8 layer_name)
+static void draw_normal_screen(running_machine &machine, bitmap_rgb32 &bitmap,const rectangle &cliprect, UINT8 layer_name)
{
int x,y;
int r,g,b;
@@ -7310,7 +7292,7 @@ static void vdp2_palette_entry(running_machine &machine, int *r, int *g, int *b,
}
}
-SCREEN_UPDATE( saturn )
+SCREEN_UPDATE_RGB32( saturn )
{
saturn_state *state = screen.machine().driver_data<saturn_state>();
static UINT8 disclaimer;
diff --git a/src/mame/video/subs.c b/src/mame/video/subs.c
index 16c67b2bb03..768046fbdd6 100644
--- a/src/mame/video/subs.c
+++ b/src/mame/video/subs.c
@@ -37,7 +37,7 @@ WRITE8_HANDLER( subs_invert2_w )
}
-SCREEN_UPDATE( subs_left )
+SCREEN_UPDATE_IND16( subs_left )
{
subs_state *state = screen.machine().driver_data<subs_state>();
UINT8 *videoram = state->m_videoram;
@@ -119,7 +119,7 @@ SCREEN_UPDATE( subs_left )
return 0;
}
-SCREEN_UPDATE( subs_right )
+SCREEN_UPDATE_IND16( subs_right )
{
subs_state *state = screen.machine().driver_data<subs_state>();
UINT8 *videoram = state->m_videoram;
diff --git a/src/mame/video/suna16.c b/src/mame/video/suna16.c
index 3be3236bbca..a7176210aaf 100644
--- a/src/mame/video/suna16.c
+++ b/src/mame/video/suna16.c
@@ -122,7 +122,7 @@ WRITE16_HANDLER( suna16_paletteram16_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 *sprites, int gfx)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 *sprites, int gfx)
{
suna16_state *state = machine.driver_data<suna16_state>();
int offs;
@@ -221,7 +221,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( suna16 )
+SCREEN_UPDATE_IND16( suna16 )
{
suna16_state *state = screen.machine().driver_data<suna16_state>();
@@ -231,7 +231,7 @@ SCREEN_UPDATE( suna16 )
return 0;
}
-SCREEN_UPDATE( bestbest )
+SCREEN_UPDATE_IND16( bestbest )
{
suna16_state *state = screen.machine().driver_data<suna16_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/suna8.c b/src/mame/video/suna8.c
index 72556e618f0..1136d530664 100644
--- a/src/mame/video/suna8.c
+++ b/src/mame/video/suna8.c
@@ -202,7 +202,7 @@ VIDEO_START( suna8_textdim12 ) { suna8_vh_start_common(machine, 12); }
***************************************************************************/
-static void draw_normal_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_normal_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
suna8_state *state = machine.driver_data<suna8_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -336,7 +336,7 @@ static void draw_normal_sprites(running_machine &machine, bitmap_t &bitmap,const
}
}
-static void draw_text_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_text_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
suna8_state *state = machine.driver_data<suna8_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -412,7 +412,7 @@ static void draw_text_sprites(running_machine &machine, bitmap_t &bitmap,const r
***************************************************************************/
-SCREEN_UPDATE( suna8 )
+SCREEN_UPDATE_IND16( suna8 )
{
/* see hardhead, hardhea2 test mode (press button 2 for both players) */
bitmap.fill(0xff, cliprect);
diff --git a/src/mame/video/supbtime.c b/src/mame/video/supbtime.c
index 6b39dceb8c9..c2e9ce80ef5 100644
--- a/src/mame/video/supbtime.c
+++ b/src/mame/video/supbtime.c
@@ -21,7 +21,7 @@ End sequence uses rowscroll '98 c0' on pf1 (jmp to 1d61a on supbtimj)
/******************************************************************************/
-SCREEN_UPDATE(supbtime)
+SCREEN_UPDATE_IND16(supbtime)
{
supbtime_state *state = screen.machine().driver_data<supbtime_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -32,7 +32,7 @@ SCREEN_UPDATE(supbtime)
bitmap.fill(768, cliprect);
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
return 0;
}
diff --git a/src/mame/video/superchs.c b/src/mame/video/superchs.c
index 8bf3d7ac3d7..19733a782a8 100644
--- a/src/mame/video/superchs.c
+++ b/src/mame/video/superchs.c
@@ -54,7 +54,7 @@ Heavy use is made of sprite zooming.
********************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
{
superchs_state *state = machine.driver_data<superchs_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -199,7 +199,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( superchs )
+SCREEN_UPDATE_IND16( superchs )
{
device_t *tc0480scp = screen.machine().device("tc0480scp");
UINT8 layer[5];
diff --git a/src/mame/video/superqix.c b/src/mame/video/superqix.c
index dbda210f0f2..c465f00614f 100644
--- a/src/mame/video/superqix.c
+++ b/src/mame/video/superqix.c
@@ -58,8 +58,8 @@ VIDEO_START( pbillian )
VIDEO_START( superqix )
{
superqix_state *state = machine.driver_data<superqix_state>();
- state->m_fg_bitmap[0] = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
- state->m_fg_bitmap[1] = auto_bitmap_alloc(machine, 256, 256, machine.primary_screen->format());
+ state->m_fg_bitmap[0] = auto_bitmap_ind16_alloc(machine, 256, 256);
+ state->m_fg_bitmap[1] = auto_bitmap_ind16_alloc(machine, 256, 256);
state->m_bg_tilemap = tilemap_create(machine, sqix_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
tilemap_set_transmask(state->m_bg_tilemap,0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
@@ -165,7 +165,7 @@ WRITE8_HANDLER( superqix_0410_w )
***************************************************************************/
-static void pbillian_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void pbillian_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
superqix_state *state = machine.driver_data<superqix_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -193,7 +193,7 @@ static void pbillian_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
}
}
-static void superqix_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void superqix_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
superqix_state *state = machine.driver_data<superqix_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -225,7 +225,7 @@ static void superqix_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
}
}
-SCREEN_UPDATE( pbillian )
+SCREEN_UPDATE_IND16( pbillian )
{
superqix_state *state = screen.machine().driver_data<superqix_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
@@ -234,7 +234,7 @@ SCREEN_UPDATE( pbillian )
return 0;
}
-SCREEN_UPDATE( superqix )
+SCREEN_UPDATE_IND16( superqix )
{
superqix_state *state = screen.machine().driver_data<superqix_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/suprloco.c b/src/mame/video/suprloco.c
index ff64cca777c..c5423e6631c 100644
--- a/src/mame/video/suprloco.c
+++ b/src/mame/video/suprloco.c
@@ -161,7 +161,7 @@ READ8_HANDLER( suprloco_control_r )
-INLINE void draw_pixel(bitmap_t &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
+INLINE void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
{
if (flip)
{
@@ -179,7 +179,7 @@ INLINE void draw_pixel(bitmap_t &bitmap,const rectangle &cliprect,int x,int y,in
}
-static void draw_sprite(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int spr_number)
+static void draw_sprite(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int spr_number)
{
suprloco_state *state = machine.driver_data<suprloco_state>();
int flip = flip_screen_get(machine);
@@ -254,7 +254,7 @@ static void draw_sprite(running_machine &machine, bitmap_t &bitmap,const rectang
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
suprloco_state *state = machine.driver_data<suprloco_state>();
int spr_number;
@@ -269,7 +269,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( suprloco )
+SCREEN_UPDATE_IND16( suprloco )
{
suprloco_state *state = screen.machine().driver_data<suprloco_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/suprnova.c b/src/mame/video/suprnova.c
index 7d245dec71f..308e9d43434 100644
--- a/src/mame/video/suprnova.c
+++ b/src/mame/video/suprnova.c
@@ -6,11 +6,11 @@
/* draws ROZ with linescroll OR columnscroll to 16-bit indexed bitmap */
-static void suprnova_draw_roz(bitmap_t &bitmap, bitmap_t* bitmapflags, const rectangle &cliprect, tilemap_t *tmap, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound, int columnscroll, UINT32* scrollram)
+static void suprnova_draw_roz(bitmap_ind16 &bitmap, bitmap_ind8& bitmapflags, const rectangle &cliprect, tilemap_t *tmap, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound, int columnscroll, UINT32* scrollram)
{
- //bitmap_t *destbitmap = bitmap;
- bitmap_t &srcbitmap = tilemap_get_pixmap(tmap);
- bitmap_t &srcbitmapflags = tilemap_get_flagsmap(tmap);
+ //bitmap_ind16 *destbitmap = bitmap;
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tmap);
+ bitmap_ind8 &srcbitmapflags = tilemap_get_flagsmap(tmap);
const int xmask = srcbitmap.width()-1;
const int ymask = srcbitmap.height()-1;
const int widthshifted = srcbitmap.width() << 16;
@@ -51,7 +51,7 @@ static void suprnova_draw_roz(bitmap_t &bitmap, bitmap_t* bitmapflags, const rec
/* get dest and priority pointers */
dest = &bitmap.pix16(sy, sx);
- destflags = &bitmapflags->pix8(sy, sx);
+ destflags = &bitmapflags.pix8(sy, sx);
/* loop over columns */
while (x <= ex)
@@ -365,13 +365,13 @@ VIDEO_START(skns)
state->m_tilemap_B = tilemap_create(machine, get_tilemap_B_tile_info,tilemap_scan_rows,16,16,64, 64);
tilemap_set_transparent_pen(state->m_tilemap_B,0);
- state->m_sprite_bitmap = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(1024,1024);
- state->m_tilemap_bitmap_lower = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
- state->m_tilemap_bitmapflags_lower = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED8);
+ state->m_tilemap_bitmap_lower.allocate(320,240);
+ state->m_tilemap_bitmapflags_lower.allocate(320,240);
- state->m_tilemap_bitmap_higher = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
- state->m_tilemap_bitmapflags_higher = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED8);
+ state->m_tilemap_bitmap_higher.allocate(320,240);
+ state->m_tilemap_bitmapflags_higher.allocate(320,240);
machine.gfx[2]->color_granularity=256;
machine.gfx[3]->color_granularity=256;
@@ -391,7 +391,7 @@ VIDEO_RESET( skns )
state->m_alt_enable_background = state->m_alt_enable_sprites = 1;
}
-static void supernova_draw_a( running_machine &machine, bitmap_t &bitmap, bitmap_t* bitmap_flags, const rectangle &cliprect, int tran )
+static void supernova_draw_a( running_machine &machine, bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const rectangle &cliprect, int tran )
{
skns_state *state = machine.driver_data<skns_state>();
int enable_a = (state->m_v3_regs[0x10/4] >> 0) & 0x0001;
@@ -422,7 +422,7 @@ static void supernova_draw_a( running_machine &machine, bitmap_t &bitmap, bitmap
}
}
-static void supernova_draw_b( running_machine &machine, bitmap_t &bitmap, bitmap_t* bitmap_flags, const rectangle &cliprect, int tran )
+static void supernova_draw_b( running_machine &machine, bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const rectangle &cliprect, int tran )
{
skns_state *state = machine.driver_data<skns_state>();
int enable_b = (state->m_v3_regs[0x34/4] >> 0) & 0x0001;
@@ -453,17 +453,17 @@ static void supernova_draw_b( running_machine &machine, bitmap_t &bitmap, bitmap
}
}
-SCREEN_UPDATE(skns)
+SCREEN_UPDATE_RGB32(skns)
{
skns_state *state = screen.machine().driver_data<skns_state>();
palette_update(screen.machine());
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- state->m_tilemap_bitmap_lower->fill(0);
- state->m_tilemap_bitmapflags_lower->fill(0);
- state->m_tilemap_bitmap_higher->fill(0);
- state->m_tilemap_bitmapflags_higher->fill(0);
+ state->m_tilemap_bitmap_lower.fill(0);
+ state->m_tilemap_bitmapflags_lower.fill(0);
+ state->m_tilemap_bitmap_higher.fill(0);
+ state->m_tilemap_bitmapflags_higher.fill(0);
{
int supernova_pri_a;
@@ -476,8 +476,8 @@ SCREEN_UPDATE(skns)
//popmessage("pri %d %d\n", supernova_pri_a, supernova_pri_b);
/*if (!supernova_pri_b) { */
- supernova_draw_b(screen.machine(), *state->m_tilemap_bitmap_lower, state->m_tilemap_bitmapflags_lower, cliprect,tran);// tran = 1;
- supernova_draw_a(screen.machine(), *state->m_tilemap_bitmap_higher,state->m_tilemap_bitmapflags_higher,cliprect,tran);// tran = 1;
+ supernova_draw_b(screen.machine(), state->m_tilemap_bitmap_lower, state->m_tilemap_bitmapflags_lower, cliprect,tran);// tran = 1;
+ supernova_draw_a(screen.machine(), state->m_tilemap_bitmap_higher,state->m_tilemap_bitmapflags_higher,cliprect,tran);// tran = 1;
{
int x,y;
@@ -492,13 +492,13 @@ SCREEN_UPDATE(skns)
for (y=0;y<240;y++)
{
- src = &state->m_tilemap_bitmap_lower->pix16(y);
- srcflags = &state->m_tilemap_bitmapflags_lower->pix8(y);
+ src = &state->m_tilemap_bitmap_lower.pix16(y);
+ srcflags = &state->m_tilemap_bitmapflags_lower.pix8(y);
- src2 = &state->m_tilemap_bitmap_higher->pix16(y);
- src2flags = &state->m_tilemap_bitmapflags_higher->pix8(y);
+ src2 = &state->m_tilemap_bitmap_higher.pix16(y);
+ src2flags = &state->m_tilemap_bitmapflags_higher.pix8(y);
- src3 = &state->m_sprite_bitmap->pix16(y);
+ src3 = &state->m_sprite_bitmap.pix16(y);
dst = &bitmap.pix32(y);
@@ -628,10 +628,10 @@ SCREEN_UPDATE(skns)
}
}
- state->m_sprite_bitmap->fill(0x0000, cliprect);
+ state->m_sprite_bitmap.fill(0x0000, cliprect);
if (state->m_alt_enable_sprites)
- state->m_spritegen->skns_draw_sprites(screen.machine(), *state->m_sprite_bitmap, cliprect, screen.machine().generic.spriteram.u32, screen.machine().generic.spriteram_size, screen.machine().region("gfx1")->base(), screen.machine().region ("gfx1")->bytes(), state->m_spc_regs );
+ state->m_spritegen->skns_draw_sprites(screen.machine(), state->m_sprite_bitmap, cliprect, screen.machine().generic.spriteram.u32, screen.machine().generic.spriteram_size, screen.machine().region("gfx1")->base(), screen.machine().region ("gfx1")->bytes(), state->m_spc_regs );
return 0;
diff --git a/src/mame/video/suprridr.c b/src/mame/video/suprridr.c
index 82338caacae..5d74406c39c 100644
--- a/src/mame/video/suprridr.c
+++ b/src/mame/video/suprridr.c
@@ -166,7 +166,7 @@ WRITE8_HANDLER( suprridr_fgram_w )
*
*************************************/
-SCREEN_UPDATE( suprridr )
+SCREEN_UPDATE_IND16( suprridr )
{
suprridr_state *state = screen.machine().driver_data<suprridr_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/suprslam.c b/src/mame/video/suprslam.c
index a649070483c..48d0916bdc4 100644
--- a/src/mame/video/suprslam.c
+++ b/src/mame/video/suprslam.c
@@ -6,7 +6,7 @@
/* todo, fix zooming correctly, it's _not_ like aerofgt */
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* SPRITE INFO
@@ -152,7 +152,7 @@ VIDEO_START( suprslam )
tilemap_set_transparent_pen(state->m_screen_tilemap, 15);
}
-SCREEN_UPDATE( suprslam )
+SCREEN_UPDATE_IND16( suprslam )
{
suprslam_state *state = screen.machine().driver_data<suprslam_state>();
tilemap_set_scrollx( state->m_screen_tilemap,0, state->m_screen_vregs[0x04/2] );
diff --git a/src/mame/video/surpratk.c b/src/mame/video/surpratk.c
index bbb045e60d3..076605edb43 100644
--- a/src/mame/video/surpratk.c
+++ b/src/mame/video/surpratk.c
@@ -46,7 +46,7 @@ void surpratk_sprite_callback( running_machine &machine, int *code, int *color,
***************************************************************************/
-SCREEN_UPDATE( surpratk )
+SCREEN_UPDATE_IND16( surpratk )
{
surpratk_state *state = screen.machine().driver_data<surpratk_state>();
int layer[3], bg_colorbase;
diff --git a/src/mame/video/system1.c b/src/mame/video/system1.c
index 25edcffd1e9..8d96e6f9925 100644
--- a/src/mame/video/system1.c
+++ b/src/mame/video/system1.c
@@ -136,7 +136,7 @@ static void video_start_common(running_machine &machine, int pagecount)
}
/* allocate a temporary bitmap for sprite rendering */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap = auto_bitmap_ind16_alloc(machine, 512, 256);
/* register for save stats */
state_save_register_global(machine, state->m_video_mode);
@@ -369,7 +369,7 @@ WRITE8_HANDLER( system1_paletteram_w )
*
*************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int xoffset)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset)
{
system1_state *state = machine.driver_data<system1_state>();
UINT32 gfxbanks = machine.region("sprites")->bytes() / 0x8000;
@@ -499,7 +499,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-static void video_update_common(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, bitmap_t &fgpixmap, bitmap_t **bgpixmaps, const int *bgrowscroll, int bgyscroll, int spritexoffs)
+static void video_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind16 &fgpixmap, bitmap_ind16 **bgpixmaps, const int *bgrowscroll, int bgyscroll, int spritexoffs)
{
system1_state *state = screen.machine().driver_data<system1_state>();
const UINT8 *lookup = screen.machine().region("proms")->base();
@@ -567,11 +567,11 @@ static void video_update_common(screen_device &screen, bitmap_t &bitmap, const r
*
*************************************/
-SCREEN_UPDATE( system1 )
+SCREEN_UPDATE_IND16( system1 )
{
system1_state *state = screen.machine().driver_data<system1_state>();
UINT8 *videoram = state->m_videoram;
- bitmap_t *bgpixmaps[4];
+ bitmap_ind16 *bgpixmaps[4];
int bgrowscroll[32];
int xscroll, yscroll;
int y;
@@ -580,7 +580,7 @@ SCREEN_UPDATE( system1 )
bgpixmaps[0] = bgpixmaps[1] = bgpixmaps[2] = bgpixmaps[3] = &tilemap_get_pixmap(state->m_tilemap_page[0]);
/* foreground is fixed to page 1 */
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[1]);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[1]);
/* get fixed scroll offsets */
xscroll = (INT16)((videoram[0xffc] | (videoram[0xffd] << 8)) + 28);
@@ -603,11 +603,11 @@ SCREEN_UPDATE( system1 )
}
-SCREEN_UPDATE( system2 )
+SCREEN_UPDATE_IND16( system2 )
{
system1_state *state = screen.machine().driver_data<system1_state>();
UINT8 *videoram = state->m_videoram;
- bitmap_t *bgpixmaps[4];
+ bitmap_ind16 *bgpixmaps[4];
int rowscroll[32];
int xscroll, yscroll;
int sprxoffset;
@@ -620,7 +620,7 @@ SCREEN_UPDATE( system2 )
bgpixmaps[3] = &tilemap_get_pixmap(state->m_tilemap_page[videoram[0x746] & 7]);
/* foreground is fixed to page 0 */
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[0]);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[0]);
/* get scroll offsets */
if (!flip_screen_get(screen.machine()))
@@ -646,11 +646,11 @@ SCREEN_UPDATE( system2 )
}
-SCREEN_UPDATE( system2_rowscroll )
+SCREEN_UPDATE_IND16( system2_rowscroll )
{
system1_state *state = screen.machine().driver_data<system1_state>();
UINT8 *videoram = state->m_videoram;
- bitmap_t *bgpixmaps[4];
+ bitmap_ind16 *bgpixmaps[4];
int rowscroll[32];
int yscroll;
int sprxoffset;
@@ -663,7 +663,7 @@ SCREEN_UPDATE( system2_rowscroll )
bgpixmaps[3] = &tilemap_get_pixmap(state->m_tilemap_page[videoram[0x746] & 7]);
/* foreground is fixed to page 0 */
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[0]);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[0]);
/* get scroll offsets */
if (!flip_screen_get(screen.machine()))
diff --git a/src/mame/video/system16.c b/src/mame/video/system16.c
index 9225a47293d..2e92a7671ae 100644
--- a/src/mame/video/system16.c
+++ b/src/mame/video/system16.c
@@ -629,7 +629,7 @@ VIDEO_START( s16a_bootleg_passsht )
}
// Passing Shot (2 player), Shinobi (Datsu), Wonderboy 3
-SCREEN_UPDATE( s16a_bootleg )
+SCREEN_UPDATE_IND16( s16a_bootleg )
{
segas1x_bootleg_state *state = screen.machine().driver_data<segas1x_bootleg_state>();
@@ -687,7 +687,7 @@ SCREEN_UPDATE( s16a_bootleg )
}
/* The Passing Shot 4 Player bootleg has weird scroll registers (different offsets, ^0x7 xor) */
-SCREEN_UPDATE( s16a_bootleg_passht4b )
+SCREEN_UPDATE_IND16( s16a_bootleg_passht4b )
{
segas1x_bootleg_state *state = screen.machine().driver_data<segas1x_bootleg_state>();
@@ -730,7 +730,7 @@ SCREEN_UPDATE( s16a_bootleg_passht4b )
/***************************************************************************/
-SCREEN_UPDATE( system16 )
+SCREEN_UPDATE_IND16( system16 )
{
segas1x_bootleg_state *state = screen.machine().driver_data<segas1x_bootleg_state>();
@@ -776,7 +776,7 @@ SCREEN_UPDATE( system16 )
}
-SCREEN_UPDATE( system18old )
+SCREEN_UPDATE_IND16( system18old )
{
segas1x_bootleg_state *state = screen.machine().driver_data<segas1x_bootleg_state>();
diff --git a/src/mame/video/tagteam.c b/src/mame/video/tagteam.c
index 40221c2d15f..1459293267f 100644
--- a/src/mame/video/tagteam.c
+++ b/src/mame/video/tagteam.c
@@ -147,7 +147,7 @@ VIDEO_START( tagteam )
8, 8, 32, 32);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tagteam_state *state = machine.driver_data<tagteam_state>();
int offs;
@@ -192,7 +192,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( tagteam )
+SCREEN_UPDATE_IND16( tagteam )
{
tagteam_state *state = screen.machine().driver_data<tagteam_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/tail2nos.c b/src/mame/video/tail2nos.c
index d86fb007117..6bb575a78e1 100644
--- a/src/mame/video/tail2nos.c
+++ b/src/mame/video/tail2nos.c
@@ -146,7 +146,7 @@ WRITE16_HANDLER( tail2nos_gfxbank_w )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
tail2nos_state *state = machine.driver_data<tail2nos_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -177,7 +177,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( tail2nos )
+SCREEN_UPDATE_IND16( tail2nos )
{
tail2nos_state *state = screen.machine().driver_data<tail2nos_state>();
diff --git a/src/mame/video/taito_b.c b/src/mame/video/taito_b.c
index daac35181c6..1581e19ebdf 100644
--- a/src/mame/video/taito_b.c
+++ b/src/mame/video/taito_b.c
@@ -45,8 +45,8 @@ static VIDEO_START( taitob_core )
{
taitob_state *state = machine.driver_data<taitob_state>();
- state->m_framebuffer[0] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
- state->m_framebuffer[1] = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
+ state->m_framebuffer[0] = auto_bitmap_ind16_alloc(machine, 512, 256);
+ state->m_framebuffer[1] = auto_bitmap_ind16_alloc(machine, 512, 256);
state->m_pixel_bitmap = NULL; /* only hitice needs this */
state->save_item(NAME(state->m_pixel_scroll));
@@ -97,7 +97,7 @@ VIDEO_START( hitice )
state->m_b_fg_color_base = 0x80; /* hitice also uses this for the pixel_bitmap */
- state->m_pixel_bitmap = auto_bitmap_alloc(machine, 1024, 512, machine.primary_screen->format());
+ state->m_pixel_bitmap = auto_bitmap_ind16_alloc(machine, 1024, 512);
state->save_item(NAME(*state->m_pixel_bitmap));
}
@@ -113,7 +113,7 @@ VIDEO_START( realpunc )
{
taitob_state *state = machine.driver_data<taitob_state>();
- state->m_realpunc_bitmap = auto_bitmap_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height(), BITMAP_FORMAT_INDEXED16);
+ state->m_realpunc_bitmap = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
VIDEO_START_CALL(taitob_color_order0);
}
@@ -141,7 +141,7 @@ WRITE16_HANDLER( tc0180vcu_framebuffer_word_w )
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* Sprite format: (16 bytes per sprite)
offs: bits:
@@ -270,7 +270,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-static void draw_framebuffer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_framebuffer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
taitob_state *state = machine.driver_data<taitob_state>();
rectangle myclip = cliprect;
@@ -375,7 +375,7 @@ g_profiler.start(PROFILER_USER1);
g_profiler.stop();
}
-SCREEN_UPDATE( taitob )
+SCREEN_UPDATE_IND16( taitob )
{
taitob_state *state = screen.machine().driver_data<taitob_state>();
UINT8 video_control = tc0180vcu_get_videoctrl(state->m_tc0180vcu, 0);
@@ -411,7 +411,7 @@ SCREEN_UPDATE( taitob )
-SCREEN_UPDATE( realpunc )
+SCREEN_UPDATE_RGB32( realpunc )
{
taitob_state *state = screen.machine().driver_data<taitob_state>();
const rgb_t *palette = palette_entry_list_adjusted(screen.machine().palette);
diff --git a/src/mame/video/taito_f2.c b/src/mame/video/taito_f2.c
index 7b2d5a61ef2..481da2f0c30 100644
--- a/src/mame/video/taito_f2.c
+++ b/src/mame/video/taito_f2.c
@@ -286,13 +286,13 @@ WRITE16_HANDLER( koshien_spritebank_w )
state->m_spritebank_buffered[7] = state->m_spritebank_buffered[6] + 0x400;
}
-static void taito_f2_tc360_spritemixdraw( running_machine &machine, bitmap_t &dest_bmp, const rectangle &clip, const gfx_element *gfx,
+static void taito_f2_tc360_spritemixdraw( running_machine &machine, bitmap_ind16 &dest_bmp, const rectangle &clip, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, int scalex, int scaley )
{
taitof2_state *state = machine.driver_data<taitof2_state>();
int pal_base = gfx->color_base + gfx->color_granularity * (color % gfx->total_colors);
const UINT8 *source_base = gfx_element_get_data(gfx, code % gfx->total_elements);
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
int sprite_screen_height = (scaley * gfx->height + 0x8000) >> 16;
int sprite_screen_width = (scalex * gfx->width + 0x8000) >> 16;
@@ -432,7 +432,7 @@ static void taito_f2_tc360_spritemixdraw( running_machine &machine, bitmap_t &de
}
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int *primasks, int uses_tc360_mixer )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks, int uses_tc360_mixer )
{
/*
Sprite format:
@@ -976,7 +976,7 @@ SCREEN_EOF( taitof2_partial_buffer_delayed_qzchikyu )
/* SSI */
-SCREEN_UPDATE( taitof2_ssi )
+SCREEN_UPDATE_IND16( taitof2_ssi )
{
taitof2_handle_sprite_buffering(screen.machine());
@@ -989,7 +989,7 @@ SCREEN_UPDATE( taitof2_ssi )
}
-SCREEN_UPDATE( taitof2_yesnoj )
+SCREEN_UPDATE_IND16( taitof2_yesnoj )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
@@ -1007,7 +1007,7 @@ SCREEN_UPDATE( taitof2_yesnoj )
}
-SCREEN_UPDATE( taitof2 )
+SCREEN_UPDATE_IND16( taitof2 )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
@@ -1025,7 +1025,7 @@ SCREEN_UPDATE( taitof2 )
}
-SCREEN_UPDATE( taitof2_pri )
+SCREEN_UPDATE_IND16( taitof2_pri )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
int layer[3];
@@ -1061,7 +1061,7 @@ SCREEN_UPDATE( taitof2_pri )
-static void draw_roz_layer( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 priority)
+static void draw_roz_layer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 priority)
{
taitof2_state *state = machine.driver_data<taitof2_state>();
@@ -1072,7 +1072,7 @@ static void draw_roz_layer( running_machine &machine, bitmap_t &bitmap, const re
tc0430grw_zoom_draw(state->m_tc0430grw, bitmap, cliprect, state->m_pivot_xdisp, state->m_pivot_ydisp, priority);
}
-SCREEN_UPDATE( taitof2_pri_roz )
+SCREEN_UPDATE_IND16( taitof2_pri_roz )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
int tilepri[3];
@@ -1141,7 +1141,7 @@ SCREEN_UPDATE( taitof2_pri_roz )
/* Thunderfox */
-SCREEN_UPDATE( taitof2_thundfox )
+SCREEN_UPDATE_IND16( taitof2_thundfox )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
int tilepri[2][3];
@@ -1278,7 +1278,7 @@ and it changes these (and the sprite pri settings) a lot.
********************************************************************/
-SCREEN_UPDATE( taitof2_metalb )
+SCREEN_UPDATE_IND16( taitof2_metalb )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
UINT8 layer[5], invlayer[4];
@@ -1329,7 +1329,7 @@ SCREEN_UPDATE( taitof2_metalb )
/* Deadconx, Footchmp */
-SCREEN_UPDATE( taitof2_deadconx )
+SCREEN_UPDATE_IND16( taitof2_deadconx )
{
taitof2_state *state = screen.machine().driver_data<taitof2_state>();
UINT8 layer[5];
diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c
index 27581713157..fbceb5773d9 100644
--- a/src/mame/video/taito_f3.c
+++ b/src/mame/video/taito_f3.c
@@ -326,7 +326,7 @@ static void init_alpha_blend_func(running_machine &machine);
/******************************************************************************/
-static void print_debug_info(running_machine &machine, bitmap_t &bitmap)
+static void print_debug_info(running_machine &machine, bitmap_rgb32 &bitmap)
{
taito_f3_state *state = machine.driver_data<taito_f3_state>();
UINT16 *f3_line_ram = state->m_f3_line_ram;
@@ -563,7 +563,6 @@ VIDEO_START( f3 )
state->m_spritelist=0;
state->m_spriteram16_buffered=0;
state->m_pf_line_inf=0;
- state->m_pri_alp_bitmap=0;
state->m_tile_opaque_sp=0;
/* Setup individual game */
@@ -647,7 +646,7 @@ VIDEO_START( f3 )
state->m_sa_line_inf = auto_alloc_array(machine, struct f3_spritealpha_line_inf, 1);
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_pri_alp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED8 );
+ state->m_pri_alp_bitmap.allocate(width, height);
state->m_tile_opaque_sp = auto_alloc_array(machine, UINT8, machine.gfx[2]->total_elements);
for (i=0; i<8; i++)
state->m_tile_opaque_pf[i] = auto_alloc_array(machine, UINT8, machine.gfx[1]->total_elements);
@@ -1437,7 +1436,7 @@ static void init_alpha_blend_func(running_machine &machine)
/*============================================================================*/
INLINE void draw_scanlines(running_machine &machine,
- bitmap_t &bitmap,int xsize,INT16 *draw_line_num,
+ bitmap_rgb32 &bitmap,int xsize,INT16 *draw_line_num,
const struct f3_playfield_line_inf **line_t,
const int *sprite,
UINT32 orient,
@@ -1469,7 +1468,7 @@ INLINE void draw_scanlines(running_machine &machine,
yadv = -yadv;
}
- dstp0 = &state->m_pri_alp_bitmap->pix8(ty, x);
+ dstp0 = &state->m_pri_alp_bitmap.pix8(ty, x);
state->m_pdest_2a = state->m_f3_alpha_level_2ad ? 0x10 : 0;
state->m_pdest_2b = state->m_f3_alpha_level_2bd ? 0x20 : 0;
@@ -2009,8 +2008,8 @@ static void get_line_ram_info(running_machine &machine, tilemap_t *tmap, int sx,
}
/* set pixmap pointer */
- bitmap_t &srcbitmap = tilemap_get_pixmap(tmap);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(tmap);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tmap);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(tmap);
if(line_t->alpha_mode[y]!=0)
{
@@ -2124,10 +2123,10 @@ static void get_vram_info(running_machine &machine, tilemap_t *vram_tilemap, til
sx&=0x1ff;
/* set pixmap pointer */
- bitmap_t &srcbitmap_pixel = tilemap_get_pixmap(pixel_tilemap);
- bitmap_t &flagsbitmap_pixel = tilemap_get_flagsmap(pixel_tilemap);
- bitmap_t &srcbitmap_vram = tilemap_get_pixmap(vram_tilemap);
- bitmap_t &flagsbitmap_vram = tilemap_get_flagsmap(vram_tilemap);
+ bitmap_ind16 &srcbitmap_pixel = tilemap_get_pixmap(pixel_tilemap);
+ bitmap_ind8 &flagsbitmap_pixel = tilemap_get_flagsmap(pixel_tilemap);
+ bitmap_ind16 &srcbitmap_vram = tilemap_get_pixmap(vram_tilemap);
+ bitmap_ind8 &flagsbitmap_vram = tilemap_get_flagsmap(vram_tilemap);
y=y_start;
while(y!=y_end)
@@ -2164,7 +2163,7 @@ static void get_vram_info(running_machine &machine, tilemap_t *vram_tilemap, til
/******************************************************************************/
-static void scanline_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void scanline_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
taito_f3_state *state = machine.driver_data<taito_f3_state>();
int i,j,y,ys,ye;
@@ -2593,7 +2592,7 @@ static void scanline_draw(running_machine &machine, bitmap_t &bitmap, const rect
pri++;
INLINE void f3_drawgfx(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
int code,
int color,
int flipx,int flipy,
@@ -2678,7 +2677,7 @@ INLINE void f3_drawgfx(
int x=(ex-sx-1)|(state->m_tile_opaque_sp[code % gfx->total_elements]<<4);
const UINT8 *source0 = code_base + y_index * 16 + x_index_base;
UINT32 *dest0 = &dest_bmp.pix32(sy, sx);
- UINT8 *pri0 = &state->m_pri_alp_bitmap->pix8(sy, sx);
+ UINT8 *pri0 = &state->m_pri_alp_bitmap.pix8(sy, sx);
int yadv = dest_bmp.rowpixels();
dy=dy*16;
while(1)
@@ -2742,7 +2741,7 @@ INLINE void f3_drawgfx(
INLINE void f3_drawgfxzoom(
- bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+ bitmap_rgb32 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
int code,
int color,
int flipx,int flipy,
@@ -2829,7 +2828,7 @@ INLINE void f3_drawgfxzoom(
{
const UINT8 *source = code_base + (y_index>>16) * 16;
UINT32 *dest = &dest_bmp.pix32(y);
- UINT8 *pri = &state->m_pri_alp_bitmap->pix8(y);
+ UINT8 *pri = &state->m_pri_alp_bitmap.pix8(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -3130,7 +3129,7 @@ static void get_sprite_info(running_machine &machine, const UINT16 *spriteram16_
#undef CALC_ZOOM
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
taito_f3_state *state = machine.driver_data<taito_f3_state>();
const struct tempsprite *sprite_ptr;
@@ -3172,7 +3171,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/******************************************************************************/
-SCREEN_UPDATE( f3 )
+SCREEN_UPDATE_RGB32( f3 )
{
taito_f3_state *state = screen.machine().driver_data<taito_f3_state>();
UINT32 sy_fix[5],sx_fix[5];
@@ -3211,7 +3210,7 @@ SCREEN_UPDATE( f3 )
sy_fix[4]=-sy_fix[4];
}
- state->m_pri_alp_bitmap->fill(0, cliprect);
+ state->m_pri_alp_bitmap.fill(0, cliprect);
/* sprites */
if (state->m_sprite_lag==0)
diff --git a/src/mame/video/taito_h.c b/src/mame/video/taito_h.c
index d91f4ece257..b9cef286dda 100644
--- a/src/mame/video/taito_h.c
+++ b/src/mame/video/taito_h.c
@@ -70,7 +70,7 @@ static const int zoomy_conv_table[] =
Screen refresh
***************************************************************************/
-static void syvalion_draw_sprites( running_machine &machine,bitmap_t &bitmap, const rectangle &cliprect )
+static void syvalion_draw_sprites( running_machine &machine,bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
@@ -163,7 +163,7 @@ static void syvalion_draw_sprites( running_machine &machine,bitmap_t &bitmap, co
}
}
-static void recordbr_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void recordbr_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
@@ -275,7 +275,7 @@ static void recordbr_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void dleague_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void dleague_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
@@ -391,7 +391,7 @@ static void taitoh_log_vram(running_machine &machine)
/**************************************************************************/
-SCREEN_UPDATE( syvalion )
+SCREEN_UPDATE_IND16( syvalion )
{
taitoh_state *state = screen.machine().driver_data<taitoh_state>();
@@ -410,7 +410,7 @@ SCREEN_UPDATE( syvalion )
}
-SCREEN_UPDATE( recordbr )
+SCREEN_UPDATE_IND16( recordbr )
{
taitoh_state *state = screen.machine().driver_data<taitoh_state>();
@@ -441,7 +441,7 @@ SCREEN_UPDATE( recordbr )
}
-SCREEN_UPDATE( dleague )
+SCREEN_UPDATE_IND16( dleague )
{
taitoh_state *state = screen.machine().driver_data<taitoh_state>();
diff --git a/src/mame/video/taito_l.c b/src/mame/video/taito_l.c
index 9fbe7d9ce1d..2da67756cde 100644
--- a/src/mame/video/taito_l.c
+++ b/src/mame/video/taito_l.c
@@ -243,7 +243,7 @@ void taitol_obj1b_m( running_machine &machine, int offset )
plgirs2 bullets and raimais big bosses.
*/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
taitol_state *state = machine.driver_data<taitol_state>();
int offs;
@@ -284,7 +284,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
-SCREEN_UPDATE( taitol )
+SCREEN_UPDATE_IND16( taitol )
{
taitol_state *state = screen.machine().driver_data<taitol_state>();
int dx, dy;
diff --git a/src/mame/video/taito_o.c b/src/mame/video/taito_o.c
index c6b897a0c63..d20946f3879 100644
--- a/src/mame/video/taito_o.c
+++ b/src/mame/video/taito_o.c
@@ -25,7 +25,7 @@ static const int zoomy_conv_table[] =
};
-static void parentj_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void parentj_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
@@ -138,7 +138,7 @@ static void parentj_draw_sprites( running_machine &machine, bitmap_t &bitmap, co
}
-SCREEN_UPDATE( parentj )
+SCREEN_UPDATE_IND16( parentj )
{
taitoo_state *state = screen.machine().driver_data<taitoo_state>();
diff --git a/src/mame/video/taito_z.c b/src/mame/video/taito_z.c
index 5434c8aeab6..7049007ffd5 100644
--- a/src/mame/video/taito_z.c
+++ b/src/mame/video/taito_z.c
@@ -146,7 +146,7 @@ confirmed
********************************************************/
-static void contcirc_draw_sprites_16x8( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void contcirc_draw_sprites_16x8( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -241,7 +241,7 @@ static void contcirc_draw_sprites_16x8( running_machine &machine, bitmap_t &bitm
-static void chasehq_draw_sprites_16x16( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void chasehq_draw_sprites_16x16( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -427,7 +427,7 @@ static void chasehq_draw_sprites_16x16( running_machine &machine, bitmap_t &bitm
-static void bshark_draw_sprites_16x8( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void bshark_draw_sprites_16x8( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -523,7 +523,7 @@ static void bshark_draw_sprites_16x8( running_machine &machine, bitmap_t &bitmap
-static void sci_draw_sprites_16x8( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void sci_draw_sprites_16x8( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -628,7 +628,7 @@ static void sci_draw_sprites_16x8( running_machine &machine, bitmap_t &bitmap, c
-static void aquajack_draw_sprites_16x8(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int y_offs)
+static void aquajack_draw_sprites_16x8(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -723,7 +723,7 @@ static void aquajack_draw_sprites_16x8(running_machine &machine, bitmap_t &bitma
-static void spacegun_draw_sprites_16x8(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,int y_offs)
+static void spacegun_draw_sprites_16x8(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int y_offs)
{
taitoz_state *state = machine.driver_data<taitoz_state>();
UINT16 *spritemap = (UINT16 *)machine.region("user1")->base();
@@ -842,7 +842,7 @@ WRITE16_HANDLER( contcirc_out_w )
}
-SCREEN_UPDATE( contcirc )
+SCREEN_UPDATE_IND16( contcirc )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -869,7 +869,7 @@ SCREEN_UPDATE( contcirc )
/* Nightstr and ChaseHQ */
-SCREEN_UPDATE( chasehq )
+SCREEN_UPDATE_IND16( chasehq )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -895,7 +895,7 @@ SCREEN_UPDATE( chasehq )
}
-SCREEN_UPDATE( bshark )
+SCREEN_UPDATE_IND16( bshark )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -921,7 +921,7 @@ SCREEN_UPDATE( bshark )
}
-SCREEN_UPDATE( sci )
+SCREEN_UPDATE_IND16( sci )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -947,7 +947,7 @@ SCREEN_UPDATE( sci )
}
-SCREEN_UPDATE( aquajack )
+SCREEN_UPDATE_IND16( aquajack )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -973,7 +973,7 @@ SCREEN_UPDATE( aquajack )
}
-SCREEN_UPDATE( spacegun )
+SCREEN_UPDATE_IND16( spacegun )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[3];
@@ -999,7 +999,7 @@ SCREEN_UPDATE( spacegun )
}
-SCREEN_UPDATE( dblaxle )
+SCREEN_UPDATE_IND16( dblaxle )
{
taitoz_state *state = screen.machine().driver_data<taitoz_state>();
UINT8 layer[5];
diff --git a/src/mame/video/taitoair.c b/src/mame/video/taitoair.c
index 2ce4030bb37..64f89e5eaf3 100644
--- a/src/mame/video/taitoair.c
+++ b/src/mame/video/taitoair.c
@@ -69,7 +69,7 @@ static const int zoomy_conv_table[] =
Screen refresh
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
@@ -182,7 +182,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-static void fill_slope( bitmap_t &bitmap, const rectangle &cliprect, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2 )
+static void fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2 )
{
if (y1 > cliprect.max_y)
return;
@@ -257,7 +257,7 @@ static void fill_slope( bitmap_t &bitmap, const rectangle &cliprect, int color,
*nx2 = x2;
}
-static void fill_poly( bitmap_t &bitmap, const rectangle &cliprect, const struct taitoair_poly *q )
+static void fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q )
{
INT32 sl1, sl2, cury, limy, x1, x2;
int pmin, pmax, i, ps1, ps2;
@@ -566,12 +566,12 @@ VIDEO_START( taitoair )
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_framebuffer[0] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_framebuffer[1] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- //state->m_buffer3d = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_framebuffer[0] = auto_bitmap_ind16_alloc(machine, width, height);
+ state->m_framebuffer[1] = auto_bitmap_ind16_alloc(machine, width, height);
+ //state->m_buffer3d = auto_bitmap_ind16_alloc(machine, width, height);
}
-SCREEN_UPDATE( taitoair )
+SCREEN_UPDATE_IND16( taitoair )
{
taitoair_state *state = screen.machine().driver_data<taitoair_state>();
diff --git a/src/mame/video/taitoic.c b/src/mame/video/taitoic.c
index f1328c6c510..edf56f226e1 100644
--- a/src/mame/video/taitoic.c
+++ b/src/mame/video/taitoic.c
@@ -501,8 +501,8 @@ The data bus is 16 bits wide.
/* These scanline drawing routines lifted from Taito F3: optimise / merge ? */
-INLINE void taitoic_drawscanline( bitmap_t &bitmap, const rectangle &cliprect, int x, int y,
- const UINT16 *src, int transparent, UINT32 orient, bitmap_t &priority, int pri)
+INLINE void taitoic_drawscanline( bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y,
+ const UINT16 *src, int transparent, UINT32 orient, bitmap_ind8 &priority, int pri)
{
UINT16 *dsti = &bitmap.pix16(y, x);
UINT8 *dstp = &priority.pix8(y, x);
@@ -834,7 +834,7 @@ static UINT16 topspeed_get_road_pixel_color( UINT16 pixel, UINT16 color )
}
-static void topspeed_custom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags,
+static void topspeed_custom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags,
UINT32 priority, UINT16 *color_ctrl_ram )
{
pc080sn_state *pc080sn = pc080sn_get_safe_token(device);
@@ -842,8 +842,8 @@ static void topspeed_custom_draw( device_t *device, bitmap_t &bitmap, const rect
UINT8 *tsrc;
UINT16 scanline[1024]; /* won't be called by a wide-screen game, but just in case... */
- bitmap_t &srcbitmap = tilemap_get_pixmap(pc080sn->tilemap[layer]);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(pc080sn->tilemap[layer]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(pc080sn->tilemap[layer]);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(pc080sn->tilemap[layer]);
UINT16 a, color;
int sx, x_index;
@@ -928,13 +928,13 @@ static void topspeed_custom_draw( device_t *device, bitmap_t &bitmap, const rect
while ((!machine_flip && y <= max_y) || (machine_flip && y >= min_y));
}
-void pc080sn_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+void pc080sn_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
pc080sn_state *pc080sn = pc080sn_get_safe_token(device);
tilemap_draw(bitmap, cliprect, pc080sn->tilemap[layer], flags, priority);
}
-void pc080sn_tilemap_draw_offset( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, int xoffs, int yoffs )
+void pc080sn_tilemap_draw_offset( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, int xoffs, int yoffs )
{
pc080sn_state *pc080sn = pc080sn_get_safe_token(device);
int basedx = -16 - pc080sn->xoffs;
@@ -949,7 +949,7 @@ void pc080sn_tilemap_draw_offset( device_t *device, bitmap_t &bitmap, const rect
tilemap_set_scrolldy(pc080sn->tilemap[layer], basedy, basedyflip);
}
-void pc080sn_tilemap_draw_special( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, UINT16 *ram )
+void pc080sn_tilemap_draw_special( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, UINT16 *ram )
{
topspeed_custom_draw(device, bitmap, cliprect, layer, flags, priority, ram);
}
@@ -1122,7 +1122,7 @@ void pc090oj_eof_callback( device_t *device )
}
-void pc090oj_draw_sprites( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int pri_type )
+void pc090oj_draw_sprites( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type )
{
pc090oj_state *pc090oj = pc090oj_get_safe_token(device);
int offs, priority = 0;
@@ -1528,7 +1528,7 @@ void tc0080vco_tilemap_update( device_t *device )
/* NB: orientation_flipx code in following routine has not been tested */
-static void tc0080vco_bg0_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+static void tc0080vco_bg0_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
{
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
UINT16 zoom = tc0080vco->scroll_ram[6];
@@ -1546,8 +1546,8 @@ static void tc0080vco_bg0_tilemap_draw( device_t *device, bitmap_t &bitmap, cons
UINT16 *dst16, *src16;
UINT8 *tsrc;
UINT16 scanline[512];
- bitmap_t &srcbitmap = tilemap_get_pixmap(tc0080vco->tilemap[0]);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(tc0080vco->tilemap[0]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tc0080vco->tilemap[0]);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(tc0080vco->tilemap[0]);
int sx, zoomx, zoomy;
int dx, ex, dy, ey;
@@ -1681,7 +1681,7 @@ do \
} \
while (0) \
-static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
+static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority )
{
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
UINT8 layer = 1;
@@ -1705,7 +1705,7 @@ static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_t &bitmap, cons
int sx,sy;
/* shouldn't we set no_clip before doing this (see TC0480SCP) ? */
- bitmap_t &srcbitmap = tilemap_get_pixmap(tc0080vco->tilemap[layer]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tc0080vco->tilemap[layer]);
if (zoomx < 63)
{
@@ -1746,8 +1746,8 @@ static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_t &bitmap, cons
}
{
- bitmap_t &dest = bitmap;
- bitmap_t &src = srcbitmap;
+ bitmap_ind16 &dest = bitmap;
+ bitmap_ind16 &src = srcbitmap;
INT32 startx = sx;
INT32 starty = sy;
INT32 incxx = zx;
@@ -1756,7 +1756,7 @@ static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_t &bitmap, cons
INT32 incyy = zy;
int wraparound = 0;
UINT32 privalue = priority;
- bitmap_t &priority = device->machine().priority_bitmap;
+ bitmap_ind8 &priority = device->machine().priority_bitmap;
if (dest.bpp() == 16)
COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANS0_SET_PRIORITY, UINT8);
@@ -1767,7 +1767,7 @@ static void tc0080vco_bg1_tilemap_draw( device_t *device, bitmap_t &bitmap, cons
}
-void tc0080vco_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+void tc0080vco_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
int disable = 0x00; /* possibly layer disable bits do exist ?? */
@@ -2326,10 +2326,10 @@ void tc0100scn_tilemap_update( device_t *device )
tilemap_set_scrollx(tc0100scn->tilemap[1][tc0100scn->dblwidth], (j + tc0100scn->fgscrolly) & 0x1ff, tc0100scn->fgscrollx - tc0100scn->fgscroll_ram[j]);
}
-static void tc0100scn_tilemap_draw_fg( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, UINT32 priority )
+static void tc0100scn_tilemap_draw_fg( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, UINT32 priority )
{
tc0100scn_state *tc0100scn = tc0100scn_get_safe_token(device);
- const bitmap_t &src_bitmap = tilemap_get_pixmap(tmap);
+ const bitmap_ind16 &src_bitmap = tilemap_get_pixmap(tmap);
int width_mask, height_mask, x, y, p;
int column_offset, src_x = 0, src_y = 0;
int scrollx_delta = - tilemap_get_scrolldx(tmap);
@@ -2372,7 +2372,7 @@ static void tc0100scn_tilemap_draw_fg( device_t *device, bitmap_t &bitmap, const
}
}
-int tc0100scn_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+int tc0100scn_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
tc0100scn_state *tc0100scn = tc0100scn_get_safe_token(device);
int disable = tc0100scn->ctrl[6] & 0xf7;
@@ -2633,7 +2633,7 @@ void tc0430grw_tilemap_update( device_t *device, int base_color )
tc0280grd_tilemap_update(device, base_color);
}
-static void zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority, int xmultiply )
+static void zoom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority, int xmultiply )
{
tc0280grd_state *tc0280grd = tc0280grd_get_safe_token(device);
UINT32 startx, starty;
@@ -2668,12 +2668,12 @@ static void zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &clip
0, priority);
}
-void tc0280grd_zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority )
+void tc0280grd_zoom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority )
{
zoom_draw(device, bitmap, cliprect, xoffset, yoffset, priority, 2);
}
-void tc0430grw_zoom_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority )
+void tc0430grw_zoom_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority )
{
zoom_draw(device, bitmap, cliprect, xoffset, yoffset, priority, 1);
}
@@ -3236,7 +3236,7 @@ Historical Issues
**********************************************************************/
-static void tc0480scp_bg01_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+static void tc0480scp_bg01_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
/* X-axis zoom offers expansion only: 0 = no zoom, 0xff = max
Y-axis zoom offers expansion/compression: 0x7f = no zoom, 0xff = max
@@ -3257,8 +3257,8 @@ static void tc0480scp_bg01_draw( device_t *device, bitmap_t &bitmap, const recta
UINT8 *tsrc;
UINT16 scanline[512];
UINT32 sx;
- bitmap_t &srcbitmap = tilemap_get_pixmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
int flip = tc0480scp->pri_reg & 0x40;
int i, y, y_index, src_y_index, row_index;
int x_index, x_step;
@@ -3385,11 +3385,11 @@ flipscreen.
****************************************************************/
-static void tc0480scp_bg23_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+static void tc0480scp_bg23_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
tc0480scp_state *tc0480scp = tc0480scp_get_safe_token(device);
- bitmap_t &srcbitmap = tilemap_get_pixmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(tc0480scp->tilemap[layer][tc0480scp->dblwidth]);
UINT16 *dst16, *src16;
UINT8 *tsrc;
@@ -3507,7 +3507,7 @@ static void tc0480scp_bg23_draw( device_t *device, bitmap_t &bitmap, const recta
}
-void tc0480scp_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+void tc0480scp_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
tc0480scp_state *tc0480scp = tc0480scp_get_safe_token(device);
@@ -3951,7 +3951,7 @@ lookup table from rom for the TaitoZ sprites.
******************************************************************************/
-void tc0150rod_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority )
+void tc0150rod_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority )
{
tc0150rod_state *tc0150rod = tc0150rod_get_safe_token(device);
@@ -5014,7 +5014,7 @@ WRITE16_DEVICE_HANDLER( tc0180vcu_word_w )
tilemap_mark_tile_dirty(tc0180vcu->tilemap[2], offset & 0x7ff);
}
-void tc0180vcu_tilemap_draw( device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int tmap_num, int plane )
+void tc0180vcu_tilemap_draw( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, int plane )
{
tc0180vcu_state *tc0180vcu = tc0180vcu_get_safe_token(device);
diff --git a/src/mame/video/taitoic.h b/src/mame/video/taitoic.h
index 46a77a45c2f..e5f5f878e01 100644
--- a/src/mame/video/taitoic.h
+++ b/src/mame/video/taitoic.h
@@ -180,11 +180,11 @@ WRITE16_DEVICE_HANDLER( pc080sn_ctrl_word_w );
void pc080sn_set_scroll(device_t *device, int tilemap_num, int scrollx, int scrolly);
void pc080sn_set_trans_pen(device_t *device, int tilemap_num, int pen);
void pc080sn_tilemap_update(device_t *device);
-void pc080sn_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
-void pc080sn_tilemap_draw_offset(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, int xoffs, int yoffs);
+void pc080sn_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
+void pc080sn_tilemap_draw_offset(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, int xoffs, int yoffs);
/* For Topspeed */
-void pc080sn_tilemap_draw_special(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, UINT16 *ram);
+void pc080sn_tilemap_draw_special(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority, UINT16 *ram);
/** PC090OJ **/
@@ -193,7 +193,7 @@ WRITE16_DEVICE_HANDLER( pc090oj_word_w );
void pc090oj_set_sprite_ctrl(device_t *device, UINT16 sprctrl);
void pc090oj_eof_callback(device_t *device);
-void pc090oj_draw_sprites(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int pri_type);
+void pc090oj_draw_sprites(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type);
/** TC0080VCO **/
@@ -201,7 +201,7 @@ READ16_DEVICE_HANDLER( tc0080vco_word_r );
WRITE16_DEVICE_HANDLER( tc0080vco_word_w );
void tc0080vco_tilemap_update(device_t *device);
-void tc0080vco_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
+void tc0080vco_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
READ16_DEVICE_HANDLER( tc0080vco_cram_0_r );
READ16_DEVICE_HANDLER( tc0080vco_cram_1_r );
@@ -239,7 +239,7 @@ READ32_DEVICE_HANDLER( tc0100scn_ctrl_long_r );
WRITE32_DEVICE_HANDLER( tc0100scn_ctrl_long_w );
void tc0100scn_tilemap_update(device_t *device);
-int tc0100scn_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
+int tc0100scn_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
/* returns 0 or 1 depending on the lowest priority tilemap set in the internal
register. Use this function to draw tilemaps in the correct order. */
@@ -251,13 +251,13 @@ READ16_DEVICE_HANDLER( tc0280grd_word_r );
WRITE16_DEVICE_HANDLER( tc0280grd_word_w );
WRITE16_DEVICE_HANDLER( tc0280grd_ctrl_word_w );
void tc0280grd_tilemap_update(device_t *device, int base_color);
-void tc0280grd_zoom_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority);
+void tc0280grd_zoom_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority);
READ16_DEVICE_HANDLER( tc0430grw_word_r );
WRITE16_DEVICE_HANDLER( tc0430grw_word_w );
WRITE16_DEVICE_HANDLER( tc0430grw_ctrl_word_w );
void tc0430grw_tilemap_update(device_t *device, int base_color);
-void tc0430grw_zoom_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority);
+void tc0430grw_zoom_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, UINT32 priority);
/** TC0360PRI **/
@@ -282,7 +282,7 @@ READ32_DEVICE_HANDLER( tc0480scp_ctrl_long_r );
WRITE32_DEVICE_HANDLER( tc0480scp_ctrl_long_w );
void tc0480scp_tilemap_update(device_t *device);
-void tc0480scp_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
+void tc0480scp_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
/* Returns the priority order of the bg tilemaps set in the internal
register. The order in which the four layers should be drawn is
@@ -296,7 +296,7 @@ READ8_DEVICE_HANDLER( tc0480scp_pri_reg_r );
/** TC0150ROD **/
READ16_DEVICE_HANDLER( tc0150rod_word_r );
WRITE16_DEVICE_HANDLER( tc0150rod_word_w );
-void tc0150rod_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority);
+void tc0150rod_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority);
/** TC0110PCR **/
@@ -317,4 +317,4 @@ READ16_DEVICE_HANDLER( tc0180vcu_scroll_r );
WRITE16_DEVICE_HANDLER( tc0180vcu_scroll_w );
READ16_DEVICE_HANDLER( tc0180vcu_word_r );
WRITE16_DEVICE_HANDLER( tc0180vcu_word_w );
-void tc0180vcu_tilemap_draw(device_t *device, bitmap_t &bitmap, const rectangle &cliprect, int tmap_num, int plane);
+void tc0180vcu_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, int plane);
diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c
index 1e6bb1c36c2..8ed296d30aa 100644
--- a/src/mame/video/taitojc.c
+++ b/src/mame/video/taitojc.c
@@ -5,7 +5,7 @@
typedef struct _poly_extra_data poly_extra_data;
struct _poly_extra_data
{
- bitmap_t *zbuffer;
+ bitmap_ind16 *zbuffer;
UINT8 *texture;
int tex_base_x;
@@ -97,7 +97,7 @@ WRITE32_HANDLER(taitojc_char_w)
*/
-static void draw_object(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT32 w1, UINT32 w2, UINT8 bank_type)
+static void draw_object(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 w1, UINT32 w2, UINT8 bank_type)
{
taitojc_state *state = machine.driver_data<taitojc_state>();
int x, y, width, height, palette;
@@ -285,14 +285,14 @@ VIDEO_START( taitojc )
state->m_texture = auto_alloc_array(machine, UINT8, 0x400000);
- state->m_framebuffer = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_framebuffer.allocate(machine.primary_screen->width(), machine.primary_screen->height());
width = machine.primary_screen->width();
height = machine.primary_screen->height();
- state->m_zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_zbuffer.allocate(width, height);
}
-static void draw_object_bank(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 bank_type, UINT8 pri)
+static void draw_object_bank(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 bank_type, UINT8 pri)
{
taitojc_state *state = machine.driver_data<taitojc_state>();
UINT16 start_offs;
@@ -319,7 +319,7 @@ static void draw_object_bank(running_machine &machine, bitmap_t &bitmap, const r
}
//static int tick = 0;
-SCREEN_UPDATE( taitojc )
+SCREEN_UPDATE_IND16( taitojc )
{
taitojc_state *state = screen.machine().driver_data<taitojc_state>();
@@ -350,7 +350,7 @@ SCREEN_UPDATE( taitojc )
draw_object_bank(screen.machine(), bitmap, cliprect, 1, 0);
draw_object_bank(screen.machine(), bitmap, cliprect, 2, 0);
- copybitmap_trans(bitmap, *state->m_framebuffer, 0, 0, 0, 0, cliprect, 0);
+ copybitmap_trans(bitmap, state->m_framebuffer, 0, 0, 0, 0, cliprect, 0);
draw_object_bank(screen.machine(), bitmap, cliprect, 0, 1);
draw_object_bank(screen.machine(), bitmap, cliprect, 1, 1);
@@ -396,7 +396,7 @@ SCREEN_UPDATE( taitojc )
static void render_solid_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
float z = extent->param[0].start;
int color = extent->param[1].start;
float dz = extent->param[0].dpdx;
@@ -429,7 +429,7 @@ static void render_solid_scan(void *dest, INT32 scanline, const poly_extent *ext
static void render_shade_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
float z = extent->param[0].start;
float color = extent->param[1].start;
float dz = extent->param[0].dpdx;
@@ -465,7 +465,7 @@ static void render_shade_scan(void *dest, INT32 scanline, const poly_extent *ext
static void render_texture_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- bitmap_t *destmap = (bitmap_t *)dest;
+ bitmap_ind16 *destmap = (bitmap_ind16 *)dest;
float z = extent->param[0].start;
float u = extent->param[1].start;
float v = extent->param[2].start;
@@ -573,7 +573,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
texbase = polygon_fifo[ptr++];
- extra->zbuffer = state->m_zbuffer;
+ extra->zbuffer = &state->m_zbuffer;
extra->texture = state->m_texture;
extra->tex_base_x = ((texbase >> 0) & 0xff) << 4;
extra->tex_base_y = ((texbase >> 8) & 0xff) << 4;
@@ -593,7 +593,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
{
- poly_render_triangle(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_texture_scan, 4, &vert[0], &vert[1], &vert[2]);
+ poly_render_triangle(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_texture_scan, 4, &vert[0], &vert[1], &vert[2]);
}
break;
}
@@ -627,7 +627,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
*/
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(state->m_poly);
- extra->zbuffer = state->m_zbuffer;
+ extra->zbuffer = &state->m_zbuffer;
for (i=0; i < 4; i++)
{
@@ -644,11 +644,11 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
vert[2].p[1] == vert[3].p[1])
{
// optimization: all colours the same -> render solid
- poly_render_quad(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_solid_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_solid_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
}
else
{
- poly_render_quad(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_shade_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_shade_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
}
}
break;
@@ -696,7 +696,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
texbase = polygon_fifo[ptr++];
- extra->zbuffer = state->m_zbuffer;
+ extra->zbuffer = &state->m_zbuffer;
extra->texture = state->m_texture;
extra->tex_base_x = ((texbase >> 0) & 0xff) << 4;
extra->tex_base_y = ((texbase >> 8) & 0xff) << 4;
@@ -716,7 +716,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
{
- poly_render_quad(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_texture_scan, 4, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_texture_scan, 4, &vert[0], &vert[1], &vert[2], &vert[3]);
}
break;
}
@@ -749,7 +749,7 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
{
poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(state->m_poly);
- extra->zbuffer = state->m_zbuffer;
+ extra->zbuffer = &state->m_zbuffer;
for (i=0; i < 3; i++)
{
@@ -765,11 +765,11 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
vert[1].p[1] == vert[2].p[1])
{
// optimization: all colours the same -> render solid
- poly_render_triangle(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_solid_scan, 2, &vert[0], &vert[1], &vert[2]);
+ poly_render_triangle(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_solid_scan, 2, &vert[0], &vert[1], &vert[2]);
}
else
{
- poly_render_triangle(state->m_poly, state->m_framebuffer, machine.primary_screen->visible_area(), render_shade_scan, 2, &vert[0], &vert[1], &vert[2]);
+ poly_render_triangle(state->m_poly, &state->m_framebuffer, machine.primary_screen->visible_area(), render_shade_scan, 2, &vert[0], &vert[1], &vert[2]);
}
}
break;
@@ -794,6 +794,6 @@ void taitojc_clear_frame(running_machine &machine)
cliprect.max_x = machine.primary_screen->width() - 1;
cliprect.max_y = machine.primary_screen->height() - 1;
- state->m_framebuffer->fill(0, cliprect);
- state->m_zbuffer->fill(0xffff, cliprect);
+ state->m_framebuffer.fill(0, cliprect);
+ state->m_zbuffer.fill(0xffff, cliprect);
}
diff --git a/src/mame/video/taitosj.c b/src/mame/video/taitosj.c
index 1fce1144a70..c2852698324 100644
--- a/src/mame/video/taitosj.c
+++ b/src/mame/video/taitosj.c
@@ -21,7 +21,7 @@
static const int layer_enable_mask[3] = { 0x10, 0x20, 0x40 };
-typedef void (*copy_layer_func_t)(running_machine &, bitmap_t &,
+typedef void (*copy_layer_func_t)(running_machine &, bitmap_ind16 &,
const rectangle &, int, int *, rectangle *);
@@ -176,16 +176,16 @@ VIDEO_START( taitosj )
taitosj_state *state = machine.driver_data<taitosj_state>();
int i;
- state->m_sprite_layer_collbitmap1 = auto_bitmap_alloc(machine,16,16,machine.primary_screen->format());
+ state->m_sprite_layer_collbitmap1.allocate(16,16);
for (i = 0; i < 3; i++)
{
- state->m_layer_bitmap[i] = machine.primary_screen->alloc_compatible_bitmap();
- state->m_sprite_layer_collbitmap2[i] = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_layer_bitmap[i].allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_sprite_layer_collbitmap2[i].allocate(machine.primary_screen->width(), machine.primary_screen->height());
}
- state->m_sprite_sprite_collbitmap1 = auto_bitmap_alloc(machine,32,32,machine.primary_screen->format());
- state->m_sprite_sprite_collbitmap2 = auto_bitmap_alloc(machine,32,32,machine.primary_screen->format());
+ state->m_sprite_sprite_collbitmap1.allocate(32,32);
+ state->m_sprite_sprite_collbitmap2.allocate(32,32);
gfx_element_set_source(machine.gfx[0], state->m_characterram);
gfx_element_set_source(machine.gfx[1], state->m_characterram);
@@ -313,16 +313,16 @@ static int check_sprite_sprite_bitpattern(running_machine &machine,
}
/* draw the sprites into separate bitmaps and check overlapping region */
- state->m_sprite_layer_collbitmap1->fill(TRANSPARENT_PEN);
- drawgfx_transpen(*state->m_sprite_sprite_collbitmap1, state->m_sprite_sprite_collbitmap1->cliprect(), get_sprite_gfx_element(machine, which1),
+ state->m_sprite_layer_collbitmap1.fill(TRANSPARENT_PEN);
+ drawgfx_transpen(state->m_sprite_sprite_collbitmap1, state->m_sprite_sprite_collbitmap1.cliprect(), get_sprite_gfx_element(machine, which1),
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs1 + 3] & 0x3f,
0,
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs1 + 2] & 0x01,
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs1 + 2] & 0x02,
sx1, sy1, 0);
- state->m_sprite_sprite_collbitmap2->fill(TRANSPARENT_PEN);
- drawgfx_transpen(*state->m_sprite_sprite_collbitmap2, state->m_sprite_sprite_collbitmap2->cliprect(), get_sprite_gfx_element(machine, which2),
+ state->m_sprite_sprite_collbitmap2.fill(TRANSPARENT_PEN);
+ drawgfx_transpen(state->m_sprite_sprite_collbitmap2, state->m_sprite_sprite_collbitmap2.cliprect(), get_sprite_gfx_element(machine, which2),
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs2 + 3] & 0x3f,
0,
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs2 + 2] & 0x01,
@@ -331,8 +331,8 @@ static int check_sprite_sprite_bitpattern(running_machine &machine,
for (y = miny; y < maxy; y++)
for (x = minx; x < maxx; x++)
- if ((state->m_sprite_sprite_collbitmap1->pix16(y, x) != TRANSPARENT_PEN) &&
- (state->m_sprite_sprite_collbitmap2->pix16(y, x) != TRANSPARENT_PEN))
+ if ((state->m_sprite_sprite_collbitmap1.pix16(y, x) != TRANSPARENT_PEN) &&
+ (state->m_sprite_sprite_collbitmap2.pix16(y, x) != TRANSPARENT_PEN))
return 1; /* collided */
return 0;
@@ -470,8 +470,8 @@ static int check_sprite_layer_bitpattern(running_machine &machine, int which, re
int flip_y = (state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs + 2] & 0x02) ^ GLOBAL_FLIP_Y;
/* draw sprite into a bitmap and check if layers collide */
- state->m_sprite_layer_collbitmap1->fill(TRANSPARENT_PEN);
- drawgfx_transpen(*state->m_sprite_layer_collbitmap1, state->m_sprite_layer_collbitmap1->cliprect(),get_sprite_gfx_element(machine, which),
+ state->m_sprite_layer_collbitmap1.fill(TRANSPARENT_PEN);
+ drawgfx_transpen(state->m_sprite_layer_collbitmap1, state->m_sprite_layer_collbitmap1.cliprect(),get_sprite_gfx_element(machine, which),
state->m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs + 3] & 0x3f,
0,
flip_x, flip_y,
@@ -479,15 +479,15 @@ static int check_sprite_layer_bitpattern(running_machine &machine, int which, re
for (y = miny; y < maxy; y++)
for (x = minx; x < maxx; x++)
- if (state->m_sprite_layer_collbitmap1->pix16(y - miny, x - minx) != TRANSPARENT_PEN) /* is there anything to check for ? */
+ if (state->m_sprite_layer_collbitmap1.pix16(y - miny, x - minx) != TRANSPARENT_PEN) /* is there anything to check for ? */
{
- if (check_layer_1 && (state->m_sprite_layer_collbitmap2[0]->pix16(y, x) != TRANSPARENT_PEN))
+ if (check_layer_1 && (state->m_sprite_layer_collbitmap2[0].pix16(y, x) != TRANSPARENT_PEN))
result |= 0x01; /* collided with layer 1 */
- if (check_layer_2 && (state->m_sprite_layer_collbitmap2[1]->pix16(y, x) != TRANSPARENT_PEN))
+ if (check_layer_2 && (state->m_sprite_layer_collbitmap2[1].pix16(y, x) != TRANSPARENT_PEN))
result |= 0x02; /* collided with layer 2 */
- if (check_layer_3 && (state->m_sprite_layer_collbitmap2[2]->pix16(y, x) != TRANSPARENT_PEN))
+ if (check_layer_3 && (state->m_sprite_layer_collbitmap2[2].pix16(y, x) != TRANSPARENT_PEN))
result |= 0x04; /* collided with layer 3 */
}
@@ -519,9 +519,9 @@ static void draw_layers(running_machine &machine)
taitosj_state *state = machine.driver_data<taitosj_state>();
offs_t offs;
- state->m_layer_bitmap[0]->fill(TRANSPARENT_PEN);
- state->m_layer_bitmap[1]->fill(TRANSPARENT_PEN);
- state->m_layer_bitmap[2]->fill(TRANSPARENT_PEN);
+ state->m_layer_bitmap[0].fill(TRANSPARENT_PEN);
+ state->m_layer_bitmap[1].fill(TRANSPARENT_PEN);
+ state->m_layer_bitmap[2].fill(TRANSPARENT_PEN);
for (offs = 0; offs < 0x0400; offs++)
{
@@ -531,19 +531,19 @@ static void draw_layers(running_machine &machine)
if (GLOBAL_FLIP_X) sx = 31 - sx;
if (GLOBAL_FLIP_Y) sy = 31 - sy;
- drawgfx_transpen(*state->m_layer_bitmap[0],state->m_layer_bitmap[0]->cliprect(),machine.gfx[state->m_colorbank[0] & 0x08 ? 2 : 0],
+ drawgfx_transpen(state->m_layer_bitmap[0],state->m_layer_bitmap[0].cliprect(),machine.gfx[state->m_colorbank[0] & 0x08 ? 2 : 0],
state->m_videoram_1[offs],
state->m_colorbank[0] & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
8*sx,8*sy,0);
- drawgfx_transpen(*state->m_layer_bitmap[1],state->m_layer_bitmap[1]->cliprect(),machine.gfx[state->m_colorbank[0] & 0x80 ? 2 : 0],
+ drawgfx_transpen(state->m_layer_bitmap[1],state->m_layer_bitmap[1].cliprect(),machine.gfx[state->m_colorbank[0] & 0x80 ? 2 : 0],
state->m_videoram_2[offs],
(state->m_colorbank[0] >> 4) & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
8*sx,8*sy,0);
- drawgfx_transpen(*state->m_layer_bitmap[2],state->m_layer_bitmap[2]->cliprect(),machine.gfx[state->m_colorbank[1] & 0x08 ? 2 : 0],
+ drawgfx_transpen(state->m_layer_bitmap[2],state->m_layer_bitmap[2].cliprect(),machine.gfx[state->m_colorbank[1] & 0x08 ? 2 : 0],
state->m_videoram_3[offs],
state->m_colorbank[1] & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
@@ -552,7 +552,7 @@ static void draw_layers(running_machine &machine)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap)
{
taitosj_state *state = machine.driver_data<taitosj_state>();
/*
@@ -609,7 +609,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap)
}
-static void taitosj_copy_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void taitosj_copy_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
int which, int *sprites_on, rectangle *sprite_areas)
{
taitosj_state *state = machine.driver_data<taitosj_state>();
@@ -634,7 +634,7 @@ static void taitosj_copy_layer(running_machine &machine, bitmap_t &bitmap, const
for (i = 0;i < 32;i++)
scrolly[i] = -state->m_colscrolly[32 * which + i] - state->m_scroll[2 * which + 1];
- copyscrollbitmap_trans(bitmap, *state->m_layer_bitmap[which], 1, &scrollx, 32, scrolly, cliprect, TRANSPARENT_PEN);
+ copyscrollbitmap_trans(bitmap, state->m_layer_bitmap[which], 1, &scrollx, 32, scrolly, cliprect, TRANSPARENT_PEN);
/* store parts covered with sprites for sprites/layers collision detection */
for (i = 0; i < 0x20; i++)
@@ -642,13 +642,13 @@ static void taitosj_copy_layer(running_machine &machine, bitmap_t &bitmap, const
if ((i >= 0x10) && (i <= 0x17)) continue; /* no sprites here */
if (sprites_on[i])
- copyscrollbitmap(*state->m_sprite_layer_collbitmap2[which], *state->m_layer_bitmap[which], 1, &scrollx, 32, scrolly, sprite_areas[i]);
+ copyscrollbitmap(state->m_sprite_layer_collbitmap2[which], state->m_layer_bitmap[which], 1, &scrollx, 32, scrolly, sprite_areas[i]);
}
}
}
-static void kikstart_copy_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void kikstart_copy_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
int which, int *sprites_on, rectangle *sprite_areas)
{
taitosj_state *state = machine.driver_data<taitosj_state>();
@@ -673,7 +673,7 @@ static void kikstart_copy_layer(running_machine &machine, bitmap_t &bitmap, cons
}
scrolly = state->m_scroll[2 * which + 1]; /* always 0 */
- copyscrollbitmap_trans(bitmap, *state->m_layer_bitmap[which], 32 * 8, scrollx, 1, &scrolly, cliprect, TRANSPARENT_PEN);
+ copyscrollbitmap_trans(bitmap, state->m_layer_bitmap[which], 32 * 8, scrollx, 1, &scrolly, cliprect, TRANSPARENT_PEN);
/* store parts covered with sprites for sprites/layers collision detection */
for (i = 0; i < 0x20; i++)
@@ -681,13 +681,13 @@ static void kikstart_copy_layer(running_machine &machine, bitmap_t &bitmap, cons
if ((i >= 0x10) && (i <= 0x17)) continue; /* no sprites here */
if (sprites_on[i])
- copyscrollbitmap(*state->m_sprite_layer_collbitmap2[which], *state->m_layer_bitmap[which], 32 * 8, scrollx, 1, &scrolly, sprite_areas[i]);
+ copyscrollbitmap(state->m_sprite_layer_collbitmap2[which], state->m_layer_bitmap[which], 32 * 8, scrollx, 1, &scrolly, sprite_areas[i]);
}
}
}
-static void copy_layer(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void copy_layer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
copy_layer_func_t copy_layer_func, int which, int *sprites_on, rectangle *sprite_areas)
{
if (which == 0)
@@ -697,7 +697,7 @@ static void copy_layer(running_machine &machine, bitmap_t &bitmap, const rectang
}
-static void copy_layers(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,
+static void copy_layers(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,
copy_layer_func_t copy_layer_func, int *sprites_on, rectangle *sprite_areas)
{
taitosj_state *state = machine.driver_data<taitosj_state>();
@@ -725,7 +725,7 @@ static void check_collision(running_machine &machine, int *sprites_on, rectangle
}
-static int video_update_common(running_machine &machine, bitmap_t &bitmap,
+static int video_update_common(running_machine &machine, bitmap_ind16 &bitmap,
const rectangle &cliprect, copy_layer_func_t copy_layer_func)
{
int sprites_on[0x20]; /* 1 if sprite is active */
@@ -746,13 +746,13 @@ static int video_update_common(running_machine &machine, bitmap_t &bitmap,
}
-SCREEN_UPDATE( taitosj )
+SCREEN_UPDATE_IND16( taitosj )
{
return video_update_common(screen.machine(), bitmap, cliprect, taitosj_copy_layer);
}
-SCREEN_UPDATE( kikstart )
+SCREEN_UPDATE_IND16( kikstart )
{
return video_update_common(screen.machine(), bitmap, cliprect, kikstart_copy_layer);
}
diff --git a/src/mame/video/tank8.c b/src/mame/video/tank8.c
index a247a247e49..199cdcca45b 100644
--- a/src/mame/video/tank8.c
+++ b/src/mame/video/tank8.c
@@ -104,9 +104,9 @@ static TILE_GET_INFO( tank8_get_tile_info )
VIDEO_START( tank8 )
{
tank8_state *state = machine.driver_data<tank8_state>();
- state->m_helper1 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper2 = machine.primary_screen->alloc_compatible_bitmap();
- state->m_helper3 = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper1.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper2.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_helper3.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_tilemap = tilemap_create(machine, tank8_get_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
@@ -128,7 +128,7 @@ static int get_y_pos(tank8_state *state, int n)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tank8_state *state = machine.driver_data<tank8_state>();
int i;
@@ -151,7 +151,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tank8_state *state = machine.driver_data<tank8_state>();
int i;
@@ -190,7 +190,7 @@ static TIMER_CALLBACK( tank8_collision_callback )
}
-SCREEN_UPDATE( tank8 )
+SCREEN_UPDATE_IND16( tank8 )
{
tank8_state *state = screen.machine().driver_data<tank8_state>();
set_pens(state, screen.machine().colortable);
@@ -209,21 +209,21 @@ SCREEN_EOF( tank8 )
int y;
const rectangle &visarea = screen.machine().primary_screen->visible_area();
- tilemap_draw(*state->m_helper1, visarea, state->m_tilemap, 0, 0);
+ tilemap_draw(state->m_helper1, visarea, state->m_tilemap, 0, 0);
- state->m_helper2->fill(8, visarea);
- state->m_helper3->fill(8, visarea);
+ state->m_helper2.fill(8, visarea);
+ state->m_helper3.fill(8, visarea);
- draw_sprites(screen.machine(), *state->m_helper2, visarea);
- draw_bullets(screen.machine(), *state->m_helper3, visarea);
+ draw_sprites(screen.machine(), state->m_helper2, visarea);
+ draw_bullets(screen.machine(), state->m_helper3, visarea);
for (y = visarea.min_y; y <= visarea.max_y; y++)
{
int _state = 0;
- const UINT16* p1 = &state->m_helper1->pix16(y);
- const UINT16* p2 = &state->m_helper2->pix16(y);
- const UINT16* p3 = &state->m_helper3->pix16(y);
+ const UINT16* p1 = &state->m_helper1.pix16(y);
+ const UINT16* p2 = &state->m_helper2.pix16(y);
+ const UINT16* p3 = &state->m_helper3.pix16(y);
if (y % 2 != screen.machine().primary_screen->frame_number() % 2)
continue; /* video display is interlaced */
diff --git a/src/mame/video/tankbatt.c b/src/mame/video/tankbatt.c
index 038961c8d99..a4ae11ed48f 100644
--- a/src/mame/video/tankbatt.c
+++ b/src/mame/video/tankbatt.c
@@ -82,7 +82,7 @@ VIDEO_START( tankbatt )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_bullets(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_bullets(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tankbatt_state *state = machine.driver_data<tankbatt_state>();
int offs;
@@ -101,7 +101,7 @@ static void draw_bullets(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( tankbatt )
+SCREEN_UPDATE_IND16( tankbatt )
{
tankbatt_state *state = screen.machine().driver_data<tankbatt_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/tankbust.c b/src/mame/video/tankbust.c
index af6c721873a..9d801f50488 100644
--- a/src/mame/video/tankbust.c
+++ b/src/mame/video/tankbust.c
@@ -187,7 +187,7 @@ spriteram format (4 bytes per sprite):
offset 3 xxxxxxxx x position (8 LSB bits)
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tankbust_state *state = machine.driver_data<tankbust_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -232,7 +232,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( tankbust )
+SCREEN_UPDATE_IND16( tankbust )
{
tankbust_state *state = screen.machine().driver_data<tankbust_state>();
#if 0
diff --git a/src/mame/video/taotaido.c b/src/mame/video/taotaido.c
index 657ac5c6a56..a2bc687618d 100644
--- a/src/mame/video/taotaido.c
+++ b/src/mame/video/taotaido.c
@@ -25,7 +25,7 @@ WRITE16_HANDLER( taotaido_sprite_character_bank_select_w )
/* sprites are like the other video system / psikyo games, we can merge this with aerofgt and plenty of other
things eventually */
-static void draw_sprite(running_machine &machine, UINT16 spriteno, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprite(running_machine &machine, UINT16 spriteno, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
taotaido_state *state = machine.driver_data<taotaido_state>();
/*- SPR RAM Format -**
@@ -109,7 +109,7 @@ static void draw_sprite(running_machine &machine, UINT16 spriteno, bitmap_t &bit
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
taotaido_state *state = machine.driver_data<taotaido_state>();
/* first part of sprite ram is the list of sprites to draw, terminated with 0x4000 */
@@ -197,7 +197,7 @@ VIDEO_START(taotaido)
}
-SCREEN_UPDATE(taotaido)
+SCREEN_UPDATE_IND16(taotaido)
{
taotaido_state *state = screen.machine().driver_data<taotaido_state>();
// tilemap_set_scrollx(state->m_bg_tilemap,0,(state->m_scrollram[0x380/2]>>4)); // the values put here end up being wrong every other frame
diff --git a/src/mame/video/targeth.c b/src/mame/video/targeth.c
index 4d1466c1c3e..60ce00faf33 100644
--- a/src/mame/video/targeth.c
+++ b/src/mame/video/targeth.c
@@ -105,7 +105,7 @@ VIDEO_START( targeth )
3 | xx------ -------- | not used?
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
targeth_state *state = machine.driver_data<targeth_state>();
int i;
@@ -133,7 +133,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( targeth )
+SCREEN_UPDATE_IND16( targeth )
{
targeth_state *state = screen.machine().driver_data<targeth_state>();
/* set scroll registers */
diff --git a/src/mame/video/tatsumi.c b/src/mame/video/tatsumi.c
index c8c763c7a10..07c8cdc18cd 100644
--- a/src/mame/video/tatsumi.c
+++ b/src/mame/video/tatsumi.c
@@ -205,7 +205,7 @@ VIDEO_START( apache3 )
tatsumi_state *state = machine.driver_data<tatsumi_state>();
state->m_tx_layer = tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,8,8,64,64);
state->m_shadow_pen_array = auto_alloc_array_clear(machine, UINT8, 8192);
- state->m_temp_bitmap = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_RGB32);
+ state->m_temp_bitmap.allocate(512, 512);
state->m_apache3_road_x_ram = auto_alloc_array(machine, UINT8, 512);
tilemap_set_transparent_pen(state->m_tx_layer,0);
@@ -248,8 +248,9 @@ VIDEO_START( bigfight )
/********************************************************************/
+template<class _BitmapClass>
INLINE void roundupt_drawgfxzoomrotate(
- bitmap_t &dest_bmp, const rectangle &clip, const gfx_element *gfx,
+ _BitmapClass &dest_bmp, const rectangle &clip, const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,UINT32 ssx,UINT32 ssy,
int scalex, int scaley, int rotate, int write_priority_only )
{
@@ -419,8 +420,7 @@ INLINE void roundupt_drawgfxzoomrotate(
for( y=sy; y<ey; y++ )
{
const UINT8 *source = code_base + (y_index>>16) * gfx->line_modulo;
- UINT32 *dest = &dest_bmp.pix32(y);
- UINT8 *priority_dest = &dest_bmp.pix8(y);
+ typename _BitmapClass::pixel_t *dest = &dest_bmp.pix(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
@@ -430,7 +430,7 @@ INLINE void roundupt_drawgfxzoomrotate(
{
// Only draw shadow pens if writing priority buffer
if (write_priority_only)
- priority_dest[x]=shadow_pens[c];
+ dest[x]=shadow_pens[c];
else if (!shadow_pens[c])
dest[x]=pal[c];
}
@@ -448,7 +448,12 @@ INLINE void roundupt_drawgfxzoomrotate(
}
}
-static void mycopyrozbitmap_core(bitmap_t &bitmap,bitmap_t &srcbitmap,
+static void mycopyrozbitmap_core(bitmap_ind8 &bitmap,bitmap_rgb32 &srcbitmap,
+ int dstx,int dsty, int srcwidth, int srcheight,int incxx,int incxy,int incyx,int incyy,
+ const rectangle &clip,int transparent_color)
+{ }
+
+static void mycopyrozbitmap_core(bitmap_rgb32 &bitmap,bitmap_rgb32 &srcbitmap,
int dstx,int dsty, int srcwidth, int srcheight,int incxx,int incxy,int incyx,int incyy,
const rectangle &clip,int transparent_color)
{
@@ -510,7 +515,8 @@ static void mycopyrozbitmap_core(bitmap_t &bitmap,bitmap_t &srcbitmap,
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int write_priority_only, int rambank)
+template<class _BitmapClass>
+static void draw_sprites(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int write_priority_only, int rambank)
{
tatsumi_state *state = machine.driver_data<tatsumi_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -597,7 +603,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
if (rotate)
{
render_y = 0;
- state->m_temp_bitmap->fill(0);
+ state->m_temp_bitmap.fill(0);
}
extent_x = extent_y = 0;
@@ -637,7 +643,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
for (w = 0; w < x_width; w++) {
if (rotate)
roundupt_drawgfxzoomrotate(
- *state->m_temp_bitmap,cliprect,machine.gfx[0],
+ state->m_temp_bitmap,cliprect,machine.gfx[0],
base,
color,flip_x,flip_y,x_pos,render_y,
scale,scale,0,write_priority_only);
@@ -692,12 +698,12 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
extent_x = extent_x >> 16;
extent_y = extent_y >> 16;
if (extent_x > 2 && extent_y > 2)
- mycopyrozbitmap_core(bitmap, *state->m_temp_bitmap, x/* + (extent_x/2)*/, y /*+ (extent_y/2)*/, extent_x, extent_y, incxx, incxy, incyx, incyy, cliprect, 0);
+ mycopyrozbitmap_core(bitmap, state->m_temp_bitmap, x/* + (extent_x/2)*/, y /*+ (extent_y/2)*/, extent_x, extent_y, incxx, incxy, incyx, incyy, cliprect, 0);
}
}
}
-static void draw_sky(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, int palette_base, int start_offset)
+static void draw_sky(running_machine &machine, bitmap_rgb32 &bitmap,const rectangle &cliprect, int palette_base, int start_offset)
{
// all todo
int x,y;
@@ -719,7 +725,7 @@ start_offset-=48;
}
}
-static void draw_road(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,bitmap_t &shadow_bitmap)
+static void draw_road(running_machine &machine, bitmap_rgb32 &bitmap,const rectangle &cliprect,bitmap_ind8 &shadow_bitmap)
{
tatsumi_state *state = machine.driver_data<tatsumi_state>();
/*
@@ -973,14 +979,14 @@ static void update_cluts(running_machine &machine, int fake_palette_offset, int
/**********************************************************************/
-static void draw_bg(running_machine &machine, bitmap_t &dst, tilemap_t *src, const UINT16* scrollx, const UINT16* scrolly, const UINT16* tilemap_ram, int tile_bank, int xscroll_offset, int yscroll_offset, int xsize, int ysize)
+static void draw_bg(running_machine &machine, bitmap_rgb32 &dst, tilemap_t *src, const UINT16* scrollx, const UINT16* scrolly, const UINT16* tilemap_ram, int tile_bank, int xscroll_offset, int yscroll_offset, int xsize, int ysize)
{
/*
Each tile (0x4000 of them) has a lookup table in ROM to build an individual 3-bit palette
from sets of 8 bit palettes!
*/
const UINT8* tile_cluts = machine.region("gfx4")->base();
- const bitmap_t &src_bitmap = tilemap_get_pixmap(src);
+ const bitmap_ind16 &src_bitmap = tilemap_get_pixmap(src);
int src_y_mask=ysize-1;
int src_x_mask=xsize-1;
int tile_y_mask=(ysize/8)-1;
@@ -1010,7 +1016,7 @@ static void draw_bg(running_machine &machine, bitmap_t &dst, tilemap_t *src, con
/* Draw the sky and ground, applying rotation (eventually). Experimental! */
#if 0
-static void draw_ground(running_machine &machine, bitmap_t &dst, const rectangle &cliprect)
+static void draw_ground(running_machine &machine, bitmap_rgb32 &dst, const rectangle &cliprect)
{
tatsumi_state *state = machine.driver_data<tatsumi_state>();
int x, y;
@@ -1075,7 +1081,7 @@ static void draw_ground(running_machine &machine, bitmap_t &dst, const rectangle
#endif
/**********************************************************************/
-SCREEN_UPDATE( apache3 )
+SCREEN_UPDATE_RGB32( apache3 )
{
tatsumi_state *state = screen.machine().driver_data<tatsumi_state>();
update_cluts(screen.machine(), 1024, 0, 2048);
@@ -1090,7 +1096,7 @@ SCREEN_UPDATE( apache3 )
return 0;
}
-SCREEN_UPDATE( roundup5 )
+SCREEN_UPDATE_RGB32( roundup5 )
{
tatsumi_state *state = screen.machine().driver_data<tatsumi_state>();
// UINT16 bg_x_scroll=state->m_roundup5_unknown1[0];
@@ -1111,7 +1117,7 @@ SCREEN_UPDATE( roundup5 )
return 0;
}
-SCREEN_UPDATE( cyclwarr )
+SCREEN_UPDATE_RGB32( cyclwarr )
{
tatsumi_state *state = screen.machine().driver_data<tatsumi_state>();
state->m_bigfight_bank=state->m_bigfight_a40000[0];
@@ -1136,7 +1142,7 @@ SCREEN_UPDATE( cyclwarr )
return 0;
}
-SCREEN_UPDATE( bigfight )
+SCREEN_UPDATE_RGB32( bigfight )
{
tatsumi_state *state = screen.machine().driver_data<tatsumi_state>();
state->m_bigfight_bank=state->m_bigfight_a40000[0];
diff --git a/src/mame/video/taxidriv.c b/src/mame/video/taxidriv.c
index ab63bca9da5..b74dcfb03d1 100644
--- a/src/mame/video/taxidriv.c
+++ b/src/mame/video/taxidriv.c
@@ -10,7 +10,7 @@ WRITE8_DEVICE_HANDLER( taxidriv_spritectrl_w )
-SCREEN_UPDATE( taxidriv )
+SCREEN_UPDATE_IND16( taxidriv )
{
taxidriv_state *state = screen.machine().driver_data<taxidriv_state>();
int offs;
diff --git a/src/mame/video/tbowl.c b/src/mame/video/tbowl.c
index 275d2e3e271..a58ea3e8213 100644
--- a/src/mame/video/tbowl.c
+++ b/src/mame/video/tbowl.c
@@ -118,7 +118,7 @@ WRITE8_HANDLER (tbowl_bg2yscroll_hi)
state->m_bg2yscroll = (state->m_bg2yscroll & 0x00ff) | (data << 8);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect, int xscroll)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect, int xscroll)
{
tbowl_state *state = machine.driver_data<tbowl_state>();
int offs;
@@ -214,7 +214,7 @@ VIDEO_START( tbowl )
}
-SCREEN_UPDATE( tbowl_left )
+SCREEN_UPDATE_IND16( tbowl_left )
{
tbowl_state *state = screen.machine().driver_data<tbowl_state>();
@@ -234,7 +234,7 @@ SCREEN_UPDATE( tbowl_left )
return 0;
}
-SCREEN_UPDATE( tbowl_right )
+SCREEN_UPDATE_IND16( tbowl_right )
{
tbowl_state *state = screen.machine().driver_data<tbowl_state>();
diff --git a/src/mame/video/tceptor.c b/src/mame/video/tceptor.c
index 50785e69195..c1129251c2f 100644
--- a/src/mame/video/tceptor.c
+++ b/src/mame/video/tceptor.c
@@ -394,7 +394,7 @@ VIDEO_START( tceptor )
decode_sprite32(machine, "gfx4");
/* allocate temp bitmaps */
- state->m_temp_bitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_temp_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
namco_road_init(machine, gfx_index);
@@ -440,7 +440,7 @@ VIDEO_START( tceptor )
z: zoom y
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int sprite_priority)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int sprite_priority)
{
tceptor_state *state = machine.driver_data<tceptor_state>();
UINT16 *mem1 = &state->m_sprite_ram_buffered[0x000/2];
@@ -481,7 +481,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
if (!need_mask)
// backup previous bitmap
- copybitmap(*state->m_temp_bitmap, bitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(state->m_temp_bitmap, bitmap, 0, 0, 0, 0, cliprect);
need_mask = 1;
}
@@ -515,12 +515,12 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
if (colortable_entry_get_value(machine.colortable, bitmap.pix16(y, x)) == SPR_MASK_COLOR)
// restore pixel
- bitmap.pix16(y, x) = state->m_temp_bitmap->pix16(y, x);
+ bitmap.pix16(y, x) = state->m_temp_bitmap.pix16(y, x);
}
}
-SCREEN_UPDATE( tceptor_2d )
+SCREEN_UPDATE_IND16( tceptor_2d )
{
tceptor_state *state = screen.machine().driver_data<tceptor_state>();
rectangle rect;
@@ -552,18 +552,18 @@ SCREEN_UPDATE( tceptor_2d )
return 0;
}
-SCREEN_UPDATE( tceptor_3d_left )
+SCREEN_UPDATE_IND16( tceptor_3d_left )
{
if ((screen.frame_number() & 1) == 1)
return UPDATE_HAS_NOT_CHANGED;
- return SCREEN_UPDATE_CALL( tceptor_2d );
+ return SCREEN_UPDATE16_CALL( tceptor_2d );
}
-SCREEN_UPDATE( tceptor_3d_right )
+SCREEN_UPDATE_IND16( tceptor_3d_right )
{
if ((screen.frame_number() & 1) == 0)
return UPDATE_HAS_NOT_CHANGED;
- return SCREEN_UPDATE_CALL( tceptor_2d );
+ return SCREEN_UPDATE16_CALL( tceptor_2d );
}
diff --git a/src/mame/video/tecmo.c b/src/mame/video/tecmo.c
index 01a81536aeb..f623a75b714 100644
--- a/src/mame/video/tecmo.c
+++ b/src/mame/video/tecmo.c
@@ -169,7 +169,7 @@ WRITE8_HANDLER( tecmo_flipscreen_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
tecmo_state *state = machine.driver_data<tecmo_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -248,7 +248,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-SCREEN_UPDATE( tecmo )
+SCREEN_UPDATE_IND16( tecmo )
{
tecmo_state *state = screen.machine().driver_data<tecmo_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/tecmo16.c b/src/mame/video/tecmo16.c
index 8843c1be9ed..7c1058b25d6 100644
--- a/src/mame/video/tecmo16.c
+++ b/src/mame/video/tecmo16.c
@@ -63,11 +63,11 @@ VIDEO_START( fstarfrc )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
state->m_fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,32,32);
state->m_bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,32,32);
@@ -89,11 +89,11 @@ VIDEO_START( ginkun )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
state->m_fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,64,32);
state->m_bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,64,32);
@@ -113,11 +113,11 @@ VIDEO_START( riot )
int height = machine.primary_screen->height();
/* set up tile layers */
- state->m_tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_tile_bitmap_bg.allocate(width, height);
+ state->m_tile_bitmap_fg.allocate(width, height);
/* set up sprites */
- state->m_sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
+ state->m_sprite_bitmap.allocate(width, height);
state->m_fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,64,32);
state->m_bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,64,32);
@@ -224,7 +224,7 @@ WRITE16_HANDLER( tecmo16_scroll_char_y_w )
/* mix & blend the paletted 16-bit tile and sprite bitmaps into an RGB 32-bit bitmap */
static void blendbitmaps(running_machine &machine,
- bitmap_t &dest,bitmap_t &src1,bitmap_t &src2,bitmap_t &src3,
+ bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind16 &src2,bitmap_ind16 &src3,
int sx,int sy,const rectangle &clip)
{
int ox;
@@ -332,7 +332,7 @@ static void blendbitmaps(running_machine &machine,
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap_bg, bitmap_t &bitmap_fg, bitmap_t &bitmap_sp, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect)
{
tecmo16_state *state = machine.driver_data<tecmo16_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -349,7 +349,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap_bg, bitmap_t
{42,43,46,47,58,59,62,63}
};
- bitmap_t &bitmap = bitmap_bg;
+ bitmap_ind16 &bitmap = bitmap_bg;
for (offs = state->m_spriteram_size/2 - 8;offs >= 0;offs -= 8)
{
@@ -443,7 +443,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap_bg, bitmap_t
}
else
{
- bitmap_t &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
+ bitmap_ind16 &bitmap = (priority >= 2) ? bitmap_bg : bitmap_fg;
for (y = 0;y < sizey;y++)
{
@@ -490,27 +490,27 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap_bg, bitmap_t
/******************************************************************************/
-SCREEN_UPDATE( tecmo16 )
+SCREEN_UPDATE_RGB32( tecmo16 )
{
tecmo16_state *state = screen.machine().driver_data<tecmo16_state>();
screen.machine().priority_bitmap.fill(0, cliprect);
- state->m_tile_bitmap_bg->fill(0x300, cliprect);
- state->m_tile_bitmap_fg->fill(0, cliprect);
- state->m_sprite_bitmap->fill(0, cliprect);
+ state->m_tile_bitmap_bg.fill(0x300, cliprect);
+ state->m_tile_bitmap_fg.fill(0, cliprect);
+ state->m_sprite_bitmap.fill(0, cliprect);
/* draw tilemaps into a 16-bit bitmap */
- tilemap_draw(*state->m_tile_bitmap_bg, cliprect,state->m_bg_tilemap, 0, 1);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect,state->m_fg_tilemap, 0, 2);
+ tilemap_draw(state->m_tile_bitmap_bg, cliprect,state->m_bg_tilemap, 0, 1);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect,state->m_fg_tilemap, 0, 2);
/* draw the blended tiles at a lower priority
so sprites covered by them will still be drawn */
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect,state->m_fg_tilemap, 1, 0);
- tilemap_draw(*state->m_tile_bitmap_fg, cliprect,state->m_tx_tilemap, 0, 4);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect,state->m_fg_tilemap, 1, 0);
+ tilemap_draw(state->m_tile_bitmap_fg, cliprect,state->m_tx_tilemap, 0, 4);
/* draw sprites into a 16-bit bitmap */
- draw_sprites(screen.machine(), *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, cliprect);
+ draw_sprites(screen.machine(), state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, cliprect);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(screen.machine(), bitmap, *state->m_tile_bitmap_bg, *state->m_tile_bitmap_fg, *state->m_sprite_bitmap, 0, 0, cliprect);
+ blendbitmaps(screen.machine(), bitmap, state->m_tile_bitmap_bg, state->m_tile_bitmap_fg, state->m_sprite_bitmap, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/tecmosys.c b/src/mame/video/tecmosys.c
index 8434dec82f5..ca8e142beb9 100644
--- a/src/mame/video/tecmosys.c
+++ b/src/mame/video/tecmosys.c
@@ -117,14 +117,14 @@ WRITE16_HANDLER( bg2_tilemap_lineram_w )
-static void tecmosys_render_sprites_to_bitmap(running_machine &machine, bitmap_t &bitmap, UINT16 extrax, UINT16 extray )
+static void tecmosys_render_sprites_to_bitmap(running_machine &machine, bitmap_rgb32 &bitmap, UINT16 extrax, UINT16 extray )
{
tecmosys_state *state = machine.driver_data<tecmosys_state>();
UINT8 *gfxsrc = machine.region ( "gfx1" )->base();
int i;
/* render sprites (with priority information) to temp bitmap */
- state->m_sprite_bitmap->fill(0x0000);
+ state->m_sprite_bitmap.fill(0x0000);
/* there are multiple spritelists in here, to allow for buffering */
for (i=(state->m_spritelist*0x4000)/2;i<((state->m_spritelist+1)*0x4000)/2;i+=8)
{
@@ -194,7 +194,7 @@ static void tecmosys_render_sprites_to_bitmap(running_machine &machine, bitmap_t
{
UINT8 data;
- dstptr = &state->m_sprite_bitmap->pix16(drawy, drawx);
+ dstptr = &state->m_sprite_bitmap.pix16(drawy, drawx);
data = (gfxsrc[address]);
@@ -216,8 +216,8 @@ static void tecmosys_tilemap_copy_to_compose(tecmosys_state *state, UINT16 pri)
UINT16 *dstptr;
for (y=0;y<240;y++)
{
- srcptr = &state->m_tmp_tilemap_renderbitmap->pix16(y);
- dstptr = &state->m_tmp_tilemap_composebitmap->pix16(y);
+ srcptr = &state->m_tmp_tilemap_renderbitmap.pix16(y);
+ dstptr = &state->m_tmp_tilemap_composebitmap.pix16(y);
for (x=0;x<320;x++)
{
if ((srcptr[x]&0xf)!=0x0)
@@ -226,7 +226,7 @@ static void tecmosys_tilemap_copy_to_compose(tecmosys_state *state, UINT16 pri)
}
}
-static void tecmosys_do_final_mix(running_machine &machine, bitmap_t &bitmap)
+static void tecmosys_do_final_mix(running_machine &machine, bitmap_rgb32 &bitmap)
{
tecmosys_state *state = machine.driver_data<tecmosys_state>();
const pen_t *paldata = machine.pens;
@@ -237,8 +237,8 @@ static void tecmosys_do_final_mix(running_machine &machine, bitmap_t &bitmap)
for (y=0;y<240;y++)
{
- srcptr = &state->m_tmp_tilemap_composebitmap->pix16(y);
- srcptr2 = &state->m_sprite_bitmap->pix16(y);
+ srcptr = &state->m_tmp_tilemap_composebitmap.pix16(y);
+ srcptr2 = &state->m_sprite_bitmap.pix16(y);
dstptr = &bitmap.pix32(y);
for (x=0;x<320;x++)
@@ -297,7 +297,7 @@ static void tecmosys_do_final_mix(running_machine &machine, bitmap_t &bitmap)
}
-SCREEN_UPDATE(tecmosys)
+SCREEN_UPDATE_RGB32(tecmosys)
{
tecmosys_state *state = screen.machine().driver_data<tecmosys_state>();
@@ -313,22 +313,22 @@ SCREEN_UPDATE(tecmosys)
tilemap_set_scrolly( state->m_bg2tilemap, 0, state->m_b00000regs[1]+17);
tilemap_set_scrollx( state->m_bg2tilemap, 0, state->m_b00000regs[0]+106);
- state->m_tmp_tilemap_composebitmap->fill(0, cliprect);
+ state->m_tmp_tilemap_composebitmap.fill(0, cliprect);
- state->m_tmp_tilemap_renderbitmap->fill(0, cliprect);
- tilemap_draw(*state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg0tilemap,0,0);
+ state->m_tmp_tilemap_renderbitmap.fill(0, cliprect);
+ tilemap_draw(state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg0tilemap,0,0);
tecmosys_tilemap_copy_to_compose(state, 0x0000);
- state->m_tmp_tilemap_renderbitmap->fill(0, cliprect);
- tilemap_draw(*state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg1tilemap,0,0);
+ state->m_tmp_tilemap_renderbitmap.fill(0, cliprect);
+ tilemap_draw(state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg1tilemap,0,0);
tecmosys_tilemap_copy_to_compose(state, 0x4000);
- state->m_tmp_tilemap_renderbitmap->fill(0, cliprect);
- tilemap_draw(*state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg2tilemap,0,0);
+ state->m_tmp_tilemap_renderbitmap.fill(0, cliprect);
+ tilemap_draw(state->m_tmp_tilemap_renderbitmap,cliprect,state->m_bg2tilemap,0,0);
tecmosys_tilemap_copy_to_compose(state, 0x8000);
- state->m_tmp_tilemap_renderbitmap->fill(0, cliprect);
- tilemap_draw(*state->m_tmp_tilemap_renderbitmap,cliprect,state->m_txt_tilemap,0,0);
+ state->m_tmp_tilemap_renderbitmap.fill(0, cliprect);
+ tilemap_draw(state->m_tmp_tilemap_renderbitmap,cliprect,state->m_txt_tilemap,0,0);
tecmosys_tilemap_copy_to_compose(state, 0xc000);
@@ -343,14 +343,14 @@ SCREEN_UPDATE(tecmosys)
VIDEO_START(tecmosys)
{
tecmosys_state *state = machine.driver_data<tecmosys_state>();
- state->m_sprite_bitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
- state->m_sprite_bitmap->fill(0x4000);
+ state->m_sprite_bitmap.allocate(320,240);
+ state->m_sprite_bitmap.fill(0x4000);
- state->m_tmp_tilemap_composebitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
- state->m_tmp_tilemap_renderbitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
+ state->m_tmp_tilemap_composebitmap.allocate(320,240);
+ state->m_tmp_tilemap_renderbitmap.allocate(320,240);
- state->m_tmp_tilemap_composebitmap->fill(0x0000);
- state->m_tmp_tilemap_renderbitmap->fill(0x0000);
+ state->m_tmp_tilemap_composebitmap.fill(0x0000);
+ state->m_tmp_tilemap_renderbitmap.fill(0x0000);
state->m_txt_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32*2,32*2);
diff --git a/src/mame/video/tehkanwc.c b/src/mame/video/tehkanwc.c
index ac160bd2807..b69d58b1197 100644
--- a/src/mame/video/tehkanwc.c
+++ b/src/mame/video/tehkanwc.c
@@ -123,7 +123,7 @@ VIDEO_START( tehkanwc )
bit 7 = enable (0 = display off)
*/
-static void gridiron_draw_led(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 led,int player)
+static void gridiron_draw_led(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player)
{
if (led&0x80)
output_set_digit_value(player, led&0x7f);
@@ -131,7 +131,7 @@ static void gridiron_draw_led(running_machine &machine, bitmap_t &bitmap, const
output_set_digit_value(player, 0x00);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tehkanwc_state *state = machine.driver_data<tehkanwc_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -164,7 +164,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( tehkanwc )
+SCREEN_UPDATE_IND16( tehkanwc )
{
tehkanwc_state *state = screen.machine().driver_data<tehkanwc_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scroll_x[0] + 256 * state->m_scroll_x[1]);
diff --git a/src/mame/video/terracre.c b/src/mame/video/terracre.c
index ef86ef9f77f..646b3d062d6 100644
--- a/src/mame/video/terracre.c
+++ b/src/mame/video/terracre.c
@@ -31,7 +31,7 @@ TILE_GET_INFO( get_fg_tile_info )
SET_TILE_INFO( 0,data&0xff,0,0 );
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
terracre_state *state = machine.driver_data<terracre_state>();
const UINT8 *spritepalettebank = machine.region("user1")->base();
@@ -202,7 +202,7 @@ VIDEO_START( amazon )
state_save_register_global(machine, state->m_yscroll);
}
-SCREEN_UPDATE( amazon )
+SCREEN_UPDATE_IND16( amazon )
{
terracre_state *state = screen.machine().driver_data<terracre_state>();
if( state->m_xscroll&0x2000 )
diff --git a/src/mame/video/tetrisp2.c b/src/mame/video/tetrisp2.c
index 46fca40db7c..7c73c84327c 100644
--- a/src/mame/video/tetrisp2.c
+++ b/src/mame/video/tetrisp2.c
@@ -380,7 +380,8 @@ VIDEO_START( rocknms )
/* sprites should be able to create shadows too, how?
-- it appears that sprites which should be shadows are often rendered *UNDER* the tilemaps, maybe related?
*/
-static void tetrisp2_draw_sprites(running_machine &machine, bitmap_t &bitmap, bitmap_t &bitmap_pri, const rectangle &cliprect, UINT8* priority_ram, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int flip)
+template<class _BitmapClass>
+static void tetrisp2_draw_sprites(running_machine &machine, _BitmapClass &bitmap, bitmap_ind8 &bitmap_pri, const rectangle &cliprect, UINT8* priority_ram, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int flip)
{
int tx, ty, sx, sy, flipx, flipy;
int xsize, ysize;
@@ -459,7 +460,7 @@ static void tetrisp2_draw_sprites(running_machine &machine, bitmap_t &bitmap, bi
***************************************************************************/
-SCREEN_UPDATE( tetrisp2 )
+SCREEN_UPDATE_IND16( tetrisp2 )
{
tetrisp2_state *state = screen.machine().driver_data<tetrisp2_state>();
int flipscreen;
@@ -544,7 +545,7 @@ SCREEN_UPDATE( tetrisp2 )
return 0;
}
-SCREEN_UPDATE( rockntread )
+SCREEN_UPDATE_IND16( rockntread )
{
tetrisp2_state *state = screen.machine().driver_data<tetrisp2_state>();
int flipscreen;
@@ -632,7 +633,7 @@ SCREEN_UPDATE( rockntread )
-SCREEN_UPDATE( rocknms_left )
+SCREEN_UPDATE_RGB32( rocknms_left )
{
tetrisp2_state *state = screen.machine().driver_data<tetrisp2_state>();
int asc_pri;
@@ -692,7 +693,7 @@ SCREEN_UPDATE( rocknms_left )
return 0;
}
-SCREEN_UPDATE( rocknms_right )
+SCREEN_UPDATE_RGB32( rocknms_right )
{
tetrisp2_state *state = screen.machine().driver_data<tetrisp2_state>();
int asc_pri;
diff --git a/src/mame/video/thedeep.c b/src/mame/video/thedeep.c
index 87764e80d66..8ed47279be0 100644
--- a/src/mame/video/thedeep.c
+++ b/src/mame/video/thedeep.c
@@ -147,7 +147,7 @@ Offset: Bits: Value:
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
thedeep_state *state = machine.driver_data<thedeep_state>();
UINT8 *s = state->m_spriteram, *end = s + state->m_spriteram_size;
@@ -209,7 +209,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( thedeep )
+SCREEN_UPDATE_IND16( thedeep )
{
thedeep_state *state = screen.machine().driver_data<thedeep_state>();
int scrollx = state->m_scroll[0] + (state->m_scroll[1]<<8);
diff --git a/src/mame/video/thepit.c b/src/mame/video/thepit.c
index d875dd93f4e..75230eaedbc 100644
--- a/src/mame/video/thepit.c
+++ b/src/mame/video/thepit.c
@@ -231,7 +231,7 @@ READ8_HANDLER( thepit_input_port_0_r )
*************************************/
static void draw_sprites(running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
const rectangle &cliprect,
int priority_to_draw)
{
@@ -283,7 +283,7 @@ static void draw_sprites(running_machine &machine,
}
-SCREEN_UPDATE( thepit )
+SCREEN_UPDATE_IND16( thepit )
{
thepit_state *state = screen.machine().driver_data<thepit_state>();
offs_t offs;
diff --git a/src/mame/video/thief.c b/src/mame/video/thief.c
index cfde8a7ca99..95b3d0beba2 100644
--- a/src/mame/video/thief.c
+++ b/src/mame/video/thief.c
@@ -107,7 +107,7 @@ VIDEO_START( thief ){
state->m_coprocessor.context_ram = auto_alloc_array(machine, UINT8, 0x400 );
}
-SCREEN_UPDATE( thief ){
+SCREEN_UPDATE_IND16( thief ){
thief_state *state = screen.machine().driver_data<thief_state>();
UINT8 *videoram = state->m_videoram;
UINT32 offs;
diff --git a/src/mame/video/thoop2.c b/src/mame/video/thoop2.c
index 18dffc82550..71fc1328afb 100644
--- a/src/mame/video/thoop2.c
+++ b/src/mame/video/thoop2.c
@@ -148,7 +148,7 @@ static void thoop2_sort_sprites(running_machine &machine)
3 | xxxxxxxx xxxxxx-- | sprite code (low bits)
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int pri)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
{
thoop2_state *state = machine.driver_data<thoop2_state>();
int j, x, y, ex, ey;
@@ -199,7 +199,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( thoop2 )
+SCREEN_UPDATE_IND16( thoop2 )
{
thoop2_state *state = screen.machine().driver_data<thoop2_state>();
/* set scroll registers */
diff --git a/src/mame/video/thunderj.c b/src/mame/video/thunderj.c
index 2c4858c2c34..57887041d83 100644
--- a/src/mame/video/thunderj.c
+++ b/src/mame/video/thunderj.c
@@ -122,12 +122,12 @@ VIDEO_START( thunderj )
*
*************************************/
-SCREEN_UPDATE( thunderj )
+SCREEN_UPDATE_IND16( thunderj )
{
thunderj_state *state = screen.machine().driver_data<thunderj_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/thunderx.c b/src/mame/video/thunderx.c
index 4d6efd32b28..b15ff39c33c 100644
--- a/src/mame/video/thunderx.c
+++ b/src/mame/video/thunderx.c
@@ -66,7 +66,7 @@ VIDEO_START( scontra )
***************************************************************************/
-SCREEN_UPDATE( scontra )
+SCREEN_UPDATE_IND16( scontra )
{
thunderx_state *state = screen.machine().driver_data<thunderx_state>();
diff --git a/src/mame/video/tia.c b/src/mame/video/tia.c
index 374f150f547..c4bdf3f1ecf 100644
--- a/src/mame/video/tia.c
+++ b/src/mame/video/tia.c
@@ -106,7 +106,7 @@ static UINT8 HMBL_latch;
static UINT8 REFLECT; /* Should playfield be reflected or not */
static UINT8 NUSIZx_changed;
-static bitmap_t *helper[3];
+static bitmap_ind16 *helper[3];
static UINT16 screen_height;
@@ -274,13 +274,13 @@ VIDEO_START( tia )
int cx = machine.primary_screen->width();
screen_height = machine.primary_screen->height();
- helper[0] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, machine.primary_screen->format());
- helper[1] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, machine.primary_screen->format());
- helper[2] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, machine.primary_screen->format());
+ helper[0] = auto_bitmap_ind16_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT);
+ helper[1] = auto_bitmap_ind16_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT);
+ helper[2] = auto_bitmap_ind16_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT);
}
-SCREEN_UPDATE( tia )
+SCREEN_UPDATE_IND16( tia )
{
screen_height = screen.height();
copybitmap(bitmap, *helper[2], 0, 0, 0, 0, cliprect);
diff --git a/src/mame/video/tia.h b/src/mame/video/tia.h
index e4ec734280d..cf85ba52f60 100644
--- a/src/mame/video/tia.h
+++ b/src/mame/video/tia.h
@@ -16,7 +16,7 @@ PALETTE_INIT( tia_NTSC );
PALETTE_INIT( tia_PAL );
VIDEO_START( tia );
-SCREEN_UPDATE( tia );
+SCREEN_UPDATE_IND16( tia );
READ8_HANDLER( tia_r );
WRITE8_HANDLER( tia_w );
diff --git a/src/mame/video/tiamc1.c b/src/mame/video/tiamc1.c
index aa9b3212ac6..3ce7fdf229e 100644
--- a/src/mame/video/tiamc1.c
+++ b/src/mame/video/tiamc1.c
@@ -165,7 +165,7 @@ VIDEO_START( tiamc1 )
gfx_element_set_source(machine.gfx[0], state->m_charram);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tiamc1_state *state = machine.driver_data<tiamc1_state>();
int offs;
@@ -189,7 +189,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( tiamc1 )
+SCREEN_UPDATE_IND16( tiamc1 )
{
tiamc1_state *state = screen.machine().driver_data<tiamc1_state>();
#if 0
diff --git a/src/mame/video/tigeroad.c b/src/mame/video/tigeroad.c
index 6ab015a793f..176f5e645f1 100644
--- a/src/mame/video/tigeroad.c
+++ b/src/mame/video/tigeroad.c
@@ -67,7 +67,7 @@ WRITE16_HANDLER( tigeroad_scroll_w )
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
UINT16 *source = &machine.generic.buffered_spriteram.u16[machine.generic.spriteram_size/2] - 4;
UINT16 *finish = machine.generic.buffered_spriteram.u16;
@@ -160,7 +160,7 @@ VIDEO_START( tigeroad )
tilemap_set_transparent_pen(state->m_fg_tilemap, 3);
}
-SCREEN_UPDATE( tigeroad )
+SCREEN_UPDATE_IND16( tigeroad )
{
tigeroad_state *state = screen.machine().driver_data<tigeroad_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/timelimt.c b/src/mame/video/timelimt.c
index 4a920934508..b24a5b00d70 100644
--- a/src/mame/video/timelimt.c
+++ b/src/mame/video/timelimt.c
@@ -116,7 +116,7 @@ WRITE8_HANDLER( timelimt_scroll_y_w )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
timelimt_state *state = machine.driver_data<timelimt_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -143,7 +143,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( timelimt )
+SCREEN_UPDATE_IND16( timelimt )
{
timelimt_state *state = screen.machine().driver_data<timelimt_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scrollx);
diff --git a/src/mame/video/timeplt.c b/src/mame/video/timeplt.c
index fd150832626..6effa77f63e 100644
--- a/src/mame/video/timeplt.c
+++ b/src/mame/video/timeplt.c
@@ -176,7 +176,7 @@ READ8_HANDLER( timeplt_scanline_r )
*
*************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
timeplt_state *state = machine.driver_data<timeplt_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -209,7 +209,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
*
*************************************/
-SCREEN_UPDATE( timeplt )
+SCREEN_UPDATE_IND16( timeplt )
{
timeplt_state *state = screen.machine().driver_data<timeplt_state>();
diff --git a/src/mame/video/tmnt.c b/src/mame/video/tmnt.c
index 16b5626c53d..fa1a8144d5d 100644
--- a/src/mame/video/tmnt.c
+++ b/src/mame/video/tmnt.c
@@ -576,7 +576,7 @@ WRITE16_HANDLER( tmnt_priority_w )
***************************************************************************/
-SCREEN_UPDATE( mia )
+SCREEN_UPDATE_IND16( mia )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
@@ -591,7 +591,7 @@ SCREEN_UPDATE( mia )
return 0;
}
-SCREEN_UPDATE( tmnt )
+SCREEN_UPDATE_IND16( tmnt )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
@@ -607,7 +607,7 @@ SCREEN_UPDATE( tmnt )
}
-SCREEN_UPDATE( punkshot )
+SCREEN_UPDATE_IND16( punkshot )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
@@ -637,7 +637,7 @@ SCREEN_UPDATE( punkshot )
}
-SCREEN_UPDATE( lgtnfght )
+SCREEN_UPDATE_IND16( lgtnfght )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
int bg_colorbase;
@@ -684,7 +684,7 @@ popmessage("%04x", state->m_glfgreat_pixel);
return state->m_glfgreat_pixel & 0xff;
}
-SCREEN_UPDATE( glfgreat )
+SCREEN_UPDATE_IND16( glfgreat )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
int bg_colorbase;
@@ -738,7 +738,7 @@ SCREEN_UPDATE( glfgreat )
return 0;
}
-SCREEN_UPDATE( tmnt2 )
+SCREEN_UPDATE_IND16( tmnt2 )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
double brt;
@@ -786,12 +786,12 @@ SCREEN_UPDATE( tmnt2 )
palette_set_shadow_mode(screen.machine(), 0);
}
- SCREEN_UPDATE_CALL(lgtnfght);
+ SCREEN_UPDATE16_CALL(lgtnfght);
return 0;
}
-SCREEN_UPDATE( thndrx2 )
+SCREEN_UPDATE_IND16( thndrx2 )
{
tmnt_state *state = screen.machine().driver_data<tmnt_state>();
int bg_colorbase;
diff --git a/src/mame/video/tnzs.c b/src/mame/video/tnzs.c
index 0239bbada01..17cd1dc35d0 100644
--- a/src/mame/video/tnzs.c
+++ b/src/mame/video/tnzs.c
@@ -42,7 +42,7 @@ PALETTE_INIT( arknoid2 )
}
-SCREEN_UPDATE( tnzs )
+SCREEN_UPDATE_IND16( tnzs )
{
bitmap.fill(0x1f0, cliprect);
diff --git a/src/mame/video/toaplan1.c b/src/mame/video/toaplan1.c
index 83e32e55c84..4da96e4bdd2 100644
--- a/src/mame/video/toaplan1.c
+++ b/src/mame/video/toaplan1.c
@@ -959,13 +959,13 @@ static void toaplan1_log_vram(running_machine &machine)
***************************************************************************/
// custom function to draw a single sprite. needed to keep correct sprites - sprites and sprites - tilemaps priorities
-static void toaplan1_draw_sprite_custom(bitmap_t &dest_bmp,const rectangle &clip,const gfx_element *gfx,
+static void toaplan1_draw_sprite_custom(bitmap_ind16 &dest_bmp,const rectangle &clip,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int priority)
{
int pal_base = gfx->color_base + gfx->color_granularity * (color % gfx->total_colors);
const UINT8 *source_base = gfx_element_get_data(gfx, code % gfx->total_elements);
- bitmap_t &priority_bitmap = gfx->machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = gfx->machine().priority_bitmap;
int sprite_screen_height = ((1<<16)*gfx->height+0x8000)>>16;
int sprite_screen_width = ((1<<16)*gfx->width+0x8000)>>16;
@@ -1055,7 +1055,7 @@ static void toaplan1_draw_sprite_custom(bitmap_t &dest_bmp,const rectangle &clip
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
toaplan1_state *state = machine.driver_data<toaplan1_state>();
UINT16 *source = (UINT16 *)state->m_buffered_spriteram;
@@ -1123,7 +1123,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void rallybik_draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void rallybik_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
toaplan1_state *state = machine.driver_data<toaplan1_state>();
UINT16 *buffered_spriteram16 = state->m_buffered_spriteram;
@@ -1158,10 +1158,10 @@ static void rallybik_draw_sprites(running_machine &machine, bitmap_t &bitmap, co
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-SCREEN_UPDATE( rallybik )
+SCREEN_UPDATE_IND16( rallybik )
{
toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
int priority;
@@ -1185,7 +1185,7 @@ SCREEN_UPDATE( rallybik )
return 0;
}
-SCREEN_UPDATE( toaplan1 )
+SCREEN_UPDATE_IND16( toaplan1 )
{
toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
int priority;
diff --git a/src/mame/video/toaplan2.c b/src/mame/video/toaplan2.c
index b4d3c2b8e1f..32a5ad0e78d 100644
--- a/src/mame/video/toaplan2.c
+++ b/src/mame/video/toaplan2.c
@@ -90,18 +90,18 @@ VIDEO_START( toaplan2 )
state->m_vdp1 = machine.device<gp9001vdp_device>("gp9001vdp1");
/* our current VDP implementation needs this bitmap to work with */
- state->m_custom_priority_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED8);
+ state->m_custom_priority_bitmap.allocate(width, height);
if (state->m_vdp0 != NULL)
{
- state->m_secondary_render_bitmap = NULL;
- state->m_vdp0->custom_priority_bitmap = state->m_custom_priority_bitmap;
+ state->m_secondary_render_bitmap.reset();
+ state->m_vdp0->custom_priority_bitmap = &state->m_custom_priority_bitmap;
}
if (state->m_vdp1 != NULL)
{
- state->m_secondary_render_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
- state->m_vdp1->custom_priority_bitmap = state->m_custom_priority_bitmap;
+ state->m_secondary_render_bitmap.allocate(width, height);
+ state->m_vdp1->custom_priority_bitmap = &state->m_custom_priority_bitmap;
}
register_state_save(machine);
@@ -191,7 +191,7 @@ WRITE16_HANDLER( toaplan2_txvideoram16_w )
WRITE16_HANDLER( toaplan2_txvideoram16_offs_w )
{
// FIXME: implement line select and per-line flipping for all games
- // see SCREEN_UPDATE( batrider )
+ // see SCREEN_UPDATE_IND16( batrider )
toaplan2_state *state = space->machine().driver_data<toaplan2_state>();
UINT16 oldword = state->m_txvideoram16_offs[offset];
@@ -291,20 +291,20 @@ WRITE16_HANDLER( batrider_objectbank_w )
}
// Dogyuun doesn't appear to require fancy mixing?
-SCREEN_UPDATE( toaplan2_dual )
+SCREEN_UPDATE_IND16( toaplan2_dual )
{
toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
if (state->m_vdp1)
{
bitmap.fill(0, cliprect);
- state->m_custom_priority_bitmap->fill(0, cliprect);
+ state->m_custom_priority_bitmap.fill(0, cliprect);
state->m_vdp1->gp9001_render_vdp(screen.machine(), bitmap, cliprect);
}
if (state->m_vdp0)
{
// bitmap.fill(0, cliprect);
- state->m_custom_priority_bitmap->fill(0, cliprect);
+ state->m_custom_priority_bitmap.fill(0, cliprect);
state->m_vdp0->gp9001_render_vdp(screen.machine(), bitmap, cliprect);
}
@@ -314,7 +314,7 @@ SCREEN_UPDATE( toaplan2_dual )
// renders to 2 bitmaps, and mixes output
-SCREEN_UPDATE( toaplan2_mixed )
+SCREEN_UPDATE_IND16( toaplan2_mixed )
{
toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
@@ -324,14 +324,14 @@ SCREEN_UPDATE( toaplan2_mixed )
if (state->m_vdp0)
{
bitmap.fill(0, cliprect);
- state->m_custom_priority_bitmap->fill(0, cliprect);
+ state->m_custom_priority_bitmap.fill(0, cliprect);
state->m_vdp0->gp9001_render_vdp(screen.machine(), bitmap, cliprect);
}
if (state->m_vdp1)
{
- state->m_secondary_render_bitmap->fill(0, cliprect);
- state->m_custom_priority_bitmap->fill(0, cliprect);
- state->m_vdp1->gp9001_render_vdp(screen.machine(), *state->m_secondary_render_bitmap, cliprect);
+ state->m_secondary_render_bitmap.fill(0, cliprect);
+ state->m_custom_priority_bitmap.fill(0, cliprect);
+ state->m_vdp1->gp9001_render_vdp(screen.machine(), state->m_secondary_render_bitmap, cliprect);
}
@@ -357,7 +357,7 @@ SCREEN_UPDATE( toaplan2_mixed )
for (y=0;y<height;y++)
{
src_vdp0 = &bitmap.pix16(y);
- src_vdp1 = &state->m_secondary_render_bitmap->pix16(y);
+ src_vdp1 = &state->m_secondary_render_bitmap.pix16(y);
for (x=0;x<width;x++)
{
@@ -414,35 +414,35 @@ SCREEN_UPDATE( toaplan2_mixed )
return 0;
}
-SCREEN_UPDATE( toaplan2 )
+SCREEN_UPDATE_IND16( toaplan2 )
{
toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
if (state->m_vdp0)
{
bitmap.fill(0, cliprect);
- state->m_custom_priority_bitmap->fill(0, cliprect);
+ state->m_custom_priority_bitmap.fill(0, cliprect);
state->m_vdp0->gp9001_render_vdp(screen.machine(), bitmap, cliprect);
}
return 0;
}
-SCREEN_UPDATE( truxton2 )
+SCREEN_UPDATE_IND16( truxton2 )
{
toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
- SCREEN_UPDATE_CALL(toaplan2);
+ SCREEN_UPDATE16_CALL(toaplan2);
tilemap_draw(bitmap, cliprect, state->m_tx_tilemap, 0, 0);
return 0;
}
-SCREEN_UPDATE( batrider )
+SCREEN_UPDATE_IND16( batrider )
{
toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
- SCREEN_UPDATE_CALL( toaplan2 );
+ SCREEN_UPDATE16_CALL( toaplan2 );
int line;
rectangle clip;
@@ -473,15 +473,15 @@ SCREEN_UPDATE( batrider )
-SCREEN_UPDATE( dogyuun )
+SCREEN_UPDATE_IND16( dogyuun )
{
- SCREEN_UPDATE_CALL( toaplan2_dual );
+ SCREEN_UPDATE16_CALL( toaplan2_dual );
return 0;
}
-SCREEN_UPDATE( batsugun )
+SCREEN_UPDATE_IND16( batsugun )
{
- SCREEN_UPDATE_CALL( toaplan2_mixed );
+ SCREEN_UPDATE16_CALL( toaplan2_mixed );
return 0;
}
diff --git a/src/mame/video/toki.c b/src/mame/video/toki.c
index c5d13d4a858..81f9d78b073 100644
--- a/src/mame/video/toki.c
+++ b/src/mame/video/toki.c
@@ -181,7 +181,7 @@ WRITE16_HANDLER( toki_background2_videoram16_w )
***************************************************************************/
-static void toki_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void toki_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
int x,y,xoffs,yoffs,tile,flipx,flipy,color,offs;
UINT16 *sprite_word;
@@ -224,7 +224,7 @@ static void toki_draw_sprites(running_machine &machine, bitmap_t &bitmap,const r
}
-static void tokib_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void tokib_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
int x,y,tile,flipx,color,offs;
UINT16 *sprite_word;
@@ -267,7 +267,7 @@ static void tokib_draw_sprites(running_machine &machine, bitmap_t &bitmap,const
*
*************************************/
-SCREEN_UPDATE( toki )
+SCREEN_UPDATE_IND16( toki )
{
toki_state *state = screen.machine().driver_data<toki_state>();
int background_y_scroll,foreground_y_scroll,background_x_scroll,foreground_x_scroll;
@@ -302,7 +302,7 @@ SCREEN_UPDATE( toki )
return 0;
}
-SCREEN_UPDATE( tokib )
+SCREEN_UPDATE_IND16( tokib )
{
toki_state *state = screen.machine().driver_data<toki_state>();
tilemap_set_scroll_rows(state->m_foreground_layer,1);
diff --git a/src/mame/video/toobin.c b/src/mame/video/toobin.c
index bae9d42ab4c..a3ffd24377f 100644
--- a/src/mame/video/toobin.c
+++ b/src/mame/video/toobin.c
@@ -97,7 +97,7 @@ VIDEO_START( toobin )
tilemap_set_transparent_pen(state->m_alpha_tilemap, 0);
/* allocate a playfield bitmap for rendering */
- state->m_pfbitmap = auto_bitmap_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height(), BITMAP_FORMAT_INDEXED16);
+ state->m_pfbitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->save_item(NAME(state->m_brightness));
}
@@ -228,21 +228,21 @@ WRITE16_HANDLER( toobin_slip_w )
*
*************************************/
-SCREEN_UPDATE( toobin )
+SCREEN_UPDATE_RGB32( toobin )
{
toobin_state *state = screen.machine().driver_data<toobin_state>();
- bitmap_t &priority_bitmap = screen.machine().priority_bitmap;
+ bitmap_ind8 &priority_bitmap = screen.machine().priority_bitmap;
const rgb_t *palette = palette_entry_list_adjusted(screen.machine().palette);
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y;
/* draw the playfield */
priority_bitmap.fill(0, cliprect);
- tilemap_draw(*state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 0, 0);
- tilemap_draw(*state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 1, 1);
- tilemap_draw(*state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 2, 2);
- tilemap_draw(*state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 3, 3);
+ tilemap_draw(state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 0, 0);
+ tilemap_draw(state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 1, 1);
+ tilemap_draw(state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 2, 2);
+ tilemap_draw(state->m_pfbitmap, cliprect, state->m_playfield_tilemap, 3, 3);
/* draw and merge the MO */
mobitmap = atarimo_render(0, cliprect, &rectlist);
@@ -250,7 +250,7 @@ SCREEN_UPDATE( toobin )
{
UINT32 *dest = &bitmap.pix32(y);
UINT16 *mo = &mobitmap->pix16(y);
- UINT16 *pf = &state->m_pfbitmap->pix16(y);
+ UINT16 *pf = &state->m_pfbitmap.pix16(y);
UINT8 *pri = &priority_bitmap.pix8(y);
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
{
diff --git a/src/mame/video/topspeed.c b/src/mame/video/topspeed.c
index 29fa1338723..7bf9d49beba 100644
--- a/src/mame/video/topspeed.c
+++ b/src/mame/video/topspeed.c
@@ -26,7 +26,7 @@
********************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
topspeed_state *state = machine.driver_data<topspeed_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -109,7 +109,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
/***************************************************************************/
-SCREEN_UPDATE( topspeed )
+SCREEN_UPDATE_IND16( topspeed )
{
topspeed_state *state = screen.machine().driver_data<topspeed_state>();
UINT8 layer[4];
diff --git a/src/mame/video/toypop.c b/src/mame/video/toypop.c
index cae4d2b6ab5..2cb98a26db0 100644
--- a/src/mame/video/toypop.c
+++ b/src/mame/video/toypop.c
@@ -172,7 +172,7 @@ WRITE16_HANDLER( toypop_merged_background_w )
state->m_bg_image[2*offset+1] = (data & 0xf) | ((data & 0xf0) << 4);
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap)
{
toypop_state *state = machine.driver_data<toypop_state>();
pen_t pen_base = 0x300 + 0x10*state->m_palettebank;
@@ -219,7 +219,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap)
***************************************************************************/
-void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
+void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *spriteram_base)
{
UINT8 *spriteram = spriteram_base + 0x780;
UINT8 *spriteram_2 = spriteram + 0x800;
@@ -275,7 +275,7 @@ void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &c
}
-SCREEN_UPDATE( toypop )
+SCREEN_UPDATE_IND16( toypop )
{
toypop_state *state = screen.machine().driver_data<toypop_state>();
draw_background(screen.machine(), bitmap);
diff --git a/src/mame/video/tp84.c b/src/mame/video/tp84.c
index 1655da627a8..3e1be01acc0 100644
--- a/src/mame/video/tp84.c
+++ b/src/mame/video/tp84.c
@@ -152,7 +152,7 @@ VIDEO_START( tp84 )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tp84_state *state = machine.driver_data<tp84_state>();
int offs;
@@ -175,7 +175,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( tp84 )
+SCREEN_UPDATE_IND16( tp84 )
{
tp84_state *state = screen.machine().driver_data<tp84_state>();
rectangle clip = cliprect;
diff --git a/src/mame/video/trackfld.c b/src/mame/video/trackfld.c
index f34f067e6a1..ac182256d3e 100644
--- a/src/mame/video/trackfld.c
+++ b/src/mame/video/trackfld.c
@@ -192,7 +192,7 @@ VIDEO_START( atlantol )
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
trackfld_state *state = machine.driver_data<trackfld_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -248,7 +248,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
-SCREEN_UPDATE( trackfld )
+SCREEN_UPDATE_IND16( trackfld )
{
trackfld_state *state = screen.machine().driver_data<trackfld_state>();
int row, scrollx;
diff --git a/src/mame/video/travrusa.c b/src/mame/video/travrusa.c
index 34f9ed0ce10..b75691efa96 100644
--- a/src/mame/video/travrusa.c
+++ b/src/mame/video/travrusa.c
@@ -293,7 +293,7 @@ WRITE8_HANDLER( travrusa_flipscreen_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
travrusa_state *state = machine.driver_data<travrusa_state>();
int offs;
@@ -332,7 +332,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-SCREEN_UPDATE( travrusa )
+SCREEN_UPDATE_IND16( travrusa )
{
travrusa_state *state = screen.machine().driver_data<travrusa_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/triplhnt.c b/src/mame/video/triplhnt.c
index 085b62512c4..099577a280a 100644
--- a/src/mame/video/triplhnt.c
+++ b/src/mame/video/triplhnt.c
@@ -20,7 +20,7 @@ static TILE_GET_INFO( get_tile_info )
VIDEO_START( triplhnt )
{
triplhnt_state *state = machine.driver_data<triplhnt_state>();
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 16, 16, 16, 16);
}
@@ -32,7 +32,7 @@ static TIMER_CALLBACK( triplhnt_hit_callback )
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
triplhnt_state *state = machine.driver_data<triplhnt_state>();
int i;
@@ -74,7 +74,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/* render sprite to auxiliary bitmap */
- drawgfx_opaque(*state->m_helper, cliprect, machine.gfx[state->m_sprite_zoom],
+ drawgfx_opaque(state->m_helper, cliprect, machine.gfx[state->m_sprite_zoom],
2 * code + state->m_sprite_bank, 0, code & 8, 0,
rect.min_x, rect.min_y);
@@ -97,7 +97,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
{
for (y = rect.min_y; y <= rect.max_y; y++)
{
- pen_t a = state->m_helper->pix16(y, x);
+ pen_t a = state->m_helper.pix16(y, x);
pen_t b = bitmap.pix16(y, x);
if (a == 2 && b == 7)
@@ -118,7 +118,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
-SCREEN_UPDATE( triplhnt )
+SCREEN_UPDATE_IND16( triplhnt )
{
triplhnt_state *state = screen.machine().driver_data<triplhnt_state>();
device_t *discrete = screen.machine().device("discrete");
diff --git a/src/mame/video/truco.c b/src/mame/video/truco.c
index d75873f2b8f..83d64aac12c 100644
--- a/src/mame/video/truco.c
+++ b/src/mame/video/truco.c
@@ -31,7 +31,7 @@ PALETTE_INIT( truco )
}
}
-SCREEN_UPDATE( truco )
+SCREEN_UPDATE_IND16( truco )
{
truco_state *state = screen.machine().driver_data<truco_state>();
UINT8 *videoram = state->m_videoram;
diff --git a/src/mame/video/trucocl.c b/src/mame/video/trucocl.c
index a4fa2997ac1..f310c4d330d 100644
--- a/src/mame/video/trucocl.c
+++ b/src/mame/video/trucocl.c
@@ -79,7 +79,7 @@ VIDEO_START( trucocl )
state->m_bg_tilemap = tilemap_create( machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32 );
}
-SCREEN_UPDATE( trucocl )
+SCREEN_UPDATE_IND16( trucocl )
{
trucocl_state *state = screen.machine().driver_data<trucocl_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/tryout.c b/src/mame/video/tryout.c
index a6a775f716b..d4dd1fe715b 100644
--- a/src/mame/video/tryout.c
+++ b/src/mame/video/tryout.c
@@ -182,7 +182,7 @@ VIDEO_START( tryout )
tilemap_set_transparent_pen(state->m_fg_tilemap,0);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
tryout_state *state = machine.driver_data<tryout_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -233,7 +233,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( tryout )
+SCREEN_UPDATE_IND16( tryout )
{
tryout_state *state = screen.machine().driver_data<tryout_state>();
int scrollx = 0;
diff --git a/src/mame/video/tsamurai.c b/src/mame/video/tsamurai.c
index 2250aef42a9..48e1363bc37 100644
--- a/src/mame/video/tsamurai.c
+++ b/src/mame/video/tsamurai.c
@@ -137,7 +137,7 @@ WRITE8_HANDLER( tsamurai_fg_colorram_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
tsamurai_state *state = machine.driver_data<tsamurai_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -197,7 +197,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( tsamurai )
+SCREEN_UPDATE_IND16( tsamurai )
{
tsamurai_state *state = screen.machine().driver_data<tsamurai_state>();
int i;
@@ -262,7 +262,7 @@ VIDEO_START( vsgongf )
state->m_foreground = tilemap_create(machine, get_vsgongf_tile_info,tilemap_scan_rows,8,8,32,32);
}
-SCREEN_UPDATE( vsgongf )
+SCREEN_UPDATE_IND16( vsgongf )
{
tsamurai_state *state = screen.machine().driver_data<tsamurai_state>();
#ifdef MAME_DEBUG
diff --git a/src/mame/video/tubep.c b/src/mame/video/tubep.c
index 3dae591f2d5..09a291e625d 100644
--- a/src/mame/video/tubep.c
+++ b/src/mame/video/tubep.c
@@ -585,7 +585,7 @@ void tubep_vblank_end(running_machine &machine)
}
-SCREEN_UPDATE( tubep )
+SCREEN_UPDATE_IND16( tubep )
{
tubep_state *state = screen.machine().driver_data<tubep_state>();
int DISP_ = state->m_DISP^1;
@@ -743,7 +743,7 @@ WRITE8_HANDLER( rjammer_background_page_w )
}
-SCREEN_UPDATE( rjammer )
+SCREEN_UPDATE_IND16( rjammer )
{
tubep_state *state = screen.machine().driver_data<tubep_state>();
int DISP_ = state->m_DISP^1;
diff --git a/src/mame/video/tumbleb.c b/src/mame/video/tumbleb.c
index 7a1ffa80f81..5229589b2df 100644
--- a/src/mame/video/tumbleb.c
+++ b/src/mame/video/tumbleb.c
@@ -19,7 +19,7 @@ to switch between 8*8 tiles and 16*16 tiles.
/******************************************************************************/
-static void tumblepb_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void tumblepb_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
tumbleb_state *state = machine.driver_data<tumbleb_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -85,7 +85,7 @@ static void tumblepb_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void jumpkids_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void jumpkids_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
tumbleb_state *state = machine.driver_data<tumbleb_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -152,7 +152,7 @@ static void jumpkids_draw_sprites( running_machine &machine, bitmap_t &bitmap, c
}
}
-static void fncywld_draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void fncywld_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
tumbleb_state *state = machine.driver_data<tumbleb_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -603,7 +603,7 @@ VIDEO_START( suprtrio )
/******************************************************************************/
-SCREEN_UPDATE( tumblepb )
+SCREEN_UPDATE_IND16( tumblepb )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -639,7 +639,7 @@ SCREEN_UPDATE( tumblepb )
return 0;
}
-SCREEN_UPDATE( jumpkids )
+SCREEN_UPDATE_IND16( jumpkids )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -675,7 +675,7 @@ SCREEN_UPDATE( jumpkids )
return 0;
}
-SCREEN_UPDATE( semicom )
+SCREEN_UPDATE_IND16( semicom )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -711,7 +711,7 @@ SCREEN_UPDATE( semicom )
return 0;
}
-SCREEN_UPDATE( semicom_altoffsets )
+SCREEN_UPDATE_IND16( semicom_altoffsets )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offsx, offsy, offsx2;
@@ -740,7 +740,7 @@ SCREEN_UPDATE( semicom_altoffsets )
return 0;
}
-SCREEN_UPDATE( bcstory )
+SCREEN_UPDATE_IND16( bcstory )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -778,7 +778,7 @@ SCREEN_UPDATE( bcstory )
return 0;
}
-SCREEN_UPDATE( semibase )
+SCREEN_UPDATE_IND16( semibase )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -807,7 +807,7 @@ SCREEN_UPDATE( semibase )
return 0;
}
-SCREEN_UPDATE( sdfight )
+SCREEN_UPDATE_IND16( sdfight )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -837,7 +837,7 @@ SCREEN_UPDATE( sdfight )
-SCREEN_UPDATE( fncywld )
+SCREEN_UPDATE_IND16( fncywld )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
@@ -874,7 +874,7 @@ SCREEN_UPDATE( fncywld )
}
-SCREEN_UPDATE( jumppop )
+SCREEN_UPDATE_IND16( jumppop )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
@@ -906,7 +906,7 @@ SCREEN_UPDATE( jumppop )
}
-SCREEN_UPDATE( suprtrio )
+SCREEN_UPDATE_IND16( suprtrio )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
@@ -934,7 +934,7 @@ popmessage("%04x %04x %04x %04x %04x %04x %04x %04x",
return 0;
}
-SCREEN_UPDATE( pangpang )
+SCREEN_UPDATE_IND16( pangpang )
{
tumbleb_state *state = screen.machine().driver_data<tumbleb_state>();
int offs, offs2;
diff --git a/src/mame/video/tumblep.c b/src/mame/video/tumblep.c
index ee1d209228f..04b924862fa 100644
--- a/src/mame/video/tumblep.c
+++ b/src/mame/video/tumblep.c
@@ -19,7 +19,7 @@ to switch between 8*8 tiles and 16*16 tiles.
#include "video/decospr.h"
-SCREEN_UPDATE( tumblep )
+SCREEN_UPDATE_IND16( tumblep )
{
tumblep_state *state = screen.machine().driver_data<tumblep_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
@@ -32,6 +32,6 @@ SCREEN_UPDATE( tumblep )
deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0);
- screen.machine().device<decospr_device>("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram, 0x400);
+ screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400);
return 0;
}
diff --git a/src/mame/video/tunhunt.c b/src/mame/video/tunhunt.c
index d52542ec822..f75e994d035 100644
--- a/src/mame/video/tunhunt.c
+++ b/src/mame/video/tunhunt.c
@@ -200,7 +200,7 @@ static void set_pens(running_machine &machine)
}
}
-static void draw_motion_object(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_motion_object(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/*
* VSTRLO 0x1202
@@ -214,7 +214,7 @@ static void draw_motion_object(running_machine &machine, bitmap_t &bitmap, const
*/
tunhunt_state *state = machine.driver_data<tunhunt_state>();
- bitmap_t &tmpbitmap = state->m_tmpbitmap;
+ bitmap_ind16 &tmpbitmap = state->m_tmpbitmap;
UINT8 *spriteram = state->m_spriteram;
UINT8 *tunhunt_ram = state->m_workram;
//int skip = tunhunt_ram[MOBST];
@@ -272,7 +272,7 @@ static void draw_motion_object(running_machine &machine, bitmap_t &bitmap, const
);
}
-static void draw_box(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_box(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/*
This is unnecessarily slow, but the box priorities aren't completely understood,
@@ -327,7 +327,7 @@ static void draw_box(running_machine &machine, bitmap_t &bitmap, const rectangle
/* "shell" graphics are 16x16 pixel tiles used for player shots and targeting cursor */
static void draw_shell(running_machine &machine,
- bitmap_t &bitmap,
+ bitmap_ind16 &bitmap,
const rectangle &cliprect,
int picture_code,
int hposition,
@@ -376,7 +376,7 @@ static void draw_shell(running_machine &machine,
255-hposition-16,vstart-32,0 );
}
-SCREEN_UPDATE( tunhunt )
+SCREEN_UPDATE_IND16( tunhunt )
{
tunhunt_state *state = screen.machine().driver_data<tunhunt_state>();
set_pens(screen.machine());
diff --git a/src/mame/video/turbo.c b/src/mame/video/turbo.c
index 0699a3aeb04..0b3ec9f7f66 100644
--- a/src/mame/video/turbo.c
+++ b/src/mame/video/turbo.c
@@ -404,10 +404,10 @@ static UINT32 turbo_get_sprite_bits(running_machine &machine, UINT8 road, sprite
*
*************************************/
-SCREEN_UPDATE( turbo )
+SCREEN_UPDATE_IND16( turbo )
{
turbo_state *state = screen.machine().driver_data<turbo_state>();
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
const UINT8 *road_gfxdata = screen.machine().region("gfx3")->base();
const UINT8 *prom_base = screen.machine().region("proms")->base();
const UINT8 *pr1114 = prom_base + 0x000;
@@ -759,10 +759,10 @@ static UINT32 subroc3d_get_sprite_bits(running_machine &machine, sprite_info *sp
*
*************************************/
-SCREEN_UPDATE( subroc3d )
+SCREEN_UPDATE_IND16( subroc3d )
{
turbo_state *state = screen.machine().driver_data<turbo_state>();
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
const UINT8 *prom_base = screen.machine().region("proms")->base();
const UINT8 *pr1419 = prom_base + 0x000;
const UINT8 *pr1620 = prom_base + 0x200;
@@ -979,10 +979,10 @@ static UINT32 buckrog_get_sprite_bits(running_machine &machine, sprite_info *spr
*
*************************************/
-SCREEN_UPDATE( buckrog )
+SCREEN_UPDATE_IND16( buckrog )
{
turbo_state *state = screen.machine().driver_data<turbo_state>();
- bitmap_t &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
+ bitmap_ind16 &fgpixmap = tilemap_get_pixmap(state->m_fg_tilemap);
const UINT8 *bgcolor = screen.machine().region("gfx3")->base();
const UINT8 *prom_base = screen.machine().region("proms")->base();
const UINT8 *pr5194 = prom_base + 0x000;
diff --git a/src/mame/video/tutankhm.c b/src/mame/video/tutankhm.c
index 7e5d24ee608..db7f2bf7e91 100644
--- a/src/mame/video/tutankhm.c
+++ b/src/mame/video/tutankhm.c
@@ -59,7 +59,7 @@ static void get_pens( running_machine &machine, pen_t *pens )
*
*************************************/
-SCREEN_UPDATE( tutankhm )
+SCREEN_UPDATE_RGB32( tutankhm )
{
tutankhm_state *state = screen.machine().driver_data<tutankhm_state>();
int xorx = state->m_flip_x ? 255 : 0;
diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c
index 84f5398500e..d0aeb2256cb 100644
--- a/src/mame/video/twin16.c
+++ b/src/mame/video/twin16.c
@@ -221,7 +221,7 @@ void twin16_spriteram_process( running_machine &machine )
state->m_need_process_spriteram = 0;
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap )
{
twin16_state *state = machine.driver_data<twin16_state>();
const UINT16 *source = 0x1800+machine.generic.buffered_spriteram.u16 + 0x800 - 4;
@@ -344,7 +344,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap )
-static void draw_layer( running_machine &machine, bitmap_t &bitmap, int opaque )
+static void draw_layer( running_machine &machine, bitmap_ind16 &bitmap, int opaque )
{
twin16_state *state = machine.driver_data<twin16_state>();
UINT16 *videoram = state->m_videoram;
@@ -520,7 +520,7 @@ VIDEO_START( twin16 )
state_save_register_global(machine, state->m_sprite_busy);
}
-SCREEN_UPDATE( twin16 )
+SCREEN_UPDATE_IND16( twin16 )
{
twin16_state *state = screen.machine().driver_data<twin16_state>();
int text_flip=0;
diff --git a/src/mame/video/twincobr.c b/src/mame/video/twincobr.c
index c287deaf090..4f5012ecf19 100644
--- a/src/mame/video/twincobr.c
+++ b/src/mame/video/twincobr.c
@@ -458,7 +458,7 @@ static void twincobr_log_vram(running_machine &machine)
Sprite Handlers
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
twincobr_state *state = machine.driver_data<twincobr_state>();
int offs;
@@ -494,10 +494,10 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
/***************************************************************************
- Draw the game screen in the given bitmap_t.
+ Draw the game screen in the given bitmap_ind16.
***************************************************************************/
-SCREEN_UPDATE( toaplan0 )
+SCREEN_UPDATE_IND16( toaplan0 )
{
twincobr_state *state = screen.machine().driver_data<twincobr_state>();
twincobr_log_vram(screen.machine());
diff --git a/src/mame/video/tx1.c b/src/mame/video/tx1.c
index 98fa7e4aa32..3e484a7a048 100644
--- a/src/mame/video/tx1.c
+++ b/src/mame/video/tx1.c
@@ -1110,7 +1110,7 @@ VIDEO_START( tx1 )
{
tx1_state *state = machine.driver_data<tx1_state>();
/* Allocate a large bitmap that covers the three screens */
- state->m_bitmap = auto_bitmap_alloc(machine, 768, 256, BITMAP_FORMAT_INDEXED16);
+ state->m_bitmap = auto_bitmap_ind16_alloc(machine, 768, 256);
/* Allocate some bitmaps */
state->m_chr_bmp = auto_alloc_array(machine, UINT8, 256 * 3 * 240);
@@ -1131,7 +1131,7 @@ SCREEN_EOF( tx1 )
state->m_vregs.slin_val += state->m_vregs.slin_inc;
}
-static void tx1_combine_layers(running_machine &machine, bitmap_t &bitmap, int screen)
+static void tx1_combine_layers(running_machine &machine, bitmap_ind16 &bitmap, int screen)
{
tx1_state *state = machine.driver_data<tx1_state>();
int x, y;
@@ -1182,7 +1182,7 @@ static void tx1_combine_layers(running_machine &machine, bitmap_t &bitmap, int s
}
}
-SCREEN_UPDATE( tx1_left )
+SCREEN_UPDATE_IND16( tx1_left )
{
tx1_state *state = screen.machine().driver_data<tx1_state>();
@@ -1196,13 +1196,13 @@ SCREEN_UPDATE( tx1_left )
return 0;
}
-SCREEN_UPDATE( tx1_middle )
+SCREEN_UPDATE_IND16( tx1_middle )
{
tx1_combine_layers(screen.machine(), bitmap, 1);
return 0;
}
-SCREEN_UPDATE( tx1_right )
+SCREEN_UPDATE_IND16( tx1_right )
{
tx1_combine_layers(screen.machine(), bitmap, 2);
return 0;
@@ -2929,7 +2929,7 @@ WRITE16_HANDLER( buggyboy_scolst_w )
*
*************************************/
-static void bb_combine_layers(running_machine &machine, bitmap_t &bitmap, int screen)
+static void bb_combine_layers(running_machine &machine, bitmap_ind16 &bitmap, int screen)
{
tx1_state *state = machine.driver_data<tx1_state>();
UINT8 *chr_pal = machine.region("proms")->base() + 0x400;
@@ -3039,7 +3039,7 @@ SCREEN_EOF( buggyboy )
}
-SCREEN_UPDATE( buggyboy_left )
+SCREEN_UPDATE_IND16( buggyboy_left )
{
tx1_state *state = screen.machine().driver_data<tx1_state>();
@@ -3054,19 +3054,19 @@ SCREEN_UPDATE( buggyboy_left )
return 0;
}
-SCREEN_UPDATE( buggyboy_middle )
+SCREEN_UPDATE_IND16( buggyboy_middle )
{
bb_combine_layers(screen.machine(), bitmap, 1);
return 0;
}
-SCREEN_UPDATE( buggyboy_right )
+SCREEN_UPDATE_IND16( buggyboy_right )
{
bb_combine_layers(screen.machine(), bitmap, 2);
return 0;
}
-SCREEN_UPDATE( buggybjr )
+SCREEN_UPDATE_IND16( buggybjr )
{
tx1_state *state = screen.machine().driver_data<tx1_state>();
memset(state->m_obj_bmp, 0, 256*240);
diff --git a/src/mame/video/ultraman.c b/src/mame/video/ultraman.c
index a9eae153925..bfc19b753ec 100644
--- a/src/mame/video/ultraman.c
+++ b/src/mame/video/ultraman.c
@@ -122,7 +122,7 @@ WRITE16_HANDLER( ultraman_gfxctrl_w )
***************************************************************************/
-SCREEN_UPDATE( ultraman )
+SCREEN_UPDATE_IND16( ultraman )
{
ultraman_state *state = screen.machine().driver_data<ultraman_state>();
diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c
index 30eddcdd9ca..4302d28b6ac 100644
--- a/src/mame/video/ultratnk.c
+++ b/src/mame/video/ultratnk.c
@@ -49,13 +49,13 @@ static TILE_GET_INFO( ultratnk_tile_info )
VIDEO_START( ultratnk )
{
ultratnk_state *state = machine.driver_data<ultratnk_state>();
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
state->m_playfield = tilemap_create(machine, ultratnk_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-SCREEN_UPDATE( ultratnk )
+SCREEN_UPDATE_IND16( ultratnk )
{
ultratnk_state *state = screen.machine().driver_data<ultratnk_state>();
UINT8 *videoram = state->m_videoram;
@@ -120,12 +120,12 @@ SCREEN_EOF( ultratnk )
rect &= screen.machine().primary_screen->visible_area();
- tilemap_draw(*state->m_helper, rect, state->m_playfield, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
if (code & 4)
bank = 32;
- drawgfx_transpen(*state->m_helper, rect, screen.machine().gfx[1],
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
(code >> 3) | bank,
4,
0, 0,
@@ -134,7 +134,7 @@ SCREEN_EOF( ultratnk )
for (y = rect.min_y; y <= rect.max_y; y++)
for (x = rect.min_x; x <= rect.max_x; x++)
- if (colortable_entry_get_value(screen.machine().colortable, state->m_helper->pix16(y, x)) != BG)
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != BG)
state->m_collision[i] = 1;
}
diff --git a/src/mame/video/undrfire.c b/src/mame/video/undrfire.c
index 55e9362ea95..cb4b2ba3c80 100644
--- a/src/mame/video/undrfire.c
+++ b/src/mame/video/undrfire.c
@@ -64,7 +64,7 @@ Heavy use is made of sprite zooming.
***************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
{
undrfire_state *state = machine.driver_data<undrfire_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -208,7 +208,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
-static void draw_sprites_cbombers(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
+static void draw_sprites_cbombers(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs)
{
undrfire_state *state = machine.driver_data<undrfire_state>();
UINT32 *spriteram32 = state->m_spriteram;
@@ -347,7 +347,7 @@ static void draw_sprites_cbombers(running_machine &machine, bitmap_t &bitmap,con
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( undrfire )
+SCREEN_UPDATE_IND16( undrfire )
{
device_t *tc0100scn = screen.machine().device("tc0100scn");
device_t *tc0480scp = screen.machine().device("tc0480scp");
@@ -490,7 +490,7 @@ SCREEN_UPDATE( undrfire )
}
-SCREEN_UPDATE( cbombers )
+SCREEN_UPDATE_IND16( cbombers )
{
device_t *tc0100scn = screen.machine().device("tc0100scn");
device_t *tc0480scp = screen.machine().device("tc0480scp");
diff --git a/src/mame/video/unico.c b/src/mame/video/unico.c
index b0e83fc07b0..87b2ca72568 100644
--- a/src/mame/video/unico.c
+++ b/src/mame/video/unico.c
@@ -221,7 +221,7 @@ VIDEO_START( zeropnt2 )
***************************************************************************/
-static void unico_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void unico_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
unico_state *state = machine.driver_data<unico_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -276,7 +276,7 @@ static void unico_draw_sprites(running_machine &machine, bitmap_t &bitmap,const
}
}
-static void zeropnt2_draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void zeropnt2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
unico_state *state = machine.driver_data<unico_state>();
UINT32 *spriteram32 = (UINT32 *)state->m_spriteram;
@@ -341,7 +341,7 @@ static void zeropnt2_draw_sprites(running_machine &machine, bitmap_t &bitmap,con
***************************************************************************/
-SCREEN_UPDATE( unico )
+SCREEN_UPDATE_IND16( unico )
{
unico_state *state = screen.machine().driver_data<unico_state>();
int layers_ctrl = -1;
@@ -381,7 +381,7 @@ if ( screen.machine().input().code_pressed(KEYCODE_Z) || screen.machine().input(
return 0;
}
-SCREEN_UPDATE( zeropnt2 )
+SCREEN_UPDATE_IND16( zeropnt2 )
{
unico_state *state = screen.machine().driver_data<unico_state>();
int layers_ctrl = -1;
diff --git a/src/mame/video/usgames.c b/src/mame/video/usgames.c
index be057d62fab..ea4c910668b 100644
--- a/src/mame/video/usgames.c
+++ b/src/mame/video/usgames.c
@@ -65,7 +65,7 @@ WRITE8_HANDLER( usgames_charram_w )
}
-SCREEN_UPDATE(usgames)
+SCREEN_UPDATE_IND16(usgames)
{
usgames_state *state = screen.machine().driver_data<usgames_state>();
tilemap_draw(bitmap,cliprect,state->m_tilemap,0,0);
diff --git a/src/mame/video/vaportra.c b/src/mame/video/vaportra.c
index d2ecb72d8a7..4d197f7f495 100644
--- a/src/mame/video/vaportra.c
+++ b/src/mame/video/vaportra.c
@@ -50,7 +50,7 @@ WRITE16_HANDLER( vaportra_palette_24bit_b_w )
/******************************************************************************/
-SCREEN_UPDATE( vaportra )
+SCREEN_UPDATE_IND16( vaportra )
{
vaportra_state *state = screen.machine().driver_data<vaportra_state>();
UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff);
diff --git a/src/mame/video/vastar.c b/src/mame/video/vastar.c
index 0bc292b45dd..7797038659e 100644
--- a/src/mame/video/vastar.c
+++ b/src/mame/video/vastar.c
@@ -137,7 +137,7 @@ READ8_HANDLER( vastar_bg2videoram_r )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
vastar_state *state = machine.driver_data<vastar_state>();
UINT8 *spriteram = state->m_spriteram1;
@@ -196,7 +196,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( vastar )
+SCREEN_UPDATE_IND16( vastar )
{
vastar_state *state = screen.machine().driver_data<vastar_state>();
int i;
diff --git a/src/mame/video/vball.c b/src/mame/video/vball.c
index 125f38bafcb..a9720e67abd 100644
--- a/src/mame/video/vball.c
+++ b/src/mame/video/vball.c
@@ -114,7 +114,7 @@ void vb_mark_all_dirty( running_machine &machine )
cliprect,gfx, \
(which+order),color,flipx,flipy,sx,sy,0);
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
vball_state *state = machine.driver_data<vball_state>();
const gfx_element *gfx = machine.gfx[1];
@@ -161,7 +161,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
#undef DRAW_SPRITE
-SCREEN_UPDATE( vb )
+SCREEN_UPDATE_IND16( vb )
{
vball_state *state = screen.machine().driver_data<vball_state>();
int i;
diff --git a/src/mame/video/vdc.c b/src/mame/video/vdc.c
index ff5a5bb2cde..fdcf6db4ce1 100644
--- a/src/mame/video/vdc.c
+++ b/src/mame/video/vdc.c
@@ -46,7 +46,7 @@ typedef struct {
pair vce_address; /* Current address in the palette */
pair vce_data[512]; /* Palette data */
int current_bitmap_line; /* The current line in the display we are on */
- bitmap_t *bmp;
+ bitmap_ind16 *bmp;
}VCE;
typedef struct {
@@ -423,7 +423,7 @@ VIDEO_START( pce )
memset(vdc[1].vram, 0, 0x10000);
/* create display bitmap */
- vce.bmp = machine.primary_screen->alloc_compatible_bitmap();
+ vce.bmp = auto_bitmap_ind16_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height());
vdc[0].inc = 1;
vdc[1].inc = 1;
@@ -432,7 +432,7 @@ VIDEO_START( pce )
}
-SCREEN_UPDATE( pce )
+SCREEN_UPDATE_IND16( pce )
{
/* copy our rendering buffer to the display */
copybitmap (bitmap,*vce.bmp,0,0,0,0,cliprect);
diff --git a/src/mame/video/vdc.h b/src/mame/video/vdc.h
index 0088b187c2e..635bf49fe0a 100644
--- a/src/mame/video/vdc.h
+++ b/src/mame/video/vdc.h
@@ -2,7 +2,7 @@
#include "video/generic.h"
VIDEO_START( pce );
-SCREEN_UPDATE( pce );
+SCREEN_UPDATE_IND16( pce );
WRITE8_HANDLER ( vdc_0_w );
WRITE8_HANDLER ( vdc_1_w );
READ8_HANDLER ( vdc_0_r );
diff --git a/src/mame/video/vectrex.c b/src/mame/video/vectrex.c
index 968ac72d99b..b6de9b37fe7 100644
--- a/src/mame/video/vectrex.c
+++ b/src/mame/video/vectrex.c
@@ -153,13 +153,13 @@ static TIMER_CALLBACK(vectrex_refresh)
{
vectrex_state *state = machine.driver_data<vectrex_state>();
/* Refresh only marks the range of vectors which will be drawn
- * during the next SCREEN_UPDATE. */
+ * during the next SCREEN_UPDATE_RGB32. */
state->m_display_start = state->m_display_end;
state->m_display_end = state->m_point_index;
}
-SCREEN_UPDATE(vectrex)
+SCREEN_UPDATE_RGB32(vectrex)
{
vectrex_state *state = screen.machine().driver_data<vectrex_state>();
int i;
@@ -182,7 +182,7 @@ SCREEN_UPDATE(vectrex)
state->m_points[i].intensity);
}
- SCREEN_UPDATE_CALL(vector);
+ SCREEN_UPDATE32_CALL(vector);
vector_clear_list();
return 0;
}
diff --git a/src/mame/video/vendetta.c b/src/mame/video/vendetta.c
index 072b5ed18ac..277364dcd30 100644
--- a/src/mame/video/vendetta.c
+++ b/src/mame/video/vendetta.c
@@ -52,7 +52,7 @@ void vendetta_sprite_callback( running_machine &machine, int *code, int *color,
***************************************************************************/
-SCREEN_UPDATE( vendetta )
+SCREEN_UPDATE_IND16( vendetta )
{
vendetta_state *state = screen.machine().driver_data<vendetta_state>();
int layer[3];
diff --git a/src/mame/video/vicdual.c b/src/mame/video/vicdual.c
index 3f93b6bcac5..cc79fca8a88 100644
--- a/src/mame/video/vicdual.c
+++ b/src/mame/video/vicdual.c
@@ -29,7 +29,7 @@ WRITE8_HANDLER( vicdual_palette_bank_w )
}
-SCREEN_UPDATE( vicdual_bw )
+SCREEN_UPDATE_RGB32( vicdual_bw )
{
vicdual_state *state = screen.machine().driver_data<vicdual_state>();
UINT8 x = 0;
@@ -80,7 +80,7 @@ SCREEN_UPDATE( vicdual_bw )
}
-SCREEN_UPDATE( vicdual_color )
+SCREEN_UPDATE_RGB32( vicdual_color )
{
vicdual_state *state = screen.machine().driver_data<vicdual_state>();
UINT8 *color_prom = (UINT8 *)screen.machine().region("proms")->base();
@@ -139,12 +139,12 @@ SCREEN_UPDATE( vicdual_color )
}
-SCREEN_UPDATE( vicdual_bw_or_color )
+SCREEN_UPDATE_RGB32( vicdual_bw_or_color )
{
if (vicdual_is_cabinet_color(screen.machine()))
- SCREEN_UPDATE_CALL(vicdual_color);
+ SCREEN_UPDATE32_CALL(vicdual_color);
else
- SCREEN_UPDATE_CALL(vicdual_bw);
+ SCREEN_UPDATE32_CALL(vicdual_bw);
return 0;
}
diff --git a/src/mame/video/victory.c b/src/mame/video/victory.c
index 1158cee3a11..6d3c01a2f52 100644
--- a/src/mame/video/victory.c
+++ b/src/mame/video/victory.c
@@ -1090,7 +1090,7 @@ static TIMER_CALLBACK( bgcoll_irq_callback )
*
*************************************/
-SCREEN_UPDATE( victory )
+SCREEN_UPDATE_IND16( victory )
{
victory_state *state = screen.machine().driver_data<victory_state>();
int bgcollmask = (state->m_video_control & 4) ? 4 : 7;
diff --git a/src/mame/video/videopin.c b/src/mame/video/videopin.c
index 05ae49715e3..2e3714a7793 100644
--- a/src/mame/video/videopin.c
+++ b/src/mame/video/videopin.c
@@ -33,7 +33,7 @@ VIDEO_START( videopin )
}
-SCREEN_UPDATE( videopin )
+SCREEN_UPDATE_IND16( videopin )
{
videopin_state *state = screen.machine().driver_data<videopin_state>();
int col;
diff --git a/src/mame/video/vigilant.c b/src/mame/video/vigilant.c
index f6fe94a0e5d..5d7ba11d794 100644
--- a/src/mame/video/vigilant.c
+++ b/src/mame/video/vigilant.c
@@ -24,7 +24,7 @@ static const rectangle bottomvisiblearea(16*8, 48*8-1, 6*8, 32*8-1);
VIDEO_START( vigilant )
{
vigilant_state *state = machine.driver_data<vigilant_state>();
- state->m_bg_bitmap = auto_bitmap_alloc(machine,512*4,256,machine.primary_screen->format());
+ state->m_bg_bitmap = auto_bitmap_ind16_alloc(machine,512*4,256);
}
@@ -168,7 +168,7 @@ WRITE8_HANDLER( vigilant_rear_color_w )
???
**************************************************************************/
-static void draw_foreground(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority, int opaque )
+static void draw_foreground(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int opaque )
{
vigilant_state *state = machine.driver_data<vigilant_state>();
UINT8 *videoram = state->m_videoram;
@@ -217,7 +217,7 @@ static void draw_foreground(running_machine &machine, bitmap_t &bitmap, const re
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
vigilant_state *state = machine.driver_data<vigilant_state>();
int scrollx = 0x17a + 16*8 - (state->m_rear_horiz_scroll_low + state->m_rear_horiz_scroll_high);
@@ -233,7 +233,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
vigilant_state *state = machine.driver_data<vigilant_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -270,7 +270,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( kikcubic )
+SCREEN_UPDATE_IND16( kikcubic )
{
vigilant_state *state = screen.machine().driver_data<vigilant_state>();
UINT8 *videoram = state->m_videoram;
@@ -295,7 +295,7 @@ SCREEN_UPDATE( kikcubic )
return 0;
}
-SCREEN_UPDATE( vigilant )
+SCREEN_UPDATE_IND16( vigilant )
{
vigilant_state *state = screen.machine().driver_data<vigilant_state>();
int i;
diff --git a/src/mame/video/vindictr.c b/src/mame/video/vindictr.c
index cb27dbb26c7..9d24ea04afc 100644
--- a/src/mame/video/vindictr.c
+++ b/src/mame/video/vindictr.c
@@ -218,11 +218,11 @@ void vindictr_scanline_update(screen_device &screen, int scanline)
*
*************************************/
-SCREEN_UPDATE( vindictr )
+SCREEN_UPDATE_IND16( vindictr )
{
vindictr_state *state = screen.machine().driver_data<vindictr_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/volfied.c b/src/mame/video/volfied.c
index 330b9e550ad..69390de0c70 100644
--- a/src/mame/video/volfied.c
+++ b/src/mame/video/volfied.c
@@ -73,7 +73,7 @@ WRITE16_HANDLER( volfied_sprite_ctrl_w )
SCREEN REFRESH
*******************************************************/
-static void refresh_pixel_layer( running_machine &machine, bitmap_t &bitmap )
+static void refresh_pixel_layer( running_machine &machine, bitmap_ind16 &bitmap )
{
int x, y;
@@ -128,7 +128,7 @@ static void refresh_pixel_layer( running_machine &machine, bitmap_t &bitmap )
}
}
-SCREEN_UPDATE( volfied )
+SCREEN_UPDATE_IND16( volfied )
{
volfied_state *state = screen.machine().driver_data<volfied_state>();
diff --git a/src/mame/video/vsnes.c b/src/mame/video/vsnes.c
index 408bd622846..5f51240acb5 100644
--- a/src/mame/video/vsnes.c
+++ b/src/mame/video/vsnes.c
@@ -55,7 +55,7 @@ VIDEO_START( vsdual )
Display refresh
***************************************************************************/
-SCREEN_UPDATE( vsnes )
+SCREEN_UPDATE_IND16( vsnes )
{
/* render the ppu */
ppu2c0x_render( screen.machine().device("ppu1"), bitmap, 0, 0, 0, 0 );
@@ -63,7 +63,7 @@ SCREEN_UPDATE( vsnes )
}
-SCREEN_UPDATE( vsnes_bottom )
+SCREEN_UPDATE_IND16( vsnes_bottom )
{
ppu2c0x_render(screen.machine().device("ppu2"), bitmap, 0, 0, 0, 0);
return 0;
diff --git a/src/mame/video/vulgus.c b/src/mame/video/vulgus.c
index a60cf478dcc..4eb92278c0e 100644
--- a/src/mame/video/vulgus.c
+++ b/src/mame/video/vulgus.c
@@ -171,7 +171,7 @@ WRITE8_HANDLER( vulgus_palette_bank_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
vulgus_state *state = machine.driver_data<vulgus_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -217,7 +217,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( vulgus )
+SCREEN_UPDATE_IND16( vulgus )
{
vulgus_state *state = screen.machine().driver_data<vulgus_state>();
tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scroll_low[1] + 256 * state->m_scroll_high[1]);
diff --git a/src/mame/video/warpwarp.c b/src/mame/video/warpwarp.c
index e3a4c5aed0f..11d6b277b48 100644
--- a/src/mame/video/warpwarp.c
+++ b/src/mame/video/warpwarp.c
@@ -215,13 +215,13 @@ WRITE8_HANDLER( warpwarp_videoram_w )
***************************************************************************/
-INLINE void geebee_plot(bitmap_t &bitmap, const rectangle &cliprect, int x, int y, pen_t pen)
+INLINE void geebee_plot(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y, pen_t pen)
{
if (x >= cliprect.min_x && x <= cliprect.max_x && y >= cliprect.min_y && y <= cliprect.max_y)
bitmap.pix16(y, x) = pen;
}
-static void draw_ball(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect,pen_t pen)
+static void draw_ball(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect,pen_t pen)
{
warpwarp_state *state = machine.driver_data<warpwarp_state>();
if (state->m_ball_on)
@@ -243,7 +243,7 @@ static void draw_ball(running_machine &machine, bitmap_t &bitmap, const rectangl
}
}
-SCREEN_UPDATE( geebee )
+SCREEN_UPDATE_IND16( geebee )
{
warpwarp_state *state = screen.machine().driver_data<warpwarp_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/warriorb.c b/src/mame/video/warriorb.c
index 010925a14b1..0abfc96cda1 100644
--- a/src/mame/video/warriorb.c
+++ b/src/mame/video/warriorb.c
@@ -17,7 +17,7 @@ VIDEO_START( warriorb )
SPRITE DRAW ROUTINE
************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int x_offs, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs )
{
warriorb_state *state = machine.driver_data<warriorb_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -84,7 +84,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
SCREEN REFRESH
**************************************************************/
-static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect, int xoffs, device_t *tc0100scn)
+static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, device_t *tc0100scn)
{
UINT8 layer[3], nodraw;
@@ -116,5 +116,5 @@ static UINT32 update_screen(screen_device &screen, bitmap_t &bitmap, const recta
return 0;
}
-SCREEN_UPDATE( warriorb_left ) { return update_screen(screen, bitmap, cliprect, 40 * 8 * 0, screen.machine().driver_data<warriorb_state>()->m_tc0100scn_1); }
-SCREEN_UPDATE( warriorb_right ) { return update_screen(screen, bitmap, cliprect, 40 * 8 * 1, screen.machine().driver_data<warriorb_state>()->m_tc0100scn_2); }
+SCREEN_UPDATE_IND16( warriorb_left ) { return update_screen(screen, bitmap, cliprect, 40 * 8 * 0, screen.machine().driver_data<warriorb_state>()->m_tc0100scn_1); }
+SCREEN_UPDATE_IND16( warriorb_right ) { return update_screen(screen, bitmap, cliprect, 40 * 8 * 1, screen.machine().driver_data<warriorb_state>()->m_tc0100scn_2); }
diff --git a/src/mame/video/wc90.c b/src/mame/video/wc90.c
index 5a6ca91bf56..e6dcb810b29 100644
--- a/src/mame/video/wc90.c
+++ b/src/mame/video/wc90.c
@@ -167,12 +167,12 @@ static const char p64x64[4][16] = {
{ 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
};
-static void draw_sprite_16x16(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_16x16(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
WC90_DRAW_SPRITE( code, sx, sy );
}
-static void draw_sprite_16x32(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_16x32(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
if ( bank & 2 ) {
WC90_DRAW_SPRITE( code+1, sx, sy+16 );
@@ -183,7 +183,7 @@ static void draw_sprite_16x32(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void draw_sprite_16x64(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_16x64(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
if ( bank & 2 ) {
WC90_DRAW_SPRITE( code+3, sx, sy+48 );
@@ -198,7 +198,7 @@ static void draw_sprite_16x64(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void draw_sprite_32x16(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_32x16(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
if ( bank & 1 ) {
WC90_DRAW_SPRITE( code+1, sx+16, sy );
@@ -209,7 +209,7 @@ static void draw_sprite_32x16(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void draw_sprite_32x32(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_32x32(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
const char *p = p32x32[ bank&3 ];
@@ -220,7 +220,7 @@ static void draw_sprite_32x32(running_machine &machine, bitmap_t &bitmap, const
WC90_DRAW_SPRITE( code+p[3], sx+16, sy+16 );
}
-static void draw_sprite_32x64(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_32x64(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
const char *p = p32x64[ bank&3 ];
@@ -235,7 +235,7 @@ static void draw_sprite_32x64(running_machine &machine, bitmap_t &bitmap, const
WC90_DRAW_SPRITE( code+p[7], sx+16, sy+48 );
}
-static void draw_sprite_64x16(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_64x16(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
if ( bank & 1 ) {
WC90_DRAW_SPRITE( code+3, sx+48, sy );
@@ -250,7 +250,7 @@ static void draw_sprite_64x16(running_machine &machine, bitmap_t &bitmap, const
}
}
-static void draw_sprite_64x32(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_64x32(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
const char *p = p64x32[ bank&3 ];
@@ -265,7 +265,7 @@ static void draw_sprite_64x32(running_machine &machine, bitmap_t &bitmap, const
WC90_DRAW_SPRITE( code+p[7], sx+48, sy+16 );
}
-static void draw_sprite_64x64(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_64x64(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
const char *p = p64x64[ bank&3 ];
@@ -289,12 +289,12 @@ static void draw_sprite_64x64(running_machine &machine, bitmap_t &bitmap, const
WC90_DRAW_SPRITE( code+p[15], sx+48, sy+48 );
}
-static void draw_sprite_invalid(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int code,
+static void draw_sprite_invalid(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int code,
int sx, int sy, int bank, int flags ) {
logerror("8 pixel sprite size not supported\n" );
}
-typedef void (*draw_sprites_func)(running_machine &, bitmap_t &, const rectangle &, int, int, int, int, int );
+typedef void (*draw_sprites_func)(running_machine &, bitmap_ind16 &, const rectangle &, int, int, int, int, int );
static const draw_sprites_func draw_sprites_proc[16] = {
draw_sprite_invalid, /* 0000 = 08x08 */
@@ -315,7 +315,7 @@ static const draw_sprites_func draw_sprites_proc[16] = {
draw_sprite_64x64 /* 1111 = 64x64 */
};
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
wc90_state *state = machine.driver_data<wc90_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -345,7 +345,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
#undef WC90_DRAW_SPRITE
-SCREEN_UPDATE( wc90 )
+SCREEN_UPDATE_IND16( wc90 )
{
wc90_state *state = screen.machine().driver_data<wc90_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,state->m_scroll2xlo[0] + 256 * state->m_scroll2xhi[0]);
diff --git a/src/mame/video/wc90b.c b/src/mame/video/wc90b.c
index ffcf40ad75e..0a471f0aee6 100644
--- a/src/mame/video/wc90b.c
+++ b/src/mame/video/wc90b.c
@@ -98,7 +98,7 @@ WRITE8_HANDLER( wc90b_txvideoram_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
{
wc90b_state *state = machine.driver_data<wc90b_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -132,7 +132,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( wc90b )
+SCREEN_UPDATE_IND16( wc90b )
{
wc90b_state *state = screen.machine().driver_data<wc90b_state>();
tilemap_set_scrollx(state->m_bg_tilemap,0,8 * (state->m_scroll2x[0] & 0x7f) + 256 - 4 + (state->m_scroll_x_lo[0] & 0x07));
diff --git a/src/mame/video/wecleman.c b/src/mame/video/wecleman.c
index 31709655fc1..d9d0bd2c697 100644
--- a/src/mame/video/wecleman.c
+++ b/src/mame/video/wecleman.c
@@ -169,7 +169,8 @@ static void sortsprite(int *idx_array, int *key_array, int size)
}
// draws a 8bpp palette sprites on a 16bpp direct RGB target (sub-par implementation)
-static void do_blit_zoom32(wecleman_state *state, bitmap_t &bitmap, const rectangle &cliprect, struct sprite *sprite)
+template<class _BitmapClass>
+static void do_blit_zoom32(wecleman_state *state, _BitmapClass &bitmap, const rectangle &cliprect, struct sprite *sprite)
{
#define PRECISION_X 20
#define PRECISION_Y 20
@@ -256,11 +257,10 @@ static void do_blit_zoom32(wecleman_state *state, bitmap_t &bitmap, const rectan
{
UINT8 *row_base = sprite->pen_data + (src_f0y>>PRECISION_Y) * sprite->line_offset;
src_fpx = src_f0x;
+ typename _BitmapClass::pixel_t *dst_ptr = &bitmap.pix(sy);
if (bitmap.format() == BITMAP_FORMAT_RGB32) // Wec Le Mans
{
- UINT32 *dst_ptr = &bitmap.pix32(sy);
-
if (!sprite->shadow_mode)
{
for (sx = x1; sx != x2; sx += dx)
@@ -291,7 +291,6 @@ static void do_blit_zoom32(wecleman_state *state, bitmap_t &bitmap, const rectan
}
else // Hot Chase
{
- UINT16 *dst_ptr = &bitmap.pix16(sy);
pen_t base = sprite->pal_base;
if (!sprite->shadow_mode)
@@ -330,7 +329,8 @@ static void do_blit_zoom32(wecleman_state *state, bitmap_t &bitmap, const rectan
}
}
-static void sprite_draw(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+template<class _BitmapClass>
+static void sprite_draw(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect)
{
wecleman_state *state = machine.driver_data<wecleman_state>();
int i;
@@ -539,7 +539,7 @@ WRITE16_HANDLER( wecleman_pageram_w )
------------------------------------------------------------------------*/
-static void wecleman_draw_road(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void wecleman_draw_road(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int priority)
{
wecleman_state *state = machine.driver_data<wecleman_state>();
// must be powers of 2
@@ -657,7 +657,7 @@ static void wecleman_draw_road(running_machine &machine, bitmap_t &bitmap, const
------------------------------------------------------------------------*/
// blends two 8x8x16bpp direct RGB tilemaps
-static void draw_cloud(bitmap_t &bitmap,
+static void draw_cloud(bitmap_rgb32 &bitmap,
const gfx_element *gfx,
UINT16 *tm_base,
int x0, int y0, // target coordinate
@@ -792,7 +792,7 @@ static void draw_cloud(bitmap_t &bitmap,
------------------------------------------------------------------------*/
-static void hotchase_draw_road(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void hotchase_draw_road(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
wecleman_state *state = machine.driver_data<wecleman_state>();
/* Referred to what's in the ROMs */
@@ -1022,7 +1022,7 @@ VIDEO_START( hotchase )
Video Updates
***************************************************************************/
-SCREEN_UPDATE( wecleman )
+SCREEN_UPDATE_RGB32( wecleman )
{
wecleman_state *state = screen.machine().driver_data<wecleman_state>();
const pen_t *mrct;
@@ -1116,7 +1116,7 @@ SCREEN_UPDATE( wecleman )
Hot Chase
***************************************************************************/
-SCREEN_UPDATE( hotchase )
+SCREEN_UPDATE_IND16( hotchase )
{
wecleman_state *state = screen.machine().driver_data<wecleman_state>();
device_t *k051316_1 = screen.machine().device("k051316_1");
diff --git a/src/mame/video/welltris.c b/src/mame/video/welltris.c
index ea786f1b5c8..398a3c41960 100644
--- a/src/mame/video/welltris.c
+++ b/src/mame/video/welltris.c
@@ -29,7 +29,7 @@ WRITE16_HANDLER( welltris_spriteram_w )
/* Sprite Drawing is pretty much the same as fromance.c */
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
static const UINT8 zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
welltris_state *state = machine.driver_data<welltris_state>();
@@ -224,7 +224,7 @@ VIDEO_START( welltris )
tilemap_set_transparent_pen(state->m_char_tilemap, 15);
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
welltris_state *state = machine.driver_data<welltris_state>();
int x, y;
@@ -240,7 +240,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
}
-SCREEN_UPDATE( welltris )
+SCREEN_UPDATE_IND16( welltris )
{
welltris_state *state = screen.machine().driver_data<welltris_state>();
tilemap_set_scrollx(state->m_char_tilemap, 0, state->m_scrollx);
diff --git a/src/mame/video/wgp.c b/src/mame/video/wgp.c
index 558fdb1b5bd..901cb23f892 100644
--- a/src/mame/video/wgp.c
+++ b/src/mame/video/wgp.c
@@ -346,7 +346,7 @@ static const UINT8 ylookup[16] =
2, 2, 3, 3,
2, 2, 3, 3 };
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int y_offs )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs )
{
wgp_state *state = machine.driver_data<wgp_state>();
UINT16 *spriteram = state->m_spriteram;
@@ -486,8 +486,8 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
CUSTOM DRAW
*********************************************************/
-INLINE void bryan2_drawscanline( bitmap_t &bitmap, int x, int y, int length,
- const UINT16 *src, int transparent, UINT32 orient, bitmap_t &priority, int pri )
+INLINE void bryan2_drawscanline( bitmap_ind16 &bitmap, int x, int y, int length,
+ const UINT16 *src, int transparent, UINT32 orient, bitmap_ind8 &priority, int pri )
{
UINT16 *dsti = &bitmap.pix16(y, x);
UINT8 *dstp = &priority.pix8(y, x);
@@ -518,11 +518,11 @@ INLINE void bryan2_drawscanline( bitmap_t &bitmap, int x, int y, int length,
-static void wgp_piv_layer_draw( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
+static void wgp_piv_layer_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority )
{
wgp_state *state = machine.driver_data<wgp_state>();
- bitmap_t &srcbitmap = tilemap_get_pixmap(state->m_piv_tilemap[layer]);
- bitmap_t &flagsbitmap = tilemap_get_flagsmap(state->m_piv_tilemap[layer]);
+ bitmap_ind16 &srcbitmap = tilemap_get_pixmap(state->m_piv_tilemap[layer]);
+ bitmap_ind8 &flagsbitmap = tilemap_get_flagsmap(state->m_piv_tilemap[layer]);
UINT16 *dst16,*src16;
UINT8 *tsrc;
@@ -643,7 +643,7 @@ static void wgp_piv_layer_draw( running_machine &machine, bitmap_t &bitmap, cons
SCREEN REFRESH
**************************************************************/
-SCREEN_UPDATE( wgp )
+SCREEN_UPDATE_IND16( wgp )
{
wgp_state *state = screen.machine().driver_data<wgp_state>();
int i;
diff --git a/src/mame/video/williams.c b/src/mame/video/williams.c
index c2dbd4ecb5b..16bb649b45a 100644
--- a/src/mame/video/williams.c
+++ b/src/mame/video/williams.c
@@ -172,7 +172,7 @@ VIDEO_START( williams2 )
*
*************************************/
-SCREEN_UPDATE( williams )
+SCREEN_UPDATE_RGB32( williams )
{
williams_state *state = screen.machine().driver_data<williams_state>();
rgb_t pens[16];
@@ -200,7 +200,7 @@ SCREEN_UPDATE( williams )
}
-SCREEN_UPDATE( blaster )
+SCREEN_UPDATE_RGB32( blaster )
{
williams_state *state = screen.machine().driver_data<williams_state>();
rgb_t pens[16];
@@ -243,7 +243,7 @@ SCREEN_UPDATE( blaster )
}
-SCREEN_UPDATE( williams2 )
+SCREEN_UPDATE_RGB32( williams2 )
{
williams_state *state = screen.machine().driver_data<williams_state>();
rgb_t pens[16];
diff --git a/src/mame/video/wiping.c b/src/mame/video/wiping.c
index a4862a5dc28..8a07aadc4f9 100644
--- a/src/mame/video/wiping.c
+++ b/src/mame/video/wiping.c
@@ -86,7 +86,7 @@ WRITE8_HANDLER( wiping_flipscreen_w )
}
-SCREEN_UPDATE( wiping )
+SCREEN_UPDATE_IND16( wiping )
{
wiping_state *state = screen.machine().driver_data<wiping_state>();
UINT8 *spriteram = state->m_spriteram;
diff --git a/src/mame/video/wiz.c b/src/mame/video/wiz.c
index f471bea5748..af3394c167e 100644
--- a/src/mame/video/wiz.c
+++ b/src/mame/video/wiz.c
@@ -97,7 +97,7 @@ WRITE8_HANDLER( wiz_flipy_w )
state->m_flipy = data;
}
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int bank, int colortype)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank, int colortype)
{
wiz_state *state = machine.driver_data<wiz_state>();
UINT8 *videoram = state->m_videoram;
@@ -138,7 +138,7 @@ static void draw_background(running_machine &machine, bitmap_t &bitmap, const re
}
}
-static void draw_foreground(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int colortype)
+static void draw_foreground(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int colortype)
{
wiz_state *state = machine.driver_data<wiz_state>();
int offs;
@@ -177,7 +177,7 @@ static void draw_foreground(running_machine &machine, bitmap_t &bitmap, const re
}
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
const rectangle &cliprect, UINT8* sprite_ram,
int bank)
{
@@ -206,7 +206,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,
}
-SCREEN_UPDATE( kungfut )
+SCREEN_UPDATE_IND16( kungfut )
{
wiz_state *state = screen.machine().driver_data<wiz_state>();
bitmap.fill(state->m_bgpen, cliprect);
@@ -217,7 +217,7 @@ SCREEN_UPDATE( kungfut )
return 0;
}
-SCREEN_UPDATE( wiz )
+SCREEN_UPDATE_IND16( wiz )
{
wiz_state *state = screen.machine().driver_data<wiz_state>();
int bank;
@@ -238,7 +238,7 @@ SCREEN_UPDATE( wiz )
}
-SCREEN_UPDATE( stinger )
+SCREEN_UPDATE_IND16( stinger )
{
wiz_state *state = screen.machine().driver_data<wiz_state>();
bitmap.fill(state->m_bgpen, cliprect);
diff --git a/src/mame/video/wolfpack.c b/src/mame/video/wolfpack.c
index 6f84d06a00f..48745e0e484 100644
--- a/src/mame/video/wolfpack.c
+++ b/src/mame/video/wolfpack.c
@@ -116,7 +116,7 @@ VIDEO_START( wolfpack )
state->m_LFSR = auto_alloc_array(machine, UINT8, 0x8000);
- state->m_helper = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_helper.allocate(machine.primary_screen->width(), machine.primary_screen->height());
for (i = 0; i < 0x8000; i++)
{
@@ -131,7 +131,7 @@ VIDEO_START( wolfpack )
}
-static void draw_ship(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_ship(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
wolfpack_state *state = machine.driver_data<wolfpack_state>();
static const UINT32 scaler[] =
@@ -167,7 +167,7 @@ static void draw_ship(running_machine &machine, bitmap_t &bitmap, const rectangl
}
-static void draw_torpedo(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_torpedo(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
wolfpack_state *state = machine.driver_data<wolfpack_state>();
int count = 0;
@@ -201,7 +201,7 @@ static void draw_torpedo(running_machine &machine, bitmap_t &bitmap, const recta
}
-static void draw_pt(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_pt(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
wolfpack_state *state = machine.driver_data<wolfpack_state>();
rectangle rect = cliprect;
@@ -230,7 +230,7 @@ static void draw_pt(running_machine &machine, bitmap_t &bitmap, const rectangle
}
-static void draw_water(colortable_t *colortable, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_water(colortable_t *colortable, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle rect = cliprect;
@@ -250,7 +250,7 @@ static void draw_water(colortable_t *colortable, bitmap_t &bitmap, const rectang
}
-SCREEN_UPDATE( wolfpack )
+SCREEN_UPDATE_IND16( wolfpack )
{
wolfpack_state *state = screen.machine().driver_data<wolfpack_state>();
int i;
@@ -298,9 +298,9 @@ SCREEN_EOF( wolfpack )
int x;
int y;
- state->m_helper->fill(0);
+ state->m_helper.fill(0);
- draw_ship(screen.machine(), *state->m_helper, state->m_helper->cliprect());
+ draw_ship(screen.machine(), state->m_helper, state->m_helper.cliprect());
for (y = 128; y < 224 - state->m_torpedo_v; y++)
{
@@ -309,12 +309,12 @@ SCREEN_EOF( wolfpack )
for (x = 2 * x1; x < 2 * x2; x++)
{
- if (x < 0 || x >= state->m_helper->width())
+ if (x < 0 || x >= state->m_helper.width())
continue;
- if (y < 0 || y >= state->m_helper->height())
+ if (y < 0 || y >= state->m_helper.height())
continue;
- if (state->m_helper->pix16(y, x))
+ if (state->m_helper.pix16(y, x))
state->m_collision = 1;
}
}
diff --git a/src/mame/video/wrally.c b/src/mame/video/wrally.c
index df0094859a4..27521ca2507 100644
--- a/src/mame/video/wrally.c
+++ b/src/mame/video/wrally.c
@@ -104,7 +104,7 @@ VIDEO_START( wrally )
in the range 0x8-0xf are used.
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int priority)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
wrally_state *state = machine.driver_data<wrally_state>();
int i, px, py;
@@ -176,7 +176,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
***************************************************************************/
-SCREEN_UPDATE( wrally )
+SCREEN_UPDATE_IND16( wrally )
{
wrally_state *state = screen.machine().driver_data<wrally_state>();
/* set scroll registers */
diff --git a/src/mame/video/wwfsstar.c b/src/mame/video/wwfsstar.c
index 67b7b5d74b4..5627369df94 100644
--- a/src/mame/video/wwfsstar.c
+++ b/src/mame/video/wwfsstar.c
@@ -111,7 +111,7 @@ static TILE_GET_INFO( get_bg0_tile_info )
sprite colour marking could probably be improved..
*******************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*- SPR RAM Format -**
@@ -220,7 +220,7 @@ VIDEO_START( wwfsstar )
tilemap_set_transparent_pen(state->m_fg0_tilemap,0);
}
-SCREEN_UPDATE( wwfsstar )
+SCREEN_UPDATE_IND16( wwfsstar )
{
wwfsstar_state *state = screen.machine().driver_data<wwfsstar_state>();
diff --git a/src/mame/video/wwfwfest.c b/src/mame/video/wwfwfest.c
index 39b01f4538a..5e60d31d6c2 100644
--- a/src/mame/video/wwfwfest.c
+++ b/src/mame/video/wwfwfest.c
@@ -144,7 +144,7 @@ static TILE_GET_INFO( get_bg1_tile_info )
sprite drawing could probably be improved a bit
*******************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
wwfwfest_state *state = machine.driver_data<wwfwfest_state>();
/*- SPR RAM Format -**
@@ -255,7 +255,7 @@ VIDEO_START( wwfwfstb )
state->m_bg1_dx[1] = -2;
}
-SCREEN_UPDATE( wwfwfest )
+SCREEN_UPDATE_IND16( wwfwfest )
{
wwfwfest_state *state = screen.machine().driver_data<wwfwfest_state>();
if (state->m_pri == 0x0078) {
diff --git a/src/mame/video/xain.c b/src/mame/video/xain.c
index e705eb86443..c88a9aa9fc9 100644
--- a/src/mame/video/xain.c
+++ b/src/mame/video/xain.c
@@ -172,7 +172,7 @@ WRITE8_HANDLER( xain_flipscreen_w )
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
xain_state *state = machine.driver_data<xain_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -223,7 +223,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( xain )
+SCREEN_UPDATE_IND16( xain )
{
xain_state *state = screen.machine().driver_data<xain_state>();
switch (state->m_pri&0x7)
diff --git a/src/mame/video/xevious.c b/src/mame/video/xevious.c
index f94800b2054..b54196c6e24 100644
--- a/src/mame/video/xevious.c
+++ b/src/mame/video/xevious.c
@@ -414,7 +414,7 @@ ROM 3M,3L color replace table for sprite
***************************************************************************/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
xevious_state *state = machine.driver_data<xevious_state>();
@@ -498,7 +498,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
-SCREEN_UPDATE( xevious )
+SCREEN_UPDATE_IND16( xevious )
{
xevious_state *state = screen.machine().driver_data<xevious_state>();
diff --git a/src/mame/video/xexex.c b/src/mame/video/xexex.c
index 0a5043f9f90..25ae912b104 100644
--- a/src/mame/video/xexex.c
+++ b/src/mame/video/xexex.c
@@ -46,7 +46,7 @@ VIDEO_START( xexex )
k056832_set_layer_offs(state->m_k056832, 3, 6, 16);
}
-SCREEN_UPDATE( xexex )
+SCREEN_UPDATE_RGB32( xexex )
{
static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 };
xexex_state *state = screen.machine().driver_data<xexex_state>();
diff --git a/src/mame/video/xmen.c b/src/mame/video/xmen.c
index 19d7051cc2b..e1402cb8f03 100644
--- a/src/mame/video/xmen.c
+++ b/src/mame/video/xmen.c
@@ -57,8 +57,8 @@ VIDEO_START( xmen6p )
k053247_get_ram(state->m_k053246, &state->m_k053247_ram);
- state->m_screen_left = auto_bitmap_alloc(machine, 64 * 8, 32 * 8, BITMAP_FORMAT_INDEXED16);
- state->m_screen_right = auto_bitmap_alloc(machine, 64 * 8, 32 * 8, BITMAP_FORMAT_INDEXED16);
+ state->m_screen_left = auto_bitmap_ind16_alloc(machine, 64 * 8, 32 * 8);
+ state->m_screen_right = auto_bitmap_ind16_alloc(machine, 64 * 8, 32 * 8);
state->save_item(NAME(*state->m_screen_left));
state->save_item(NAME(*state->m_screen_right));
@@ -71,7 +71,7 @@ VIDEO_START( xmen6p )
***************************************************************************/
-SCREEN_UPDATE( xmen )
+SCREEN_UPDATE_IND16( xmen )
{
xmen_state *state = screen.machine().driver_data<xmen_state>();
int layer[3], bg_colorbase;
@@ -107,7 +107,7 @@ SCREEN_UPDATE( xmen )
}
-SCREEN_UPDATE( xmen6p_left )
+SCREEN_UPDATE_IND16( xmen6p_left )
{
xmen_state *state = screen.machine().driver_data<xmen_state>();
int x, y;
@@ -124,7 +124,7 @@ SCREEN_UPDATE( xmen6p_left )
return 0;
}
-SCREEN_UPDATE( xmen6p_right )
+SCREEN_UPDATE_IND16( xmen6p_right )
{
xmen_state *state = screen.machine().driver_data<xmen_state>();
int x, y;
@@ -146,7 +146,7 @@ SCREEN_EOF( xmen6p )
{
xmen_state *state = screen.machine().driver_data<xmen_state>();
int layer[3], bg_colorbase;
- bitmap_t * renderbitmap;
+ bitmap_ind16 * renderbitmap;
rectangle cliprect;
int offset;
diff --git a/src/mame/video/xorworld.c b/src/mame/video/xorworld.c
index a3dfdfe304c..a4a0c1e8347 100644
--- a/src/mame/video/xorworld.c
+++ b/src/mame/video/xorworld.c
@@ -96,7 +96,7 @@ VIDEO_START( xorworld )
1 | xxxx---- -------- | sprite color
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
xorworld_state *state = machine.driver_data<xorworld_state>();
UINT16 *spriteram16 = state->m_spriteram;
@@ -113,7 +113,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
}
}
-SCREEN_UPDATE( xorworld )
+SCREEN_UPDATE_IND16( xorworld )
{
xorworld_state *state = screen.machine().driver_data<xorworld_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/xxmissio.c b/src/mame/video/xxmissio.c
index ff4aa232b2c..4cd3637eec2 100644
--- a/src/mame/video/xxmissio.c
+++ b/src/mame/video/xxmissio.c
@@ -85,7 +85,7 @@ VIDEO_START( xxmissio )
}
-static void draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_element *gfx)
+static void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const gfx_element *gfx)
{
xxmissio_state *state = gfx->machine().driver_data<xxmissio_state>();
int offs;
@@ -136,7 +136,7 @@ static void draw_sprites(bitmap_t &bitmap, const rectangle &cliprect, const gfx_
}
-SCREEN_UPDATE( xxmissio )
+SCREEN_UPDATE_IND16( xxmissio )
{
xxmissio_state *state = screen.machine().driver_data<xxmissio_state>();
tilemap_mark_all_tiles_dirty_all(screen.machine());
diff --git a/src/mame/video/xybots.c b/src/mame/video/xybots.c
index 49c9edfaa19..b2f552ede6e 100644
--- a/src/mame/video/xybots.c
+++ b/src/mame/video/xybots.c
@@ -104,11 +104,11 @@ VIDEO_START( xybots )
*
*************************************/
-SCREEN_UPDATE( xybots )
+SCREEN_UPDATE_IND16( xybots )
{
xybots_state *state = screen.machine().driver_data<xybots_state>();
atarimo_rect_list rectlist;
- bitmap_t *mobitmap;
+ bitmap_ind16 *mobitmap;
int x, y, r;
/* draw the playfield */
diff --git a/src/mame/video/xyonix.c b/src/mame/video/xyonix.c
index f2d77b4227d..63e40bb1eb5 100644
--- a/src/mame/video/xyonix.c
+++ b/src/mame/video/xyonix.c
@@ -56,7 +56,7 @@ VIDEO_START(xyonix)
state->m_tilemap = tilemap_create(machine, get_xyonix_tile_info, tilemap_scan_rows, 4, 8, 80, 32);
}
-SCREEN_UPDATE(xyonix)
+SCREEN_UPDATE_IND16(xyonix)
{
xyonix_state *state = screen.machine().driver_data<xyonix_state>();
diff --git a/src/mame/video/ygv608.c b/src/mame/video/ygv608.c
index 018dca0cced..83f8d0227c4 100644
--- a/src/mame/video/ygv608.c
+++ b/src/mame/video/ygv608.c
@@ -55,7 +55,7 @@ static tilemap_t *tilemap_B_cache_8[3];
static tilemap_t *tilemap_B_cache_16[3];
static tilemap_t *tilemap_A = NULL;
static tilemap_t *tilemap_B = NULL;
-static bitmap_t *work_bitmap = NULL;
+static bitmap_ind16 *work_bitmap = NULL;
static void HandleYGV608Reset( running_machine &machine );
static void HandleRomTransfers( running_machine &machine );
@@ -547,7 +547,7 @@ VIDEO_START( ygv608 )
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ygv608_exit), &machine));
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
#ifdef _ENABLE_SPRITES
@@ -731,7 +731,7 @@ static const char *const mode[] = {
static const char *const psize[] = { "8x8", "16x16", "32x32", "64x64" };
#endif
-SCREEN_UPDATE( ygv608 )
+SCREEN_UPDATE_IND16( ygv608 )
{
#ifdef _SHOW_VIDEO_DEBUG
char buffer[64];
@@ -769,7 +769,7 @@ SCREEN_UPDATE( ygv608 )
#endif
auto_free( screen.machine(), work_bitmap );
- work_bitmap = screen.alloc_compatible_bitmap();
+ work_bitmap = auto_bitmap_ind16_alloc(screen.machine(), screen.width(), screen.height());
// reset resize flag
ygv608.screen_resize = 0;
diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h
index f6ed81fb677..0863bca79a3 100644
--- a/src/mame/video/ygv608.h
+++ b/src/mame/video/ygv608.h
@@ -333,7 +333,7 @@ void ygv608_set_gfxbank(UINT8 gfxbank);
INTERRUPT_GEN( ygv608_timed_interrupt );
VIDEO_START( ygv608 );
-SCREEN_UPDATE( ygv608 );
+SCREEN_UPDATE_IND16( ygv608 );
READ16_HANDLER( ygv608_r );
WRITE16_HANDLER( ygv608_w );
diff --git a/src/mame/video/yiear.c b/src/mame/video/yiear.c
index 28640fe8662..5079e2ae415 100644
--- a/src/mame/video/yiear.c
+++ b/src/mame/video/yiear.c
@@ -105,7 +105,7 @@ VIDEO_START( yiear )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
yiear_state *state = machine.driver_data<yiear_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -141,7 +141,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
}
}
-SCREEN_UPDATE( yiear )
+SCREEN_UPDATE_IND16( yiear )
{
yiear_state *state = screen.machine().driver_data<yiear_state>();
diff --git a/src/mame/video/yunsun16.c b/src/mame/video/yunsun16.c
index 64a85349bb6..7d4ceec1ded 100644
--- a/src/mame/video/yunsun16.c
+++ b/src/mame/video/yunsun16.c
@@ -136,7 +136,7 @@ VIDEO_START( yunsun16 )
***************************************************************************/
-static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect )
+static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
yunsun16_state *state = machine.driver_data<yunsun16_state>();
int offs;
@@ -200,7 +200,7 @@ static void draw_sprites( running_machine &machine, bitmap_t &bitmap, const rect
***************************************************************************/
-SCREEN_UPDATE( yunsun16 )
+SCREEN_UPDATE_IND16( yunsun16 )
{
yunsun16_state *state = screen.machine().driver_data<yunsun16_state>();
diff --git a/src/mame/video/yunsung8.c b/src/mame/video/yunsung8.c
index 4059969ac06..ef787b66c10 100644
--- a/src/mame/video/yunsung8.c
+++ b/src/mame/video/yunsung8.c
@@ -194,7 +194,7 @@ VIDEO_START( yunsung8 )
***************************************************************************/
-SCREEN_UPDATE( yunsung8 )
+SCREEN_UPDATE_IND16( yunsung8 )
{
yunsung8_state *state = screen.machine().driver_data<yunsung8_state>();
int layers_ctrl = (~state->m_layers_ctrl) >> 4;
diff --git a/src/mame/video/zac2650.c b/src/mame/video/zac2650.c
index 6606d2052c8..515c2a17e9d 100644
--- a/src/mame/video/zac2650.c
+++ b/src/mame/video/zac2650.c
@@ -67,7 +67,7 @@ static int SpriteCollision(running_machine &machine, int first,int second)
/* Draw first sprite */
- drawgfx_opaque(*state->m_spritebitmap,state->m_spritebitmap->cliprect(), machine.gfx[expand],
+ drawgfx_opaque(state->m_spritebitmap,state->m_spritebitmap.cliprect(), machine.gfx[expand],
first * 2,
0,
0,0,
@@ -87,13 +87,13 @@ static int SpriteCollision(running_machine &machine, int first,int second)
continue;
}
- Checksum += state->m_spritebitmap->pix16(y, x);
+ Checksum += state->m_spritebitmap.pix16(y, x);
}
}
/* Blackout second sprite */
- drawgfx_transpen(*state->m_spritebitmap,state->m_spritebitmap->cliprect(), machine.gfx[1],
+ drawgfx_transpen(state->m_spritebitmap,state->m_spritebitmap.cliprect(), machine.gfx[1],
second * 2,
1,
0,0,
@@ -113,13 +113,13 @@ static int SpriteCollision(running_machine &machine, int first,int second)
continue;
}
- Checksum -= state->m_spritebitmap->pix16(y, x);
+ Checksum -= state->m_spritebitmap.pix16(y, x);
}
}
/* Zero bitmap */
- drawgfx_opaque(*state->m_spritebitmap,state->m_spritebitmap->cliprect(), machine.gfx[expand],
+ drawgfx_opaque(state->m_spritebitmap,state->m_spritebitmap.cliprect(), machine.gfx[expand],
first * 2,
1,
0,0,
@@ -144,13 +144,14 @@ VIDEO_START( tinvader )
state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
24, 24, 32, 32);
- state->m_spritebitmap = machine.primary_screen->alloc_compatible_bitmap();
+ state->m_bitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
+ state->m_spritebitmap.allocate(machine.primary_screen->width(), machine.primary_screen->height());
gfx_element_set_source(machine.gfx[1], state->m_s2636_0_ram);
gfx_element_set_source(machine.gfx[2], state->m_s2636_0_ram);
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
zac2650_state *state = machine.driver_data<zac2650_state>();
int offs;
@@ -170,7 +171,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
state->m_CollisionBackground = 0; /* Read from 0x1e80 bit 7 */
// for collision detection checking
- copybitmap(machine.primary_screen->default_bitmap(),bitmap,0,0,0,0,visarea);
+ copybitmap(state->m_bitmap,bitmap,0,0,0,0,visarea);
for(offs=0;offs<0x50;offs+=0x10)
{
@@ -201,7 +202,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
continue;
}
- if (bitmap.pix16(y, x) != machine.primary_screen->default_bitmap().pix16(y, x))
+ if (bitmap.pix16(y, x) != state->m_bitmap.pix16(y, x))
{
state->m_CollisionBackground = 0x80;
break;
@@ -227,7 +228,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
// if(SpriteCollision(machine, 2,4)) state->m_CollisionSprite |= 0x01; /* Not Used */
}
-SCREEN_UPDATE( tinvader )
+SCREEN_UPDATE_IND16( tinvader )
{
zac2650_state *state = screen.machine().driver_data<zac2650_state>();
tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0);
diff --git a/src/mame/video/zaccaria.c b/src/mame/video/zaccaria.c
index 31e4d8de9ee..6414dca50bf 100644
--- a/src/mame/video/zaccaria.c
+++ b/src/mame/video/zaccaria.c
@@ -206,7 +206,7 @@ WRITE8_HANDLER( zaccaria_flip_screen_y_w )
offsets 1 and 2 are swapped if accessed from spriteram2
*/
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectangle &cliprect,UINT8 *spriteram,int color,int section)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,UINT8 *spriteram,int color,int section)
{
int offs,o1 = 1,o2 = 2;
@@ -243,7 +243,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap,const rectan
}
}
-SCREEN_UPDATE( zaccaria )
+SCREEN_UPDATE_IND16( zaccaria )
{
zaccaria_state *state = screen.machine().driver_data<zaccaria_state>();
tilemap_draw(bitmap,cliprect,state->m_bg_tilemap,0,0);
diff --git a/src/mame/video/zaxxon.c b/src/mame/video/zaxxon.c
index 1a28abf0c92..97ab8cd2ca6 100644
--- a/src/mame/video/zaxxon.c
+++ b/src/mame/video/zaxxon.c
@@ -322,14 +322,14 @@ WRITE8_HANDLER( congo_sprite_custom_w )
*
*************************************/
-static void draw_background(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, int skew)
+static void draw_background(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int skew)
{
zaxxon_state *state = machine.driver_data<zaxxon_state>();
/* only draw if enabled */
if (state->m_bg_enable)
{
- bitmap_t &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
+ bitmap_ind16 &pixmap = tilemap_get_pixmap(state->m_bg_tilemap);
int colorbase = state->m_bg_color + (state->m_congo_color_bank << 8);
int xmask = pixmap.width() - 1;
int ymask = pixmap.height() - 1;
@@ -440,7 +440,7 @@ INLINE int find_minimum_x(UINT8 value, int flip)
}
-static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const rectangle &cliprect, UINT16 flipxmask, UINT16 flipymask)
+static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 flipxmask, UINT16 flipymask)
{
zaxxon_state *state = machine.driver_data<zaxxon_state>();
UINT8 *spriteram = state->m_spriteram;
@@ -475,7 +475,7 @@ static void draw_sprites(running_machine &machine, bitmap_t &bitmap, const recta
*
*************************************/
-SCREEN_UPDATE( zaxxon )
+SCREEN_UPDATE_IND16( zaxxon )
{
zaxxon_state *state = screen.machine().driver_data<zaxxon_state>();
@@ -486,7 +486,7 @@ SCREEN_UPDATE( zaxxon )
}
-SCREEN_UPDATE( futspy )
+SCREEN_UPDATE_IND16( futspy )
{
zaxxon_state *state = screen.machine().driver_data<zaxxon_state>();
@@ -497,7 +497,7 @@ SCREEN_UPDATE( futspy )
}
-SCREEN_UPDATE( razmataz )
+SCREEN_UPDATE_IND16( razmataz )
{
zaxxon_state *state = screen.machine().driver_data<zaxxon_state>();
@@ -508,7 +508,7 @@ SCREEN_UPDATE( razmataz )
}
-SCREEN_UPDATE( congo )
+SCREEN_UPDATE_IND16( congo )
{
zaxxon_state *state = screen.machine().driver_data<zaxxon_state>();
diff --git a/src/mame/video/zerozone.c b/src/mame/video/zerozone.c
index c900ad6e673..525027cab2a 100644
--- a/src/mame/video/zerozone.c
+++ b/src/mame/video/zerozone.c
@@ -40,7 +40,7 @@ void zerozone_state::video_start()
m_zz_tilemap = tilemap_create(machine(), get_zerozone_tile_info, tilemap_scan_cols, 8, 8, 64, 32);
}
-bool zerozone_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
+UINT32 zerozone_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
tilemap_draw(bitmap, cliprect, m_zz_tilemap, 0, 0);
return 0;
diff --git a/src/mame/video/zodiack.c b/src/mame/video/zodiack.c
index d77004fce4e..2de42520d37 100644
--- a/src/mame/video/zodiack.c
+++ b/src/mame/video/zodiack.c
@@ -130,7 +130,7 @@ void zodiack_state::video_start()
flip_screen_set_no_update(machine(), 0);
}
-void zodiack_state::draw_bullets( bitmap_t &bitmap, const rectangle &cliprect )
+void zodiack_state::draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
for (int offs = 0; offs < m_bulletsram_size; offs += 4)
{
@@ -154,7 +154,7 @@ void zodiack_state::draw_bullets( bitmap_t &bitmap, const rectangle &cliprect )
}
}
-void zodiack_state::draw_sprites( bitmap_t &bitmap, const rectangle &cliprect )
+void zodiack_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
for (int offs = m_spriteram_size - 4; offs >= 0; offs -= 4)
{
@@ -181,7 +181,7 @@ void zodiack_state::draw_sprites( bitmap_t &bitmap, const rectangle &cliprect )
}
}
-bool zodiack_state::screen_update( screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect )
+UINT32 zodiack_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
for (int i = 0; i < 32; i++)
tilemap_set_scrolly(m_fg_tilemap, i, m_attributeram[i * 2]);
diff --git a/src/osd/osdepend.c b/src/osd/osdepend.c
index 00ae01ac45a..effc05a204f 100644
--- a/src/osd/osdepend.c
+++ b/src/osd/osdepend.c
@@ -227,9 +227,9 @@ void osd_interface::font_close(osd_font font)
// pixel of a black & white font
//-------------------------------------------------
-bitmap_t *osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs)
+bool osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs)
{
- return NULL;
+ return false;
}
//-------------------------------------------------
diff --git a/src/osd/osdepend.h b/src/osd/osdepend.h
index 3a65c8263fd..659b44d63a2 100644
--- a/src/osd/osdepend.h
+++ b/src/osd/osdepend.h
@@ -89,7 +89,7 @@ public:
// font overridables
virtual osd_font font_open(const char *name, int &height);
virtual void font_close(osd_font font);
- virtual bitmap_t *font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs);
+ virtual bool font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs);
// video overridables
virtual void *get_slider_list();
diff --git a/src/osd/sdl/draw13.c b/src/osd/sdl/draw13.c
index b30d3fc2fc4..61c143622f7 100644
--- a/src/osd/sdl/draw13.c
+++ b/src/osd/sdl/draw13.c
@@ -923,9 +923,6 @@ static texture_info *texture_create(sdl_window_info *window, const render_texinf
case TEXFORMAT_PALETTE16:
texture->format = SDL_TEXFORMAT_PALETTE16;
break;
- case TEXFORMAT_RGB15:
- texture->format = texsource->palette ? SDL_TEXFORMAT_RGB15_PALETTED : SDL_TEXFORMAT_RGB15;
- break;
case TEXFORMAT_PALETTEA16:
texture->format = SDL_TEXFORMAT_PALETTE16A;
break;
diff --git a/src/osd/sdl/drawogl.c b/src/osd/sdl/drawogl.c
index e8890631a74..4f4e2cbecbf 100644
--- a/src/osd/sdl/drawogl.c
+++ b/src/osd/sdl/drawogl.c
@@ -2439,7 +2439,7 @@ static texture_info *texture_create(sdl_window_info *window, const render_texinf
//
// src/emu/validity.c:validate_display() states,
// an emulated driver can only produce
- // BITMAP_FORMAT_INDEXED16, BITMAP_FORMAT_RGB15 and BITMAP_FORMAT_RGB32
+ // BITMAP_FORMAT_IND16 and BITMAP_FORMAT_RGB32
// where only the first original paletted.
//
// other paletted formats, i.e.:
@@ -2463,12 +2463,6 @@ static texture_info *texture_create(sdl_window_info *window, const render_texinf
case TEXFORMAT_PALETTE16:
texture->format = SDL_TEXFORMAT_PALETTE16;
break;
- case TEXFORMAT_RGB15:
- if (texsource->palette != NULL)
- texture->format = SDL_TEXFORMAT_RGB15_PALETTED;
- else
- texture->format = SDL_TEXFORMAT_RGB15;
- break;
case TEXFORMAT_PALETTEA16:
texture->format = SDL_TEXFORMAT_PALETTE16A;
break;
diff --git a/src/osd/sdl/osdsdl.h b/src/osd/sdl/osdsdl.h
index ea7588f0c6d..c942b0d0c6d 100644
--- a/src/osd/sdl/osdsdl.h
+++ b/src/osd/sdl/osdsdl.h
@@ -257,7 +257,7 @@ public:
// font overridables
virtual osd_font font_open(const char *name, int &height);
virtual void font_close(osd_font font);
- virtual bitmap_t *font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs);
+ virtual bool font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs);
private:
static void osd_exit(running_machine &machine);
diff --git a/src/osd/sdl/sdlmain.c b/src/osd/sdl/sdlmain.c
index 27f10c20cb4..c2b4adcb1cb 100644
--- a/src/osd/sdl/sdlmain.c
+++ b/src/osd/sdl/sdlmain.c
@@ -769,16 +769,15 @@ void sdl_osd_interface::font_close(osd_font font)
// pixel of a black & white font
//-------------------------------------------------
-bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs)
+bool sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs)
{
UniChar uni_char;
CGGlyph glyph;
- bitmap_t *bitmap = (bitmap_t *)NULL;
CTFontRef ct_font = (CTFontRef)font;
const CFIndex count = 1;
CGRect bounding_rect, success_rect;
CGContextRef context_ref;
-
+
if( chnum == ' ' )
{
uni_char = 'n';
@@ -814,9 +813,9 @@ bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum,
color_space = CGColorSpaceCreateDeviceRGB();
bits_per_component = 8;
- bitmap = auto_alloc(machine(), bitmap_t(bitmap_width, bitmap_height, BITMAP_FORMAT_ARGB32));
+ bitmap.allocate(bitmap_width, bitmap_height);
- context_ref = CGBitmapContextCreate( bitmap->raw_pixptr(0), bitmap_width, bitmap_height, bits_per_component, bitmap->rowpixels()*4, color_space, bitmap_info );
+ context_ref = CGBitmapContextCreate( bitmap.raw_pixptr(0), bitmap_width, bitmap_height, bits_per_component, bitmap.rowpixels()*4, color_space, bitmap_info );
if( context_ref != NULL )
{
@@ -834,7 +833,7 @@ bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum,
CGColorSpaceRelease( color_space );
}
- return bitmap;
+ return bitmap.valid();
}
#else // UNIX but not OSX
@@ -1057,14 +1056,13 @@ void sdl_osd_interface::font_close(osd_font font)
// pixel of a black & white font
//-------------------------------------------------
-bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs)
+bool sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs)
{
TTF_Font *ttffont;
- bitmap_t *bitmap = (bitmap_t *)NULL;
SDL_Surface *drawsurf;
SDL_Color fcol = { 0xff, 0xff, 0xff };
UINT16 ustr[16];
-
+
ttffont = (TTF_Font *)font;
memset(ustr,0,sizeof(ustr));
@@ -1075,12 +1073,12 @@ bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum,
if (drawsurf)
{
// allocate a MAME destination bitmap
- bitmap = auto_alloc(machine(), bitmap_t(drawsurf->w, drawsurf->h, BITMAP_FORMAT_ARGB32));
+ bitmap.allocate(drawsurf->w, drawsurf->h);
// copy the rendered character image into it
- for (int y = 0; y < bitmap->height(); y++)
+ for (int y = 0; y < bitmap.height(); y++)
{
- UINT32 *dstrow = &bitmap->pix32(y);
+ UINT32 *dstrow = &bitmap.pix32(y);
UINT8 *srcrow = (UINT8 *)drawsurf->pixels;
srcrow += (y * drawsurf->pitch);
@@ -1098,7 +1096,7 @@ bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum,
SDL_FreeSurface(drawsurf);
}
- return bitmap;
+ return bitmap.valid();
}
#endif // not OSX
#else // not UNIX
@@ -1129,8 +1127,8 @@ void sdl_osd_interface::font_close(osd_font font)
// pixel of a black & white font
//-------------------------------------------------
-bitmap_t *sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs)
+bool sdl_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs)
{
- return (bitmap_t *)NULL;
+ return false;
}
#endif
diff --git a/src/osd/windows/d3dhlsl.c b/src/osd/windows/d3dhlsl.c
index 83a6ea36463..fc8f53e1302 100644
--- a/src/osd/windows/d3dhlsl.c
+++ b/src/osd/windows/d3dhlsl.c
@@ -196,7 +196,6 @@ hlsl_info::hlsl_info()
prescale_force_x = 0;
prescale_force_y = 0;
preset = -1;
- shadow_bitmap = NULL;
shadow_texture = NULL;
registered_targets = 0;
cyclic_target_idx = 0;
@@ -214,12 +213,6 @@ hlsl_info::hlsl_info()
hlsl_info::~hlsl_info()
{
global_free(options);
-
- if(shadow_bitmap != NULL)
- {
- global_free(shadow_bitmap);
- shadow_bitmap = NULL;
- }
}
@@ -290,13 +283,9 @@ void hlsl_info::avi_update_snap(d3d_surface *surface)
D3DLOCKED_RECT rect;
// if we don't have a bitmap, or if it's not the right size, allocate a new one
- if (avi_snap == NULL || (int)snap_width != avi_snap->width() || (int)snap_height != avi_snap->height())
+ if (!avi_snap.valid() || (int)snap_width != avi_snap.width() || (int)snap_height != avi_snap.height())
{
- if (avi_snap != NULL)
- {
- auto_free(window->machine(), avi_snap);
- }
- avi_snap = auto_alloc(window->machine(), bitmap_t((int)snap_width, (int)snap_height, BITMAP_FORMAT_RGB32));
+ avi_snap.allocate((int)snap_width, (int)snap_height);
}
// copy the texture
@@ -318,16 +307,11 @@ void hlsl_info::avi_update_snap(d3d_surface *surface)
// loop over Y
for (int srcy = 0; srcy < (int)snap_height; srcy++)
{
- BYTE *src = (BYTE *)rect.pBits + srcy * rect.Pitch;
- BYTE *dst = &avi_snap->pix8(srcy * 4);
+ DWORD *src = (DWORD *)((BYTE *)rect.pBits + srcy * rect.Pitch);
+ UINT32 *dst = &avi_snap.pix32(srcy);
for(int x = 0; x < snap_width; x++)
- {
- *dst++ = *src++;
- *dst++ = *src++;
*dst++ = *src++;
- *dst++ = *src++;
- }
}
// unlock
@@ -353,13 +337,9 @@ void hlsl_info::render_snapshot(d3d_surface *surface)
render_snap = false;
// if we don't have a bitmap, or if it's not the right size, allocate a new one
- if (avi_snap == NULL || snap_width != (avi_snap->width() / 2) || snap_height != (avi_snap->height() / 2))
+ if (!avi_snap.valid() || snap_width != (avi_snap.width() / 2) || snap_height != (avi_snap.height() / 2))
{
- if (avi_snap != NULL)
- {
- auto_free(window->machine(), avi_snap);
- }
- avi_snap = auto_alloc(window->machine(), bitmap_t(snap_width / 2, snap_height / 2, BITMAP_FORMAT_RGB32));
+ avi_snap.allocate(snap_width / 2, snap_height / 2);
}
// copy the texture
@@ -387,16 +367,11 @@ void hlsl_info::render_snapshot(d3d_surface *surface)
{
int toty = (srcy + cy * (snap_height / 2));
int totx = cx * (snap_width / 2);
- BYTE *src = (BYTE *)rect.pBits + toty * rect.Pitch + totx * 4;
- BYTE *dst = &avi_snap->pix8(srcy * 4);
+ DWORD *src = (DWORD *)((BYTE *)rect.pBits + toty * rect.Pitch + totx * 4);
+ UINT32 *dst = &avi_snap.pix32(srcy);
for(int x = 0; x < snap_width / 2; x++)
- {
- *dst++ = *src++;
- *dst++ = *src++;
*dst++ = *src++;
- *dst++ = *src++;
- }
}
int idx = cy * 2 + cx;
@@ -414,7 +389,7 @@ void hlsl_info::render_snapshot(d3d_surface *surface)
png_add_text(&pnginfo, "System", text2);
// now do the actual work
- png_error error = png_write_bitmap(file, &pnginfo, *avi_snap, 1 << 24, NULL);
+ png_error error = png_write_bitmap(file, &pnginfo, avi_snap, 1 << 24, NULL);
if (error != PNGERR_NONE)
mame_printf_error("Error generating PNG for HLSL snapshot: png_error = %d\n", error);
@@ -478,7 +453,7 @@ void hlsl_info::record_texture()
{
// handle an AVI recording
// write the next frame
- avi_error avierr = avi_append_video_frame_rgb32(avi_output_file, *avi_snap);
+ avi_error avierr = avi_append_video_frame(avi_output_file, avi_snap);
if (avierr != AVIERR_NONE)
{
end_avi_recording();
@@ -928,18 +903,18 @@ int hlsl_info::create_resources()
// experimental: load a PNG to use for vector rendering; it is treated
// as a brightness map
emu_file file(window->machine().options().art_path(), OPEN_FLAG_READ);
- shadow_bitmap = render_load_png(file, NULL, options->shadow_mask_texture, NULL, NULL);
// experimental: if we have a shadow bitmap, create a texture for it
- if (shadow_bitmap != NULL)
+ render_load_png(shadow_bitmap, file, NULL, options->shadow_mask_texture);
+ if (shadow_bitmap.valid())
{
render_texinfo texture;
// fake in the basic data so it looks like it came from render.c
- texture.base = shadow_bitmap->raw_pixptr(0);
- texture.rowpixels = shadow_bitmap->rowpixels();
- texture.width = shadow_bitmap->width();
- texture.height = shadow_bitmap->height();
+ texture.base = shadow_bitmap.raw_pixptr(0);
+ texture.rowpixels = shadow_bitmap.rowpixels();
+ texture.width = shadow_bitmap.width();
+ texture.height = shadow_bitmap.height();
texture.palette = NULL;
texture.seqid = 0;
@@ -2277,11 +2252,7 @@ void hlsl_info::delete_resources()
registered_targets = 0;
- if (shadow_bitmap != NULL)
- {
- global_free(shadow_bitmap);
- shadow_bitmap = NULL;
- }
+ shadow_bitmap.reset();
}
diff --git a/src/osd/windows/d3dhlsl.h b/src/osd/windows/d3dhlsl.h
index 0ef0d45e48b..a723272d73a 100644
--- a/src/osd/windows/d3dhlsl.h
+++ b/src/osd/windows/d3dhlsl.h
@@ -158,13 +158,13 @@ private:
int prescale_size_x; // prescale size x
int prescale_size_y; // prescale size y
int preset; // preset, if relevant
- bitmap_t * shadow_bitmap; // shadow mask bitmap for post-processing shader
+ bitmap_argb32 shadow_bitmap; // shadow mask bitmap for post-processing shader
d3d_texture_info * shadow_texture; // shadow mask texture for post-processing shader
int registered_targets; // number of registered HLSL targets (i.e., screens)
int cyclic_target_idx; // cyclic index of next HLSL target slot
hlsl_options * options; // current uniform state
avi_file * avi_output_file; // AVI file
- bitmap_t * avi_snap; // AVI snapshot
+ bitmap_rgb32 avi_snap; // AVI snapshot
int avi_frame; // AVI frame
attotime avi_frame_period; // AVI frame period
attotime avi_next_frame_time; // AVI next frame time
diff --git a/src/osd/windows/drawd3d.c b/src/osd/windows/drawd3d.c
index 8b416c1a063..c9209282b3f 100644
--- a/src/osd/windows/drawd3d.c
+++ b/src/osd/windows/drawd3d.c
@@ -447,15 +447,15 @@ static int drawd3d_window_init(win_window_info *window)
// experimental: load a PNG to use for vector rendering; it is treated
// as a brightness map
emu_file file(window->machine().options().art_path(), OPEN_FLAG_READ);
- d3d->vector_bitmap = render_load_png(file, NULL, "vector.png", NULL, NULL);
- if (d3d->vector_bitmap != NULL)
+ render_load_png(d3d->vector_bitmap, file, NULL, "vector.png");
+ if (d3d->vector_bitmap.valid())
{
- d3d->vector_bitmap->fill(MAKE_ARGB(0xff,0xff,0xff,0xff));
- d3d->vector_bitmap = render_load_png(file, NULL, "vector.png", d3d->vector_bitmap, NULL);
+ d3d->vector_bitmap.fill(MAKE_ARGB(0xff,0xff,0xff,0xff));
+ render_load_png(d3d->vector_bitmap, file, NULL, "vector.png", true);
}
- d3d->default_bitmap = auto_bitmap_alloc(window->machine(), 8, 8, BITMAP_FORMAT_RGB32);
- d3d->default_bitmap->fill(MAKE_ARGB(0xff,0xff,0xff,0xff));
+ d3d->default_bitmap.allocate(8, 8);
+ d3d->default_bitmap.fill(MAKE_ARGB(0xff,0xff,0xff,0xff));
// configure the adapter for the mode we want
if (config_adapter_mode(window))
@@ -510,10 +510,6 @@ static void drawd3d_window_destroy(win_window_info *window)
// delete the device
device_delete(d3d);
- // experimental: free the vector PNG
- global_free(d3d->vector_bitmap);
- d3d->vector_bitmap = NULL;
-
// free the memory in the window
global_free(d3d);
window->drawdata = NULL;
@@ -780,15 +776,15 @@ try_again:
}
}
- if (d3d->default_bitmap != NULL)
+ if (d3d->default_bitmap.valid())
{
render_texinfo texture;
// fake in the basic data so it looks like it came from render.c
- texture.base = d3d->default_bitmap->raw_pixptr(0);
- texture.rowpixels = d3d->default_bitmap->rowpixels();
- texture.width = d3d->default_bitmap->width();
- texture.height = d3d->default_bitmap->height();
+ texture.base = d3d->default_bitmap.raw_pixptr(0);
+ texture.rowpixels = d3d->default_bitmap.rowpixels();
+ texture.width = d3d->default_bitmap.width();
+ texture.height = d3d->default_bitmap.height();
texture.palette = NULL;
texture.seqid = 0;
@@ -865,15 +861,15 @@ static int device_create_resources(d3d_info *d3d)
result = (*d3dintf->device.present)(d3d->device, NULL, NULL, NULL, NULL, 0);
// experimental: if we have a vector bitmap, create a texture for it
- if (d3d->vector_bitmap != NULL)
+ if (d3d->vector_bitmap.valid())
{
render_texinfo texture;
// fake in the basic data so it looks like it came from render.c
- texture.base = &d3d->vector_bitmap->pix32(0);
- texture.rowpixels = d3d->vector_bitmap->rowpixels();
- texture.width = d3d->vector_bitmap->width();
- texture.height = d3d->vector_bitmap->height();
+ texture.base = &d3d->vector_bitmap.pix32(0);
+ texture.rowpixels = d3d->vector_bitmap.rowpixels();
+ texture.width = d3d->vector_bitmap.width();
+ texture.height = d3d->vector_bitmap.height();
texture.palette = NULL;
texture.seqid = 0;
@@ -2011,62 +2007,6 @@ INLINE void copyline_palettea16(UINT32 *dst, const UINT16 *src, int width, const
//============================================================
-// copyline_rgb15
-//============================================================
-
-INLINE void copyline_rgb15(UINT32 *dst, const UINT16 *src, int width, const rgb_t *palette, int xborderpix)
-{
- int x;
-
- assert(xborderpix == 0 || xborderpix == 1);
-
- // palette (really RGB map) case
- if (palette != NULL)
- {
- if (xborderpix)
- {
- UINT16 pix = *src;
- *dst++ = 0xff000000 | palette[0x40 + ((pix >> 10) & 0x1f)] | palette[0x20 + ((pix >> 5) & 0x1f)] | palette[0x00 + ((pix >> 0) & 0x1f)];
- }
- for (x = 0; x < width; x++)
- {
- UINT16 pix = *src++;
- *dst++ = 0xff000000 | palette[0x40 + ((pix >> 10) & 0x1f)] | palette[0x20 + ((pix >> 5) & 0x1f)] | palette[0x00 + ((pix >> 0) & 0x1f)];
- }
- if (xborderpix)
- {
- UINT16 pix = *--src;
- *dst++ = 0xff000000 | palette[0x40 + ((pix >> 10) & 0x1f)] | palette[0x20 + ((pix >> 5) & 0x1f)] | palette[0x00 + ((pix >> 0) & 0x1f)];
- }
- }
-
- // direct case
- else
- {
- if (xborderpix)
- {
- UINT16 pix = *src;
- UINT32 color = ((pix & 0x7c00) << 9) | ((pix & 0x03e0) << 6) | ((pix & 0x001f) << 3);
- *dst++ = 0xff000000 | color | ((color >> 5) & 0x070707);
- }
- for (x = 0; x < width; x++)
- {
- UINT16 pix = *src++;
- UINT32 color = ((pix & 0x7c00) << 9) | ((pix & 0x03e0) << 6) | ((pix & 0x001f) << 3);
- *dst++ = 0xff000000 | color | ((color >> 5) & 0x070707);
- }
- if (xborderpix)
- {
- UINT16 pix = *--src;
- UINT32 color = ((pix & 0x7c00) << 9) | ((pix & 0x03e0) << 6) | ((pix & 0x001f) << 3);
- *dst++ = 0xff000000 | color | ((color >> 5) & 0x070707);
- }
- }
-}
-
-
-
-//============================================================
// copyline_rgb32
//============================================================
@@ -2403,10 +2343,6 @@ static void texture_set_data(d3d_info *d3d, d3d_texture_info *texture, const ren
copyline_palettea16((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, texture->xborderpix);
break;
- case TEXFORMAT_RGB15:
- copyline_rgb15((UINT32 *)dst, (UINT16 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, texture->xborderpix);
- break;
-
case TEXFORMAT_RGB32:
copyline_rgb32((UINT32 *)dst, (UINT32 *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, texture->xborderpix);
break;
diff --git a/src/osd/windows/drawd3d.h b/src/osd/windows/drawd3d.h
index 109a72eb1a7..3dbafaafb0e 100644
--- a/src/osd/windows/drawd3d.h
+++ b/src/osd/windows/drawd3d.h
@@ -106,10 +106,10 @@ struct _d3d_info
int last_wrap; // previous wrap state
DWORD last_modmode; // previous texture modulation
- bitmap_t * vector_bitmap; // experimental: bitmap for vectors
+ bitmap_argb32 vector_bitmap; // experimental: bitmap for vectors
d3d_texture_info * vector_texture; // experimental: texture for vectors
- bitmap_t * default_bitmap; // experimental: default bitmap
+ bitmap_rgb32 default_bitmap; // experimental: default bitmap
d3d_texture_info * default_texture; // experimental: default texture
void * hlsl_buf; // HLSL vertex data
diff --git a/src/osd/windows/winmain.c b/src/osd/windows/winmain.c
index 6c8428b06c5..66056e7d539 100644
--- a/src/osd/windows/winmain.c
+++ b/src/osd/windows/winmain.c
@@ -832,7 +832,7 @@ void windows_osd_interface::font_close(osd_font font)
// pixel of a black & white font
//-------------------------------------------------
-bitmap_t *windows_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs)
+bool windows_osd_interface::font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs)
{
// create a dummy DC to work with
HDC dummyDC = CreateCompatibleDC(NULL);
@@ -938,17 +938,16 @@ bitmap_t *windows_osd_interface::font_get_bitmap(osd_font font, unicode_char chn
}
// allocate a new bitmap
- bitmap_t *bitmap = NULL;
if (actbounds.max_x >= actbounds.min_x && actbounds.max_y >= actbounds.min_y)
{
- bitmap = auto_alloc(machine(), bitmap_t(actbounds.max_x + 1 - actbounds.min_x, actbounds.max_y + 1 - actbounds.min_y, BITMAP_FORMAT_ARGB32));
+ bitmap.allocate(actbounds.max_x + 1 - actbounds.min_x, actbounds.max_y + 1 - actbounds.min_y);
// copy the bits into it
- for (int y = 0; y < bitmap->height(); y++)
+ for (int y = 0; y < bitmap.height(); y++)
{
- UINT32 *dstrow = &bitmap->pix32(y);
+ UINT32 *dstrow = &bitmap.pix32(y);
UINT8 *srcrow = &bits[(y + actbounds.min_y) * rowbytes];
- for (int x = 0; x < bitmap->width(); x++)
+ for (int x = 0; x < bitmap.width(); x++)
{
int effx = x + actbounds.min_x;
dstrow[x] = ((srcrow[effx / 8] << (effx % 8)) & 0x80) ? MAKE_ARGB(0xff,0xff,0xff,0xff) : MAKE_ARGB(0x00,0xff,0xff,0xff);
@@ -965,7 +964,7 @@ bitmap_t *windows_osd_interface::font_get_bitmap(osd_font font, unicode_char chn
DeleteObject(dib);
SelectObject(dummyDC, oldfont);
DeleteDC(dummyDC);
- return bitmap;
+ return bitmap.valid();
}
diff --git a/src/osd/windows/winmain.h b/src/osd/windows/winmain.h
index c1d36aefaba..6c7684a0529 100644
--- a/src/osd/windows/winmain.h
+++ b/src/osd/windows/winmain.h
@@ -321,7 +321,7 @@ public:
// font overridables
virtual osd_font font_open(const char *name, int &height);
virtual void font_close(osd_font font);
- virtual bitmap_t *font_get_bitmap(osd_font font, unicode_char chnum, INT32 &width, INT32 &xoffs, INT32 &yoffs);
+ virtual bool font_get_bitmap(osd_font font, unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs);
private:
static void osd_exit(running_machine &machine);
diff --git a/src/tools/chdman.c b/src/tools/chdman.c
index 4ed70853c95..18775497311 100644
--- a/src/tools/chdman.c
+++ b/src/tools/chdman.c
@@ -854,7 +854,7 @@ cleanup:
read_avi_frame - read an AVI frame
-------------------------------------------------*/
-static avi_error read_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sample, bitmap_t *fullbitmap, int interlaced, av_codec_compress_config *avconfig)
+static avi_error read_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sample, bitmap_yuy16 &fullbitmap, int interlaced, av_codec_compress_config *avconfig)
{
const avi_movie_info *info = avi_get_movie_info(avi);
int interlace_factor = interlaced ? 2 : 1;
@@ -873,16 +873,16 @@ static avi_error read_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sam
/* read the video data when we hit a new frame */
if (framenum % interlace_factor == 0)
{
- avierr = avi_read_video_frame_yuy16(avi, framenum / interlace_factor, *fullbitmap);
+ avierr = avi_read_video_frame(avi, framenum / interlace_factor, fullbitmap);
if (avierr != AVIERR_NONE)
goto cleanup;
}
/* build the fake bitmap */
if (!interlaced)
- avconfig->video->clone_existing(*fullbitmap);
+ avconfig->video.wrap(fullbitmap, fullbitmap.cliprect());
else
- avconfig->video = new(avconfig->video) bitmap_t(&fullbitmap->pix16(framenum % interlace_factor), fullbitmap->width(), fullbitmap->height() / 2, fullbitmap->rowpixels() * 2, fullbitmap->format());
+ avconfig->video.wrap(&fullbitmap.pix16(framenum % interlace_factor), fullbitmap.width(), fullbitmap.height() / 2, fullbitmap.rowpixels() * 2);
cleanup:
return avierr;
@@ -893,7 +893,7 @@ cleanup:
fake_avi_frame - fake an AVI frame
-------------------------------------------------*/
-static avi_error fake_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sample, bitmap_t *fullbitmap, int interlaced, av_codec_compress_config *avconfig)
+static avi_error fake_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sample, bitmap_yuy16 &fullbitmap, int interlaced, av_codec_compress_config *avconfig)
{
static int framecounter = 0;
int leftsamp = (framenum % 200 < 10) ? 10000 : 0;
@@ -947,26 +947,26 @@ static avi_error fake_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sam
/* build the fake bitmap */
if (!interlaced)
- avconfig->video->clone_existing(*fullbitmap);
+ avconfig->video.wrap(fullbitmap, fullbitmap.cliprect());
else
- avconfig->video = new(avconfig->video) bitmap_t(&fullbitmap->pix16(framenum % interlace_factor), fullbitmap->width(), fullbitmap->height() / 2, fullbitmap->rowpixels() * 2, fullbitmap->format());
+ avconfig->video.wrap(&fullbitmap.pix16(framenum % interlace_factor), fullbitmap.width(), fullbitmap.height() / 2, fullbitmap.rowpixels() * 2);
/* loop over the data and copy it to the cache */
- for (y = 0; y < avconfig->video->height(); y++)
+ for (y = 0; y < avconfig->video.height(); y++)
{
- UINT16 *dest = &avconfig->video->pix16(y);
+ UINT16 *dest = &avconfig->video.pix16(y);
/* white flag? */
if (y == 11 && whiteflag)
{
for (x = 0; x < AVI_FAKE_WIDTH; x++)
- *dest++ = (x > 10 && x < avconfig->video->width() - 10) ? 0xff80 : 0x0080;
+ *dest++ = (x > 10 && x < avconfig->video.width() - 10) ? 0xff80 : 0x0080;
}
/* line 17/18 */
else if ((y == 17 || y == 18) && line1718 != 0)
{
- for (x = 0; x < avconfig->video->width(); x++)
+ for (x = 0; x < avconfig->video.width(); x++)
{
UINT16 pixel = 0x0080;
if (x >= 20)
@@ -986,14 +986,14 @@ static avi_error fake_avi_frame(avi_file *avi, UINT32 framenum, UINT32 first_sam
/* anything else in VBI-land */
else if (y < 22)
{
- for (x = 0; x < avconfig->video->width(); x++)
+ for (x = 0; x < avconfig->video.width(); x++)
*dest++ = 0x0080;
}
/* everything else */
else
{
- for (x = 0; x < avconfig->video->width(); x++)
+ for (x = 0; x < avconfig->video.width(); x++)
*dest++ = framenum;
}
}
@@ -1011,15 +1011,13 @@ static int do_createav(int argc, char *argv[], int param)
{
UINT32 fps_times_1million, width, height, interlaced, channels, rate, totalframes;
UINT32 max_samples_per_frame, bytes_per_frame, firstframe, numframes;
- av_codec_compress_config avconfig = { 0 };
+ av_codec_compress_config avconfig;
const char *inputfile, *outputfile;
- bitmap_t *fullbitmap = NULL;
const avi_movie_info *info;
UINT8 *ldframedata = NULL;
const chd_header *header;
chd_file *chd = NULL;
avi_file *avi = NULL;
- bitmap_t fakebitmap;
double ratio = 1.0;
char metadata[256];
avi_error avierr;
@@ -1117,119 +1115,115 @@ static int do_createav(int argc, char *argv[], int param)
bytes_per_frame = 12 + channels * max_samples_per_frame * 2 + width * height * 2;
/* allocate a video buffer */
- fullbitmap = new(std::nothrow) bitmap_t(width, height * (interlaced ? 2 : 1), BITMAP_FORMAT_YUY16);
- if (fullbitmap == NULL)
{
- fprintf(stderr, "Out of memory allocating temporary bitmap\n");
- err = CHDERR_OUT_OF_MEMORY;
- goto cleanup;
- }
- avconfig.video = &fakebitmap;
+ bitmap_yuy16 fullbitmap(width, height * (interlaced ? 2 : 1));
+ avconfig.video.wrap(fullbitmap, fullbitmap.cliprect());
- /* allocate audio buffers */
- avconfig.channels = channels;
- for (chnum = 0; chnum < channels; chnum++)
- {
- avconfig.audio[chnum] = (INT16 *)malloc(max_samples_per_frame * 2);
- if (avconfig.audio[chnum] == NULL)
+ /* allocate audio buffers */
+ avconfig.channels = channels;
+ for (chnum = 0; chnum < channels; chnum++)
{
- fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
- err = CHDERR_OUT_OF_MEMORY;
+ avconfig.audio[chnum] = (INT16 *)malloc(max_samples_per_frame * 2);
+ if (avconfig.audio[chnum] == NULL)
+ {
+ fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
+ err = CHDERR_OUT_OF_MEMORY;
+ goto cleanup;
+ }
+ }
+
+ /* create the new CHD */
+ err = chd_create(outputfile, (UINT64)numframes * (UINT64)bytes_per_frame, bytes_per_frame, CHDCOMPRESSION_AV, NULL);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error creating CHD file: %s\n", chd_error_string(err));
goto cleanup;
}
- }
- /* create the new CHD */
- err = chd_create(outputfile, (UINT64)numframes * (UINT64)bytes_per_frame, bytes_per_frame, CHDCOMPRESSION_AV, NULL);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error creating CHD file: %s\n", chd_error_string(err));
- goto cleanup;
- }
+ /* open the new CHD */
+ err = chd_open(outputfile, CHD_OPEN_READWRITE, NULL, &chd);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error opening new CHD file: %s\n", chd_error_string(err));
+ goto cleanup;
+ }
+ header = chd_get_header(chd);
- /* open the new CHD */
- err = chd_open(outputfile, CHD_OPEN_READWRITE, NULL, &chd);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error opening new CHD file: %s\n", chd_error_string(err));
- goto cleanup;
- }
- header = chd_get_header(chd);
+ /* write the metadata */
+ sprintf(metadata, AV_METADATA_FORMAT, fps_times_1million / 1000000, fps_times_1million % 1000000, width, height, interlaced, channels, rate);
+ err = chd_set_metadata(chd, AV_METADATA_TAG, 0, metadata, strlen(metadata) + 1, CHD_MDFLAGS_CHECKSUM);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error adding AV metadata: %s\n", chd_error_string(err));
+ goto cleanup;
+ }
- /* write the metadata */
- sprintf(metadata, AV_METADATA_FORMAT, fps_times_1million / 1000000, fps_times_1million % 1000000, width, height, interlaced, channels, rate);
- err = chd_set_metadata(chd, AV_METADATA_TAG, 0, metadata, strlen(metadata) + 1, CHD_MDFLAGS_CHECKSUM);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error adding AV metadata: %s\n", chd_error_string(err));
- goto cleanup;
- }
+ /* begin compressing */
+ err = chd_compress_begin(chd);
+ if (err != CHDERR_NONE)
+ goto cleanup;
- /* begin compressing */
- err = chd_compress_begin(chd);
- if (err != CHDERR_NONE)
- goto cleanup;
+ /* loop over source hunks until we run out */
+ for (framenum = 0; framenum < numframes; framenum++)
+ {
+ int effframe = firstframe + framenum;
+ UINT32 first_sample;
- /* loop over source hunks until we run out */
- for (framenum = 0; framenum < numframes; framenum++)
- {
- int effframe = firstframe + framenum;
- UINT32 first_sample;
+ /* progress */
+ progress(framenum == 0, "Compressing hunk %d/%d... (ratio=%d%%) \r", framenum, header->totalhunks, (int)(100.0 * ratio));
- /* progress */
- progress(framenum == 0, "Compressing hunk %d/%d... (ratio=%d%%) \r", framenum, header->totalhunks, (int)(100.0 * ratio));
+ /* compute the number of samples in this frame */
+ first_sample = ((UINT64)rate * (UINT64)effframe * (UINT64)1000000 + fps_times_1million - 1) / (UINT64)fps_times_1million;
+ avconfig.samples = ((UINT64)rate * (UINT64)(effframe + 1) * (UINT64)1000000 + fps_times_1million - 1) / (UINT64)fps_times_1million - first_sample;
- /* compute the number of samples in this frame */
- first_sample = ((UINT64)rate * (UINT64)effframe * (UINT64)1000000 + fps_times_1million - 1) / (UINT64)fps_times_1million;
- avconfig.samples = ((UINT64)rate * (UINT64)(effframe + 1) * (UINT64)1000000 + fps_times_1million - 1) / (UINT64)fps_times_1million - first_sample;
+ /* read the frame into its proper format in the cache */
+ if (IS_FAKE_AVI_FILE(avi))
+ avierr = fake_avi_frame(avi, effframe, first_sample, fullbitmap, interlaced, &avconfig);
+ else
+ avierr = read_avi_frame(avi, effframe, first_sample, fullbitmap, interlaced, &avconfig);
+ if (avierr != AVIERR_NONE)
+ {
+ fprintf(stderr, "Error reading frame %d from AVI file: %s\n", effframe, avi_error_string(avierr));
+ err = CHDERR_COMPRESSION_ERROR;
+ }
- /* read the frame into its proper format in the cache */
- if (IS_FAKE_AVI_FILE(avi))
- avierr = fake_avi_frame(avi, effframe, first_sample, fullbitmap, interlaced, &avconfig);
- else
- avierr = read_avi_frame(avi, effframe, first_sample, fullbitmap, interlaced, &avconfig);
- if (avierr != AVIERR_NONE)
- {
- fprintf(stderr, "Error reading frame %d from AVI file: %s\n", effframe, avi_error_string(avierr));
- err = CHDERR_COMPRESSION_ERROR;
+ /* update metadata for this frame */
+ if (ldframedata != NULL)
+ {
+ /* parse the data and pack it */
+ vbi_metadata vbi;
+ vbi_parse_all(&avconfig.video.pix16(0), avconfig.video.rowpixels(), avconfig.video.width(), 8, &vbi);
+ vbi_metadata_pack(&ldframedata[framenum * VBI_PACKED_BYTES], framenum, &vbi);
+ }
+
+ /* configure the compressor for this frame */
+ chd_codec_config(chd, AV_CODEC_COMPRESS_CONFIG, &avconfig);
+
+ /* append the data */
+ err = chd_compress_hunk(chd, NULL, &ratio);
+ if (err != CHDERR_NONE)
+ goto cleanup;
}
- /* update metadata for this frame */
+ /* write the final metadata */
if (ldframedata != NULL)
{
- /* parse the data and pack it */
- vbi_metadata vbi;
- vbi_parse_all(&avconfig.video->pix16(0), avconfig.video->rowpixels(), avconfig.video->width(), 8, &vbi);
- vbi_metadata_pack(&ldframedata[framenum * VBI_PACKED_BYTES], framenum, &vbi);
+ err = chd_set_metadata(chd, AV_LD_METADATA_TAG, 0, ldframedata, numframes * VBI_PACKED_BYTES, CHD_MDFLAGS_CHECKSUM);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error adding AVLD metadata: %s\n", chd_error_string(err));
+ goto cleanup;
+ }
}
- /* configure the compressor for this frame */
- chd_codec_config(chd, AV_CODEC_COMPRESS_CONFIG, &avconfig);
-
- /* append the data */
- err = chd_compress_hunk(chd, NULL, &ratio);
- if (err != CHDERR_NONE)
- goto cleanup;
- }
-
- /* write the final metadata */
- if (ldframedata != NULL)
- {
- err = chd_set_metadata(chd, AV_LD_METADATA_TAG, 0, ldframedata, numframes * VBI_PACKED_BYTES, CHD_MDFLAGS_CHECKSUM);
+ /* finish compression */
+ err = chd_compress_finish(chd, TRUE);
if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error adding AVLD metadata: %s\n", chd_error_string(err));
goto cleanup;
- }
+ else
+ progress(TRUE, "Compression complete ... final ratio = %d%% \n", (int)(100.0 * ratio));
}
- /* finish compression */
- err = chd_compress_finish(chd, TRUE);
- if (err != CHDERR_NONE)
- goto cleanup;
- else
- progress(TRUE, "Compression complete ... final ratio = %d%% \n", (int)(100.0 * ratio));
-
cleanup:
/* close everything down */
if (avi != NULL && !IS_FAKE_AVI_FILE(avi))
@@ -1239,7 +1233,6 @@ cleanup:
for (chnum = 0; chnum < ARRAY_LENGTH(avconfig.audio); chnum++)
if (avconfig.audio[chnum] != NULL)
free(avconfig.audio[chnum]);
- delete fullbitmap;
if (ldframedata != NULL)
free(ldframedata);
if (err != CHDERR_NONE)
@@ -1804,16 +1797,14 @@ cleanup:
static int do_extractav(int argc, char *argv[], int param)
{
int fps, fpsfrac, width, height, interlaced, channels, rate, totalframes;
- av_codec_decompress_config avconfig = { 0 };
+ av_codec_decompress_config avconfig;
const char *inputfile, *outputfile;
UINT32 firstframe, numframes;
- bitmap_t *fullbitmap = NULL;
UINT32 framenum, numsamples;
UINT32 fps_times_1million;
const chd_header *header;
chd_file *chd = NULL;
avi_file *avi = NULL;
- bitmap_t fakebitmap;
avi_movie_info info;
char metadata[256];
avi_error avierr;
@@ -1872,108 +1863,104 @@ static int do_extractav(int argc, char *argv[], int param)
numframes = MIN(totalframes - firstframe, numframes);
/* allocate a video buffer */
- fullbitmap = new(std::nothrow) bitmap_t(width, height, BITMAP_FORMAT_YUY16);
- if (fullbitmap == NULL)
{
- fprintf(stderr, "Out of memory allocating temporary bitmap\n");
- err = CHDERR_OUT_OF_MEMORY;
- goto cleanup;
- }
- avconfig.video = &fakebitmap;
+ bitmap_yuy16 fullbitmap(width, height);
+ avconfig.video.wrap(fullbitmap, fullbitmap.cliprect());
- /* allocate audio buffers */
- avconfig.maxsamples = ((UINT64)rate * 1000000 + fps_times_1million - 1) / fps_times_1million;
- avconfig.actsamples = &numsamples;
- for (chnum = 0; chnum < channels; chnum++)
- {
- avconfig.audio[chnum] = (INT16 *)malloc(avconfig.maxsamples * 2);
- if (avconfig.audio[chnum] == NULL)
+ /* allocate audio buffers */
+ avconfig.maxsamples = ((UINT64)rate * 1000000 + fps_times_1million - 1) / fps_times_1million;
+ avconfig.actsamples = &numsamples;
+ for (chnum = 0; chnum < channels; chnum++)
{
- fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
- err = CHDERR_OUT_OF_MEMORY;
- goto cleanup;
+ avconfig.audio[chnum] = (INT16 *)malloc(avconfig.maxsamples * 2);
+ if (avconfig.audio[chnum] == NULL)
+ {
+ fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
+ err = CHDERR_OUT_OF_MEMORY;
+ goto cleanup;
+ }
}
- }
-
- /* print some of it */
- printf("Use frames: %d-%d\n", firstframe, firstframe + numframes - 1);
- printf("Frame rate: %d.%06d\n", fps_times_1million / 1000000, fps_times_1million % 1000000);
- printf("Frame size: %d x %d %s\n", width, height, interlaced ? "interlaced" : "non-interlaced");
- printf("Audio: %d channels at %d Hz\n", channels, rate);
- printf("Total frames: %d (%02d:%02d:%02d)\n", totalframes,
- (UINT32)((UINT64)totalframes * 1000000 / fps_times_1million / 60 / 60),
- (UINT32)(((UINT64)totalframes * 1000000 / fps_times_1million / 60) % 60),
- (UINT32)(((UINT64)totalframes * 1000000 / fps_times_1million) % 60));
-
- /* build up the movie info */
- info.video_format = FORMAT_YUY2;
- info.video_timescale = fps_times_1million;
- info.video_sampletime = 1000000;
- info.video_width = width;
- info.video_height = height;
- info.video_depth = 16;
- info.audio_format = 0;
- info.audio_timescale = rate;
- info.audio_sampletime = 1;
- info.audio_channels = channels;
- info.audio_samplebits = 16;
- info.audio_samplerate = rate;
- /* create the output file */
- avierr = avi_create(outputfile, &info, &avi);
- if (avierr != AVIERR_NONE)
- {
- fprintf(stderr, "Error opening output file '%s': %s\n", outputfile, avi_error_string(avierr));
- err = CHDERR_CANT_CREATE_FILE;
- goto cleanup;
- }
-
- /* loop over hunks, reading and writing */
- for (framenum = 0; framenum < numframes; framenum++)
- {
- /* progress */
- progress(framenum == 0, "Extracting hunk %d/%d... \r", framenum, numframes);
-
- /* set up the fake bitmap for this frame */
- if (!interlaced)
- avconfig.video->clone_existing(*fullbitmap);
- else
- avconfig.video = new(avconfig.video) bitmap_t(&fullbitmap->pix16(framenum % 2), fullbitmap->width(), fullbitmap->height() / 2, fullbitmap->rowpixels() * 2, fullbitmap->format());
-
- /* configure the decompressor for this frame */
- chd_codec_config(chd, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
-
- /* read the hunk into the buffers */
- err = chd_read(chd, firstframe + framenum, NULL);
- if (err != CHDERR_NONE)
+ /* print some of it */
+ printf("Use frames: %d-%d\n", firstframe, firstframe + numframes - 1);
+ printf("Frame rate: %d.%06d\n", fps_times_1million / 1000000, fps_times_1million % 1000000);
+ printf("Frame size: %d x %d %s\n", width, height, interlaced ? "interlaced" : "non-interlaced");
+ printf("Audio: %d channels at %d Hz\n", channels, rate);
+ printf("Total frames: %d (%02d:%02d:%02d)\n", totalframes,
+ (UINT32)((UINT64)totalframes * 1000000 / fps_times_1million / 60 / 60),
+ (UINT32)(((UINT64)totalframes * 1000000 / fps_times_1million / 60) % 60),
+ (UINT32)(((UINT64)totalframes * 1000000 / fps_times_1million) % 60));
+
+ /* build up the movie info */
+ info.video_format = FORMAT_YUY2;
+ info.video_timescale = fps_times_1million;
+ info.video_sampletime = 1000000;
+ info.video_width = width;
+ info.video_height = height;
+ info.video_depth = 16;
+ info.audio_format = 0;
+ info.audio_timescale = rate;
+ info.audio_sampletime = 1;
+ info.audio_channels = channels;
+ info.audio_samplebits = 16;
+ info.audio_samplerate = rate;
+
+ /* create the output file */
+ avierr = avi_create(outputfile, &info, &avi);
+ if (avierr != AVIERR_NONE)
{
- fprintf(stderr, "Error reading hunk %d from CHD file: %s\n", firstframe + framenum, chd_error_string(err));
+ fprintf(stderr, "Error opening output file '%s': %s\n", outputfile, avi_error_string(avierr));
+ err = CHDERR_CANT_CREATE_FILE;
goto cleanup;
}
- /* write audio */
- for (chnum = 0; chnum < channels; chnum++)
+ /* loop over hunks, reading and writing */
+ for (framenum = 0; framenum < numframes; framenum++)
{
- avierr = avi_append_sound_samples(avi, chnum, avconfig.audio[chnum], numsamples, 0);
- if (avierr != AVIERR_NONE)
+ /* progress */
+ progress(framenum == 0, "Extracting hunk %d/%d... \r", framenum, numframes);
+
+ /* set up the fake bitmap for this frame */
+ if (!interlaced)
+ avconfig.video.wrap(fullbitmap, fullbitmap.cliprect());
+ else
+ avconfig.video.wrap(&fullbitmap.pix16(framenum % 2), fullbitmap.width(), fullbitmap.height() / 2, fullbitmap.rowpixels() * 2);
+
+ /* configure the decompressor for this frame */
+ chd_codec_config(chd, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
+
+ /* read the hunk into the buffers */
+ err = chd_read(chd, firstframe + framenum, NULL);
+ if (err != CHDERR_NONE)
{
- fprintf(stderr, "Error writing samples for hunk %d to AVI file: %s\n", firstframe + framenum, avi_error_string(avierr));
+ fprintf(stderr, "Error reading hunk %d from CHD file: %s\n", firstframe + framenum, chd_error_string(err));
goto cleanup;
}
- }
- /* write video */
- if (!interlaced || (firstframe + framenum) % 2 == 1)
- {
- avierr = avi_append_video_frame_yuy16(avi, *fullbitmap);
- if (avierr != AVIERR_NONE)
+ /* write audio */
+ for (chnum = 0; chnum < channels; chnum++)
{
- fprintf(stderr, "Error writing video for hunk %d to AVI file: %s\n", firstframe + framenum, avi_error_string(avierr));
- goto cleanup;
+ avierr = avi_append_sound_samples(avi, chnum, avconfig.audio[chnum], numsamples, 0);
+ if (avierr != AVIERR_NONE)
+ {
+ fprintf(stderr, "Error writing samples for hunk %d to AVI file: %s\n", firstframe + framenum, avi_error_string(avierr));
+ goto cleanup;
+ }
+ }
+
+ /* write video */
+ if (!interlaced || (firstframe + framenum) % 2 == 1)
+ {
+ avierr = avi_append_video_frame(avi, fullbitmap);
+ if (avierr != AVIERR_NONE)
+ {
+ fprintf(stderr, "Error writing video for hunk %d to AVI file: %s\n", firstframe + framenum, avi_error_string(avierr));
+ goto cleanup;
+ }
}
}
+ progress(TRUE, "Extraction complete! \n");
}
- progress(TRUE, "Extraction complete! \n");
cleanup:
/* clean up our mess */
@@ -1982,7 +1969,6 @@ cleanup:
for (chnum = 0; chnum < ARRAY_LENGTH(avconfig.audio); chnum++)
if (avconfig.audio[chnum] != NULL)
free(avconfig.audio[chnum]);
- delete fullbitmap;
if (chd != NULL)
chd_close(chd);
if (err != CHDERR_NONE)
@@ -2159,13 +2145,12 @@ cleanup:
static int do_fixavdata(int argc, char *argv[], int param)
{
int fps, fpsfrac, width, height, interlaced, channels, rate;
- av_codec_decompress_config avconfig = { 0 };
- bitmap_t *fullbitmap = NULL;
+ av_codec_decompress_config avconfig;
const char *inputfile;
UINT8 *vbidata = NULL;
int writeable = FALSE;
chd_file *chd = NULL;
- bitmap_t fakebitmap;
+ bitmap_yuy16 fakebitmap;
char metadata[256];
chd_header header;
UINT32 actlength;
@@ -2218,158 +2203,153 @@ static int do_fixavdata(int argc, char *argv[], int param)
}
/* allocate a video buffer */
- fullbitmap = new(std::nothrow) bitmap_t(width, height, BITMAP_FORMAT_YUY16);
- if (fullbitmap == NULL)
- {
- fprintf(stderr, "Out of memory allocating temporary bitmap\n");
- err = CHDERR_OUT_OF_MEMORY;
- goto cleanup;
- }
- avconfig.video = &fakebitmap;
-
- /* allocate memory for VBI data */
- vbidata = (UINT8 *)malloc(header.totalhunks * VBI_PACKED_BYTES);
- if (vbidata == NULL)
{
- fprintf(stderr, "Out of memory allocating VBI data\n");
- err = CHDERR_OUT_OF_MEMORY;
- goto cleanup;
- }
-
- /* read the metadata */
- err = chd_get_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES, &actlength, NULL, NULL);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error getting VBI metadata: %s\n", chd_error_string(err));
- memset(vbidata, 0, header.totalhunks * VBI_PACKED_BYTES);
- fixes++;
- }
- if (actlength != header.totalhunks * VBI_PACKED_BYTES)
- {
- fprintf(stderr, "VBI metadata incorrect size\n");
- memset(vbidata, 0, header.totalhunks * VBI_PACKED_BYTES);
- fixes++;
- }
-
- /* loop over hunks, reading */
- for (framenum = 0; framenum < header.totalhunks; framenum++)
- {
- vbi_metadata origvbi;
- vbi_metadata vbi;
- UINT32 vbiframe;
-
- /* progress */
- progress(framenum == 0, "Processing hunk %d/%d... \r", framenum, header.totalhunks);
-
- /* set up the fake bitmap for this frame */
- avconfig.video->clone_existing(*fullbitmap);
+ bitmap_yuy16 fullbitmap(width, height);
+ avconfig.video.wrap(fullbitmap, fullbitmap.cliprect());
- /* configure the decompressor for this frame */
- chd_codec_config(chd, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
+ /* allocate memory for VBI data */
+ vbidata = (UINT8 *)malloc(header.totalhunks * VBI_PACKED_BYTES);
+ if (vbidata == NULL)
+ {
+ fprintf(stderr, "Out of memory allocating VBI data\n");
+ err = CHDERR_OUT_OF_MEMORY;
+ goto cleanup;
+ }
- /* read the hunk into the buffers */
- err = chd_read(chd, framenum, NULL);
+ /* read the metadata */
+ err = chd_get_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES, &actlength, NULL, NULL);
if (err != CHDERR_NONE)
{
- fprintf(stderr, "Error reading hunk %d from CHD file: %s\n", framenum, chd_error_string(err));
- goto cleanup;
+ fprintf(stderr, "Error getting VBI metadata: %s\n", chd_error_string(err));
+ memset(vbidata, 0, header.totalhunks * VBI_PACKED_BYTES);
+ fixes++;
+ }
+ if (actlength != header.totalhunks * VBI_PACKED_BYTES)
+ {
+ fprintf(stderr, "VBI metadata incorrect size\n");
+ memset(vbidata, 0, header.totalhunks * VBI_PACKED_BYTES);
+ fixes++;
}
- /* unpack the current data for this frame */
- vbi_metadata_unpack(&origvbi, &vbiframe, &vbidata[framenum * VBI_PACKED_BYTES]);
+ /* loop over hunks, reading */
+ for (framenum = 0; framenum < header.totalhunks; framenum++)
+ {
+ vbi_metadata origvbi;
+ vbi_metadata vbi;
+ UINT32 vbiframe;
- /* parse the video data */
- vbi_parse_all(&avconfig.video->pix16(0), avconfig.video->rowpixels(), avconfig.video->width(), 8, &vbi);
+ /* progress */
+ progress(framenum == 0, "Processing hunk %d/%d... \r", framenum, header.totalhunks);
- /* verify the data */
- if (vbiframe != 0 || origvbi.white != 0 || origvbi.line16 != 0 || origvbi.line17 != 0 || origvbi.line18 != 0 || origvbi.line1718 != 0)
- {
- int errors = 0;
+ /* set up the fake bitmap for this frame */
+ avconfig.video.wrap(fullbitmap, fullbitmap.cliprect());
- if (vbiframe != framenum)
- {
- fprintf(stderr, "%d:Frame mismatch in VBI data (%d, should be %d)\n", framenum, vbiframe, framenum);
- errors++;
- }
- if (vbi.white != origvbi.white)
- {
- fprintf(stderr, "%d:White flag mismatch in VBI data (%d, should be %d)\n", framenum, origvbi.white, vbi.white);
- errors++;
- }
- if (vbi.line16 != origvbi.line16)
- {
- fprintf(stderr, "%d:Line 16 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line16, vbi.line16);
- errors++;
- }
- if (vbi.line17 != origvbi.line17)
- {
- fprintf(stderr, "%d:Line 17 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line17, vbi.line17);
- errors++;
- }
- if (vbi.line18 != origvbi.line18)
+ /* configure the decompressor for this frame */
+ chd_codec_config(chd, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
+
+ /* read the hunk into the buffers */
+ err = chd_read(chd, framenum, NULL);
+ if (err != CHDERR_NONE)
{
- fprintf(stderr, "%d:Line 18 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line18, vbi.line18);
- errors++;
+ fprintf(stderr, "Error reading hunk %d from CHD file: %s\n", framenum, chd_error_string(err));
+ goto cleanup;
}
- if (vbi.line1718 != origvbi.line1718)
+
+ /* unpack the current data for this frame */
+ vbi_metadata_unpack(&origvbi, &vbiframe, &vbidata[framenum * VBI_PACKED_BYTES]);
+
+ /* parse the video data */
+ vbi_parse_all(&avconfig.video.pix16(0), avconfig.video.rowpixels(), avconfig.video.width(), 8, &vbi);
+
+ /* verify the data */
+ if (vbiframe != 0 || origvbi.white != 0 || origvbi.line16 != 0 || origvbi.line17 != 0 || origvbi.line18 != 0 || origvbi.line1718 != 0)
{
- fprintf(stderr, "%d:Line 17/18 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line1718, vbi.line1718);
- errors++;
+ int errors = 0;
+
+ if (vbiframe != framenum)
+ {
+ fprintf(stderr, "%d:Frame mismatch in VBI data (%d, should be %d)\n", framenum, vbiframe, framenum);
+ errors++;
+ }
+ if (vbi.white != origvbi.white)
+ {
+ fprintf(stderr, "%d:White flag mismatch in VBI data (%d, should be %d)\n", framenum, origvbi.white, vbi.white);
+ errors++;
+ }
+ if (vbi.line16 != origvbi.line16)
+ {
+ fprintf(stderr, "%d:Line 16 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line16, vbi.line16);
+ errors++;
+ }
+ if (vbi.line17 != origvbi.line17)
+ {
+ fprintf(stderr, "%d:Line 17 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line17, vbi.line17);
+ errors++;
+ }
+ if (vbi.line18 != origvbi.line18)
+ {
+ fprintf(stderr, "%d:Line 18 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line18, vbi.line18);
+ errors++;
+ }
+ if (vbi.line1718 != origvbi.line1718)
+ {
+ fprintf(stderr, "%d:Line 17/18 mismatch in VBI data (%06X, should be %06X)\n", framenum, origvbi.line1718, vbi.line1718);
+ errors++;
+ }
+ fixes += errors;
+ fixframes += (errors != 0);
}
- fixes += errors;
- fixframes += (errors != 0);
+
+ /* pack the new data */
+ vbi_metadata_pack(&vbidata[framenum * VBI_PACKED_BYTES], framenum, &vbi);
}
+ progress(TRUE, "Processing complete! \n");
- /* pack the new data */
- vbi_metadata_pack(&vbidata[framenum * VBI_PACKED_BYTES], framenum, &vbi);
- }
- progress(TRUE, "Processing complete! \n");
+ /* print final results */
+ if (fixes == 0)
+ printf("\nNo fixes required\n");
+ else
+ printf("\nFound %d errors on %d frames\n", fixes, fixframes);
- /* print final results */
- if (fixes == 0)
- printf("\nNo fixes required\n");
- else
- printf("\nFound %d errors on %d frames\n", fixes, fixframes);
+ /* close the drive */
+ chd_close(chd);
+ chd = NULL;
- /* close the drive */
- chd_close(chd);
- chd = NULL;
+ /* apply fixes */
+ if (fixes > 0)
+ {
+ /* mark the CHD writeable */
+ header.flags |= CHDFLAGS_IS_WRITEABLE;
+ err = chd_set_header(inputfile, &header);
+ if (err != CHDERR_NONE)
+ fprintf(stderr, "Error writing new header: %s\n", chd_error_string(err));
+ header.flags &= ~CHDFLAGS_IS_WRITEABLE;
+ writeable = TRUE;
- /* apply fixes */
- if (fixes > 0)
- {
- /* mark the CHD writeable */
- header.flags |= CHDFLAGS_IS_WRITEABLE;
- err = chd_set_header(inputfile, &header);
- if (err != CHDERR_NONE)
- fprintf(stderr, "Error writing new header: %s\n", chd_error_string(err));
- header.flags &= ~CHDFLAGS_IS_WRITEABLE;
- writeable = TRUE;
+ /* open the file */
+ err = chd_open(inputfile, CHD_OPEN_READWRITE, NULL, &chd);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error opening CHD file '%s': %s\n", inputfile, chd_error_string(err));
+ goto cleanup;
+ }
- /* open the file */
- err = chd_open(inputfile, CHD_OPEN_READWRITE, NULL, &chd);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error opening CHD file '%s': %s\n", inputfile, chd_error_string(err));
- goto cleanup;
- }
+ /* write new metadata */
+ err = chd_set_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES, CHD_MDFLAGS_CHECKSUM);
+ if (err != CHDERR_NONE)
+ {
+ fprintf(stderr, "Error adding AVLD metadata: %s\n", chd_error_string(err));
+ goto cleanup;
+ }
+ else
+ printf("Updated metadata written successfully\n");
- /* write new metadata */
- err = chd_set_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES, CHD_MDFLAGS_CHECKSUM);
- if (err != CHDERR_NONE)
- {
- fprintf(stderr, "Error adding AVLD metadata: %s\n", chd_error_string(err));
- goto cleanup;
+ /* allow cleanup code to close the file and revert the header */
}
- else
- printf("Updated metadata written successfully\n");
-
- /* allow cleanup code to close the file and revert the header */
}
cleanup:
/* clean up our mess */
- delete fullbitmap;
if (vbidata != NULL)
free(vbidata);
if (chd != NULL)
diff --git a/src/tools/ldresample.c b/src/tools/ldresample.c
index 58f019561d7..10e04e1ca83 100644
--- a/src/tools/ldresample.c
+++ b/src/tools/ldresample.c
@@ -82,7 +82,7 @@ struct _movie_info
int samplerate;
int channels;
int interlaced;
- bitmap_t * bitmap;
+ bitmap_yuy16 *bitmap;
INT16 * lsound;
INT16 * rsound;
UINT32 samples;
@@ -151,7 +151,7 @@ INLINE UINT32 sample_number_to_field(const movie_info *info, UINT32 samplenum, U
static int chd_allocate_buffers(movie_info *info)
{
/* allocate a bitmap */
- info->bitmap = new(std::nothrow) bitmap_t(info->width, info->height, BITMAP_FORMAT_YUY16);
+ info->bitmap = new(std::nothrow) bitmap_yuy16(info->width, info->height);
if (info->bitmap == NULL)
{
fprintf(stderr, "Out of memory creating %dx%d bitmap\n", info->width, info->height);
@@ -177,8 +177,7 @@ static int chd_allocate_buffers(movie_info *info)
static void chd_free_buffers(movie_info *info)
{
- if (info->bitmap != NULL)
- free(info->bitmap);
+ delete info->bitmap;
if (info->lsound != NULL)
free(info->lsound);
if (info->rsound != NULL)
@@ -294,11 +293,11 @@ static chd_file *create_chd(const char *filename, chd_file *source, const movie_
static int read_chd(chd_file *file, UINT32 field, movie_info *info, UINT32 soundoffs)
{
- av_codec_decompress_config avconfig = { 0 };
+ av_codec_decompress_config avconfig;
chd_error chderr;
/* configure the codec */
- avconfig.video = info->bitmap;
+ avconfig.video.wrap(*info->bitmap, info->bitmap->cliprect());
avconfig.maxsamples = 48000;
avconfig.actsamples = &info->samples;
avconfig.audio[0] = info->lsound + soundoffs;
@@ -322,11 +321,11 @@ static int read_chd(chd_file *file, UINT32 field, movie_info *info, UINT32 sound
static int write_chd(chd_file *file, UINT32 field, movie_info *info)
{
- av_codec_compress_config avconfig = { 0 };
+ av_codec_compress_config avconfig;
chd_error chderr;
/* configure the codec */
- avconfig.video = info->bitmap;
+ avconfig.video.wrap(*info->bitmap, info->bitmap->cliprect());
avconfig.channels = 2;
avconfig.samples = info->samples;
avconfig.audio[0] = info->lsound;
diff --git a/src/tools/ldverify.c b/src/tools/ldverify.c
index 081e8a8a1a6..45fe9f4dbf5 100644
--- a/src/tools/ldverify.c
+++ b/src/tools/ldverify.c
@@ -159,7 +159,7 @@ static void *open_avi(const char *filename, movie_info *info)
read_avi - read a frame from an AVI file
-------------------------------------------------*/
-static int read_avi(void *file, int frame, bitmap_t &bitmap, INT16 *lsound, INT16 *rsound, int *samples)
+static int read_avi(void *file, int frame, bitmap_yuy16 &bitmap, INT16 *lsound, INT16 *rsound, int *samples)
{
const avi_movie_info *aviinfo = avi_get_movie_info((avi_file *)file);
UINT32 firstsample = ((UINT64)aviinfo->audio_samplerate * (UINT64)frame * (UINT64)aviinfo->video_sampletime + aviinfo->video_timescale - 1) / (UINT64)aviinfo->video_timescale;
@@ -167,7 +167,7 @@ static int read_avi(void *file, int frame, bitmap_t &bitmap, INT16 *lsound, INT1
avi_error avierr;
/* read the frame */
- avierr = avi_read_video_frame_yuy16((avi_file *)file, frame, bitmap);
+ avierr = avi_read_video_frame((avi_file *)file, frame, bitmap);
if (avierr != AVIERR_NONE)
return FALSE;
@@ -258,11 +258,11 @@ static void *open_chd(const char *filename, movie_info *info)
read_chd - read a frame from a CHD file
-------------------------------------------------*/
-static int read_chd(void *file, int frame, bitmap_t &bitmap, INT16 *lsound, INT16 *rsound, int *samples)
+static int read_chd(void *file, int frame, bitmap_yuy16 &bitmap, INT16 *lsound, INT16 *rsound, int *samples)
{
- av_codec_decompress_config avconfig = { 0 };
+ av_codec_decompress_config avconfig;
int interlace_factor = chdinterlaced ? 2 : 1;
- bitmap_t fakebitmap;
+ bitmap_yuy16 fakebitmap;
UINT32 numsamples;
chd_error chderr;
int fieldnum;
@@ -272,7 +272,7 @@ static int read_chd(void *file, int frame, bitmap_t &bitmap, INT16 *lsound, INT1
for (fieldnum = 0; fieldnum < interlace_factor; fieldnum++)
{
/* make a fake bitmap for this field */
- avconfig.video = new(&fakebitmap) bitmap_t(&bitmap.pix16(fieldnum), bitmap.width(), bitmap.height() / interlace_factor, bitmap.rowpixels() * interlace_factor, bitmap.format());
+ avconfig.video.wrap(&bitmap.pix16(fieldnum), bitmap.width(), bitmap.height() / interlace_factor, bitmap.rowpixels() * interlace_factor);
/* configure the codec */
avconfig.maxsamples = 48000;
@@ -342,7 +342,7 @@ static void init_video(video_info *video)
verify_video - verify video frame
-------------------------------------------------*/
-static void verify_video(video_info *video, int frame, bitmap_t &bitmap)
+static void verify_video(video_info *video, int frame, bitmap_yuy16 &bitmap)
{
const int fields_per_frame = 2;
int fieldnum;
@@ -613,7 +613,7 @@ static void verify_video(video_info *video, int frame, bitmap_t &bitmap)
verify_video_final - final verification
-------------------------------------------------*/
-static void verify_video_final(video_info *video, int frame, bitmap_t &bitmap)
+static void verify_video_final(video_info *video, int frame, bitmap_yuy16 &bitmap)
{
int fields_per_frame = (bitmap.height() >= 288) ? 2 : 1;
int field = frame * fields_per_frame;
@@ -741,108 +741,108 @@ static int usage(void)
int main(int argc, char *argv[])
{
- movie_info info = { 0 };
- INT16 *lsound, *rsound;
- const char *srcfile;
- bitmap_t *bitmap;
- int srcfilelen;
- int samples = 0;
- void *file;
- int isavi;
- int frame;
- audio_info audio;
- video_info video;
-
- /* init globals */
- init_audio(&audio);
- init_video(&video);
-
- /* verify arguments */
- if (argc < 2)
- return usage();
- srcfile = argv[1];
-
- /* check extension of file */
- srcfilelen = strlen(srcfile);
- if (srcfilelen < 4)
- return usage();
- if (tolower((UINT8)srcfile[srcfilelen-3]) == 'a' && tolower((UINT8)srcfile[srcfilelen-2]) == 'v' && tolower((UINT8)srcfile[srcfilelen-1]) == 'i')
- isavi = TRUE;
- else if (tolower((UINT8)srcfile[srcfilelen-3]) == 'c' && tolower((UINT8)srcfile[srcfilelen-2]) == 'h' && tolower((UINT8)srcfile[srcfilelen-1]) == 'd')
- isavi = FALSE;
- else
- return usage();
-
- /* open the file */
- printf("Processing file: %s\n", srcfile);
- file = isavi ? open_avi(srcfile, &info) : open_chd(srcfile, &info);
- if (file == NULL)
+ try
{
- fprintf(stderr, "Unable to open file '%s'\n", srcfile);
- return 1;
- }
+ movie_info info = { 0 };
+ INT16 *lsound, *rsound;
+ const char *srcfile;
+ bitmap_yuy16 bitmap;
+ int srcfilelen;
+ int samples = 0;
+ void *file;
+ int isavi;
+ int frame;
+ audio_info audio;
+ video_info video;
+
+ /* init globals */
+ init_audio(&audio);
+ init_video(&video);
+
+ /* verify arguments */
+ if (argc < 2)
+ return usage();
+ srcfile = argv[1];
+
+ /* check extension of file */
+ srcfilelen = strlen(srcfile);
+ if (srcfilelen < 4)
+ return usage();
+ if (tolower((UINT8)srcfile[srcfilelen-3]) == 'a' && tolower((UINT8)srcfile[srcfilelen-2]) == 'v' && tolower((UINT8)srcfile[srcfilelen-1]) == 'i')
+ isavi = TRUE;
+ else if (tolower((UINT8)srcfile[srcfilelen-3]) == 'c' && tolower((UINT8)srcfile[srcfilelen-2]) == 'h' && tolower((UINT8)srcfile[srcfilelen-1]) == 'd')
+ isavi = FALSE;
+ else
+ return usage();
+
+ /* open the file */
+ printf("Processing file: %s\n", srcfile);
+ file = isavi ? open_avi(srcfile, &info) : open_chd(srcfile, &info);
+ if (file == NULL)
+ {
+ fprintf(stderr, "Unable to open file '%s'\n", srcfile);
+ return 1;
+ }
- /* comment on the video dimensions */
- printf("Video dimensions: %dx%d\n", info.width, info.height);
- if (info.width != 720)
- printf("WARNING: Unexpected video width (should be 720)\n");
- if (info.height != 524)
- printf("WARNING: Unexpected video height (should be 262 or 524)\n");
-
- /* comment on the video frame rate */
- printf("Video frame rate: %.2fHz\n", info.framerate);
- if ((int)(info.framerate * 100.0 + 0.5) != 2997)
- printf("WARNING: Unexpected frame rate (should be 29.97Hz)\n");
-
- /* comment on the sample rate */
- printf("Sample rate: %dHz\n", info.samplerate);
- if (info.samplerate != 48000)
- printf("WARNING: Unexpected sampele rate (should be 48000Hz)\n");
-
- /* allocate a bitmap */
- bitmap = new(std::nothrow) bitmap_t(info.width, info.height, BITMAP_FORMAT_YUY16);
- if (bitmap == NULL)
- {
- isavi ? close_avi(file) : close_chd(file);
- fprintf(stderr, "Out of memory creating %dx%d bitmap\n", info.width, info.height);
- return 1;
- }
+ /* comment on the video dimensions */
+ printf("Video dimensions: %dx%d\n", info.width, info.height);
+ if (info.width != 720)
+ printf("WARNING: Unexpected video width (should be 720)\n");
+ if (info.height != 524)
+ printf("WARNING: Unexpected video height (should be 262 or 524)\n");
+
+ /* comment on the video frame rate */
+ printf("Video frame rate: %.2fHz\n", info.framerate);
+ if ((int)(info.framerate * 100.0 + 0.5) != 2997)
+ printf("WARNING: Unexpected frame rate (should be 29.97Hz)\n");
+
+ /* comment on the sample rate */
+ printf("Sample rate: %dHz\n", info.samplerate);
+ if (info.samplerate != 48000)
+ printf("WARNING: Unexpected sampele rate (should be 48000Hz)\n");
+
+ /* allocate a bitmap */
+ bitmap.allocate(info.width, info.height);
+
+ /* allocate sound buffers */
+ lsound = (INT16 *)malloc(info.samplerate * sizeof(*lsound));
+ rsound = (INT16 *)malloc(info.samplerate * sizeof(*rsound));
+ if (lsound == NULL || rsound == NULL)
+ {
+ isavi ? close_avi(file) : close_chd(file);
+ if (rsound != NULL)
+ free(rsound);
+ if (lsound != NULL)
+ free(lsound);
+ fprintf(stderr, "Out of memory allocating sound buffers of %d bytes\n", (INT32)(info.samplerate * sizeof(*rsound)));
+ return 1;
+ }
- /* allocate sound buffers */
- lsound = (INT16 *)malloc(info.samplerate * sizeof(*lsound));
- rsound = (INT16 *)malloc(info.samplerate * sizeof(*rsound));
- if (lsound == NULL || rsound == NULL)
- {
+ /* loop over frames */
+ frame = 0;
+ while (isavi ? read_avi(file, frame, bitmap, lsound, rsound, &samples) : read_chd(file, frame, bitmap, lsound, rsound, &samples))
+ {
+ verify_video(&video, frame, bitmap);
+ verify_audio(&audio, lsound, rsound, samples);
+ frame++;
+ }
+
+ /* close the files */
isavi ? close_avi(file) : close_chd(file);
- delete bitmap;
- if (rsound != NULL)
- free(rsound);
- if (lsound != NULL)
- free(lsound);
- fprintf(stderr, "Out of memory allocating sound buffers of %d bytes\n", (INT32)(info.samplerate * sizeof(*rsound)));
- return 1;
- }
- /* loop over frames */
- frame = 0;
- while (isavi ? read_avi(file, frame, *bitmap, lsound, rsound, &samples) : read_chd(file, frame, *bitmap, lsound, rsound, &samples))
+ /* final output */
+ verify_video_final(&video, frame, bitmap);
+ verify_audio_final(&audio);
+
+ /* free memory */
+ free(lsound);
+ free(rsound);
+ }
+ catch (std::bad_alloc &)
{
- verify_video(&video, frame, *bitmap);
- verify_audio(&audio, lsound, rsound, samples);
- frame++;
+ fprintf(stderr, "Out of memory allocating memory\n");
+ return 1;
}
- /* close the files */
- isavi ? close_avi(file) : close_chd(file);
-
- /* final output */
- verify_video_final(&video, frame, *bitmap);
- verify_audio_final(&audio);
-
- /* free memory */
- delete bitmap;
- free(lsound);
- free(rsound);
-
return 0;
}
diff --git a/src/tools/regrep.c b/src/tools/regrep.c
index f0995d47c88..99be3a84f88 100644
--- a/src/tools/regrep.c
+++ b/src/tools/regrep.c
@@ -767,15 +767,13 @@ static void output_report(astring &dirname, astring &tempheader, astring &tempfo
static int compare_screenshots(summary_file *curfile)
{
- bitmap_t *bitmaps[MAX_COMPARES] = { NULL };
+ bitmap_argb32 bitmaps[MAX_COMPARES];
int unique[MAX_COMPARES];
int numunique = 0;
int listnum;
/* iterate over all files and load their bitmaps */
for (listnum = 0; listnum < list_count; listnum++)
- {
- bitmaps[listnum] = NULL;
if (curfile->status[listnum] == STATUS_SUCCESS)
{
astring fullname;
@@ -801,42 +799,39 @@ static int compare_screenshots(summary_file *curfile)
/* if that worked, load the file */
if (filerr == FILERR_NONE)
{
- png_read_bitmap(file, &bitmaps[listnum]);
+ png_read_bitmap(file, bitmaps[listnum]);
core_fclose(file);
}
}
- }
/* now find all the different bitmap types */
for (listnum = 0; listnum < list_count; listnum++)
{
curfile->matchbitmap[listnum] = 0xff;
- if (bitmaps[listnum] != NULL)
+ if (bitmaps[listnum].valid())
{
- bitmap_t *this_bitmap = bitmaps[listnum];
- int compnum;
+ bitmap_argb32 &this_bitmap = bitmaps[listnum];
/* compare against all unique bitmaps */
+ int compnum;
for (compnum = 0; compnum < numunique; compnum++)
{
- bitmap_t *base_bitmap = bitmaps[unique[compnum]];
- int bitmaps_differ;
- int x, y;
-
/* if the sizes are different, we differ; otherwise start off assuming we are the same */
- bitmaps_differ = (this_bitmap->width() != base_bitmap->width() || this_bitmap->height() != base_bitmap->height());
+ bitmap_argb32 &base_bitmap = bitmaps[unique[compnum]];
+ bool bitmaps_differ = (this_bitmap.width() != base_bitmap.width() || this_bitmap.height() != base_bitmap.height());
/* compare scanline by scanline */
- for (y = 0; y < this_bitmap->height() && !bitmaps_differ; y++)
+ for (int y = 0; y < this_bitmap.height() && !bitmaps_differ; y++)
{
- UINT32 *base = &base_bitmap->pix32(y);
- UINT32 *curr = &this_bitmap->pix32(y);
+ UINT32 *base = &base_bitmap.pix32(y);
+ UINT32 *curr = &this_bitmap.pix32(y);
/* scan the scanline */
- for (x = 0; x < this_bitmap->width(); x++)
+ int x;
+ for (x = 0; x < this_bitmap.width(); x++)
if (*base++ != *curr++)
break;
- bitmaps_differ = (x != this_bitmap->width());
+ bitmaps_differ = (x != this_bitmap.width());
}
/* if we matched, remember which listnum index we matched, and stop */
@@ -861,10 +856,6 @@ static int compare_screenshots(summary_file *curfile)
}
}
- /* free the bitmaps */
- for (listnum = 0; listnum < list_count; listnum++)
- delete bitmaps[listnum];
-
/* if all screenshots matched, we're good */
if (numunique == 1)
return BUCKET_GOOD;
@@ -886,11 +877,11 @@ static int compare_screenshots(summary_file *curfile)
static int generate_png_diff(const summary_file *curfile, astring &destdir, const char *destname)
{
- bitmap_t *bitmaps[MAX_COMPARES] = { NULL };
+ bitmap_argb32 bitmaps[MAX_COMPARES];
astring srcimgname;
astring dstfilename;
astring tempname;
- bitmap_t *finalbitmap = NULL;
+ bitmap_argb32 finalbitmap;
int width, height, maxwidth;
int bitmapcount = 0;
int listnum, bmnum;
@@ -916,7 +907,7 @@ static int generate_png_diff(const summary_file *curfile, astring &destdir, cons
goto error;
/* load the source image */
- pngerr = png_read_bitmap(file, &bitmaps[bitmapcount++]);
+ pngerr = png_read_bitmap(file, bitmaps[bitmapcount++]);
core_fclose(file);
if (pngerr != PNGERR_NONE)
goto error;
@@ -928,67 +919,65 @@ static int generate_png_diff(const summary_file *curfile, astring &destdir, cons
/* determine the size of the final bitmap */
height = width = 0;
- maxwidth = bitmaps[0]->width();
+ maxwidth = bitmaps[0].width();
for (bmnum = 1; bmnum < bitmapcount; bmnum++)
{
int curwidth;
/* determine the maximal width */
- maxwidth = MAX(maxwidth, bitmaps[bmnum]->width());
- curwidth = bitmaps[0]->width() + BITMAP_SPACE + maxwidth + BITMAP_SPACE + maxwidth;
+ maxwidth = MAX(maxwidth, bitmaps[bmnum].width());
+ curwidth = bitmaps[0].width() + BITMAP_SPACE + maxwidth + BITMAP_SPACE + maxwidth;
width = MAX(width, curwidth);
/* add to the height */
- height += MAX(bitmaps[0]->height(), bitmaps[bmnum]->height());
+ height += MAX(bitmaps[0].height(), bitmaps[bmnum].height());
if (bmnum != 1)
height += BITMAP_SPACE;
}
/* allocate the final bitmap */
- finalbitmap = new(std::nothrow) bitmap_t(width, height, BITMAP_FORMAT_ARGB32);
- if (finalbitmap == NULL)
- goto error;
+ finalbitmap.allocate(width, height);
/* now copy and compare each set of bitmaps */
starty = 0;
for (bmnum = 1; bmnum < bitmapcount; bmnum++)
{
- bitmap_t *bitmap1 = bitmaps[0];
- bitmap_t *bitmap2 = bitmaps[bmnum];
- int curheight = MAX(bitmap1->height(), bitmap2->height());
+ bitmap_argb32 &bitmap1 = bitmaps[0];
+ bitmap_argb32 &bitmap2 = bitmaps[bmnum];
+ int curheight = MAX(bitmap1.height(), bitmap2.height());
int x, y;
/* iterate over rows in these bitmaps */
for (y = 0; y < curheight; y++)
{
- UINT32 *src1 = (y < bitmap1->height()) ? &bitmap1->pix32(y) : NULL;
- UINT32 *src2 = (y < bitmap2->height()) ? &bitmap2->pix32(y) : NULL;
- UINT32 *dst1 = &finalbitmap->pix32(starty + y, 0);
- UINT32 *dst2 = &finalbitmap->pix32(starty + y, bitmap1->width() + BITMAP_SPACE);
- UINT32 *dstdiff = &finalbitmap->pix32(starty + y, bitmap1->width() + BITMAP_SPACE + maxwidth + BITMAP_SPACE);
+ UINT32 *src1 = (y < bitmap1.height()) ? &bitmap1.pix32(y) : NULL;
+ UINT32 *src2 = (y < bitmap2.height()) ? &bitmap2.pix32(y) : NULL;
+ UINT32 *dst1 = &finalbitmap.pix32(starty + y, 0);
+ UINT32 *dst2 = &finalbitmap.pix32(starty + y, bitmap1.width() + BITMAP_SPACE);
+ UINT32 *dstdiff = &finalbitmap.pix32(starty + y, bitmap1.width() + BITMAP_SPACE + maxwidth + BITMAP_SPACE);
/* now iterate over columns */
for (x = 0; x < maxwidth; x++)
{
int pix1 = -1, pix2 = -2;
- if (src1 != NULL && x < bitmap1->width())
+ if (src1 != NULL && x < bitmap1.width())
pix1 = dst1[x] = src1[x];
- if (src2 != NULL && x < bitmap2->width())
+ if (src2 != NULL && x < bitmap2.width())
pix2 = dst2[x] = src2[x];
dstdiff[x] = (pix1 != pix2) ? 0xffffffff : 0xff000000;
}
}
/* update the starting Y position */
- starty += BITMAP_SPACE + MAX(bitmap1->height(), bitmap2->height());
+ starty += BITMAP_SPACE + MAX(bitmap1.height(), bitmap2.height());
}
/* write the final PNG */
filerr = core_fopen(dstfilename, OPEN_FLAG_WRITE | OPEN_FLAG_CREATE, &file);
if (filerr != FILERR_NONE)
goto error;
- pngerr = png_write_bitmap(file, NULL, *finalbitmap, 0, NULL);
+ pngerr = png_write_bitmap(file, NULL, finalbitmap, 0, NULL);
core_fclose(file);
if (pngerr != PNGERR_NONE)
goto error;
@@ -997,9 +986,6 @@ static int generate_png_diff(const summary_file *curfile, astring &destdir, cons
error = 0;
error:
- delete finalbitmap;
- for (bmnum = 0; bmnum < bitmapcount; bmnum++)
- delete bitmaps[bmnum];
if (error)
osd_rmfile(dstfilename);
return error;